mirror of
https://github.com/baiqwerdvd/ArknightsUID.git
synced 2025-05-04 11:07:35 +08:00
迁移到独立的 torappu-excel 包
This commit is contained in:
parent
e697284b56
commit
99341bc034
@ -2,8 +2,6 @@ import asyncio
|
||||
import random
|
||||
|
||||
import aiohttp
|
||||
from msgspec import convert
|
||||
|
||||
from gsuid_core.aps import scheduler
|
||||
from gsuid_core.bot import Bot
|
||||
from gsuid_core.logger import logger
|
||||
@ -11,6 +9,7 @@ from gsuid_core.models import Event
|
||||
from gsuid_core.segment import MessageSegment
|
||||
from gsuid_core.subscribe import gs_subscribe
|
||||
from gsuid_core.sv import SV
|
||||
from msgspec import convert
|
||||
|
||||
from ..arknightsuid_config import PREFIX, ArkConfig
|
||||
from .draw_img import get_ann_img
|
||||
@ -50,9 +49,7 @@ async def force_ann_(bot: Bot, ev: Event):
|
||||
@sv_ann.on_command(f"{PREFIX}获取当前Android公告列表")
|
||||
async def get_ann_list_(bot: Bot, ev: Event):
|
||||
async with aiohttp.ClientSession() as session:
|
||||
async with session.get(
|
||||
"https://ak-webview.hypergryph.com/api/game/bulletinList?target=Android"
|
||||
) as response:
|
||||
async with session.get("https://ak-webview.hypergryph.com/api/game/bulletinList?target=Android") as response:
|
||||
data = await response.json()
|
||||
|
||||
data = convert(data.get("data", {}), BulletinTargetData)
|
||||
@ -85,9 +82,7 @@ async def sub_ann_(bot: Bot, ev: Event):
|
||||
await bot.send("成功订阅明日方舟公告!")
|
||||
|
||||
|
||||
@sv_ann_sub.on_fullmatch(
|
||||
(f"{PREFIX}取消订阅公告", f"{PREFIX}取消公告", f"{PREFIX}退订公告")
|
||||
)
|
||||
@sv_ann_sub.on_fullmatch((f"{PREFIX}取消订阅公告", f"{PREFIX}取消公告", f"{PREFIX}退订公告"))
|
||||
async def unsub_ann_(bot: Bot, ev: Event):
|
||||
if ev.group_id is None:
|
||||
return await bot.send("请在群聊中取消订阅")
|
||||
|
@ -2,13 +2,12 @@ import textwrap
|
||||
from typing import Any
|
||||
|
||||
from bs4 import BeautifulSoup, element
|
||||
from PIL import Image, ImageDraw
|
||||
|
||||
from gsuid_core.logger import logger
|
||||
from gsuid_core.utils.fonts.fonts import core_font as cf
|
||||
from gsuid_core.utils.image.convert import convert_img
|
||||
from gsuid_core.utils.image.image_tools import get_div
|
||||
from gsuid_core.utils.image.utils import download_pic_to_image
|
||||
from PIL import Image, ImageDraw
|
||||
|
||||
from .model import BulletinData
|
||||
|
||||
|
@ -3,11 +3,10 @@ from pathlib import Path
|
||||
|
||||
import aiohttp
|
||||
import msgspec
|
||||
from msgspec import convert
|
||||
from msgspec import json as msgjson
|
||||
|
||||
from gsuid_core.data_store import get_res_path
|
||||
from gsuid_core.logger import logger
|
||||
from msgspec import convert
|
||||
from msgspec import json as msgjson
|
||||
|
||||
from .model import (
|
||||
BulletinData,
|
||||
@ -57,19 +56,13 @@ async def check_bulletin_update() -> dict[str, BulletinData]:
|
||||
if cur_meta.get("code") == 0:
|
||||
match target:
|
||||
case "Android":
|
||||
android_data = convert(
|
||||
cur_meta.get("data", {}), BulletinTargetData
|
||||
)
|
||||
android_data = convert(cur_meta.get("data", {}), BulletinTargetData)
|
||||
bulletin_meta.target.Android = android_data
|
||||
case "Bilibili":
|
||||
bilibili_data = convert(
|
||||
cur_meta.get("data", {}), BulletinTargetData
|
||||
)
|
||||
bilibili_data = convert(cur_meta.get("data", {}), BulletinTargetData)
|
||||
bulletin_meta.target.Bilibili = bilibili_data
|
||||
case "IOS":
|
||||
ios_data = convert(
|
||||
cur_meta.get("data", {}), BulletinTargetData
|
||||
)
|
||||
ios_data = convert(cur_meta.get("data", {}), BulletinTargetData)
|
||||
bulletin_meta.target.IOS = ios_data
|
||||
|
||||
assert android_data is not None
|
||||
@ -80,9 +73,7 @@ async def check_bulletin_update() -> dict[str, BulletinData]:
|
||||
|
||||
update_set: set[int] = set()
|
||||
update_list: list[BulletinTargetDataItem] = [
|
||||
x
|
||||
for x in update_list
|
||||
if x.updatedAt not in update_set and not update_set.add(x.updatedAt)
|
||||
x for x in update_list if x.updatedAt not in update_set and not update_set.add(x.updatedAt)
|
||||
]
|
||||
update_list.sort(key=lambda x: x.updatedAt, reverse=True)
|
||||
|
||||
@ -112,12 +103,8 @@ async def check_bulletin_update() -> dict[str, BulletinData]:
|
||||
new_ann[item.cid] = ann
|
||||
logger.info(f"New bulletin found: {item.cid}:{item.title}")
|
||||
|
||||
bulletin_meta.data = dict(
|
||||
sorted(bulletin_meta.data.items(), key=lambda x: int(x[0]))
|
||||
)
|
||||
bulletin_meta.update = dict(
|
||||
sorted(bulletin_meta.update.items(), key=lambda x: x[1].cid, reverse=False)
|
||||
)
|
||||
bulletin_meta.data = dict(sorted(bulletin_meta.data.items(), key=lambda x: int(x[0])))
|
||||
bulletin_meta.update = dict(sorted(bulletin_meta.update.items(), key=lambda x: x[1].cid, reverse=False))
|
||||
|
||||
data = msgjson.decode(msgjson.encode(bulletin_meta))
|
||||
with Path.open(bulletin_path, mode="w", encoding="UTF-8") as file:
|
||||
|
@ -6,7 +6,7 @@ from gsuid_core.logger import logger
|
||||
from gsuid_core.utils.image.convert import convert_img
|
||||
from PIL import Image, ImageDraw
|
||||
|
||||
from ..arknightsuid_resource.constants import CHARACTER_TABLE
|
||||
from ..arknightsuid_resource.constants import EXCEL
|
||||
from ..utils.ark_api import ark_skd_api
|
||||
from ..utils.database.models import ArknightsBind
|
||||
from ..utils.fonts.source_han_sans import (
|
||||
@ -102,9 +102,7 @@ def get_error(img: Image.Image, uid: str, daily_data: int):
|
||||
|
||||
async def draw_ap_img(uid: str) -> Image.Image:
|
||||
# char
|
||||
char_pic = (
|
||||
Image.open(TEXT_PATH / "char_1028_texas2_1b.png").resize((1700, 1700)).convert("RGBA")
|
||||
)
|
||||
char_pic = Image.open(TEXT_PATH / "char_1028_texas2_1b.png").resize((1700, 1700)).convert("RGBA")
|
||||
|
||||
tmp_img = Image.new("RGBA", (based_w, based_h))
|
||||
tmp_img.paste(char_pic, (-250, 50), char_pic)
|
||||
@ -291,7 +289,7 @@ async def draw_ap_img(uid: str) -> Image.Image:
|
||||
# 将remainSecs(剩余秒数) , 转换为几小时几分钟
|
||||
remain_time = seconds2hours_zhcn(remain_secs)
|
||||
|
||||
char_cn_name = CHARACTER_TABLE[training_char].name
|
||||
char_cn_name = EXCEL.CHARATER_TABLE.chars[training_char].name
|
||||
blue_bar_bg1_img = blue_bar_bg1.copy()
|
||||
blue_bar_bg1_draw = ImageDraw.Draw(blue_bar_bg1_img)
|
||||
blue_bar_bg1_draw.text(
|
||||
|
@ -1,5 +1,3 @@
|
||||
from typing import Dict
|
||||
|
||||
from gsuid_core.gss import gss
|
||||
from gsuid_core.logger import logger
|
||||
|
||||
@ -17,8 +15,8 @@ NOTICE = {
|
||||
}
|
||||
|
||||
|
||||
async def get_notice_list() -> Dict[str, Dict[str, Dict]]:
|
||||
msg_dict: Dict[str, Dict[str, Dict]] = {}
|
||||
async def get_notice_list() -> dict[str, dict[str, dict]]:
|
||||
msg_dict: dict[str, dict[str, dict]] = {}
|
||||
for _bot_id in gss.active_bot:
|
||||
user_list = await ArknightsUser.get_all_push_user_list()
|
||||
for user in user_list:
|
||||
@ -42,11 +40,11 @@ async def get_notice_list() -> Dict[str, Dict[str, Dict]]:
|
||||
async def all_check(
|
||||
bot_id: str,
|
||||
raw_data: ArknightsPlayerInfoModel,
|
||||
push_data: Dict,
|
||||
msg_dict: Dict[str, Dict[str, Dict]],
|
||||
push_data: dict,
|
||||
msg_dict: dict[str, dict[str, dict]],
|
||||
user_id: str,
|
||||
uid: str,
|
||||
) -> Dict[str, Dict[str, Dict]]:
|
||||
) -> dict[str, dict[str, dict]]:
|
||||
for mode in NOTICE.keys():
|
||||
# 检查条件
|
||||
if push_data[f"{mode}_is_push"] is True:
|
||||
|
@ -1,10 +1,9 @@
|
||||
from pathlib import Path
|
||||
from typing import Dict
|
||||
|
||||
from gsuid_core.utils.image.convert import convert_img
|
||||
from PIL import Image, ImageDraw
|
||||
|
||||
from ..arknightsuid_resource.constants import SKILL_TABLE
|
||||
from ..arknightsuid_resource.constants import EXCEL
|
||||
from ..utils.ark_api import ark_skd_api
|
||||
from ..utils.fonts.source_han_sans import (
|
||||
sans_font_26,
|
||||
@ -97,9 +96,7 @@ async def get_char_snapshot(uid: str, cur_page: int):
|
||||
avatar_id = status.avatar.id_
|
||||
try:
|
||||
try:
|
||||
avatar_img = Image.open(UI_PLAYER_AVATAR_LIST_PATH / f"{avatar_id}.png").resize(
|
||||
(235, 235)
|
||||
)
|
||||
avatar_img = Image.open(UI_PLAYER_AVATAR_LIST_PATH / f"{avatar_id}.png").resize((235, 235))
|
||||
except FileNotFoundError:
|
||||
avatar_img = Image.open(UI_CHAR_AVATAR_PATH / f"{avatar_id}.png").resize((235, 235))
|
||||
except FileNotFoundError:
|
||||
@ -170,8 +167,8 @@ async def get_char_snapshot(uid: str, cur_page: int):
|
||||
|
||||
def draw_char(
|
||||
test_char: PlayerInfoChar,
|
||||
charInfoMap: Dict[str, PlayerCharInfo],
|
||||
equipmentInfoMap: Dict[str, PlayerEquipmentInfo],
|
||||
charInfoMap: dict[str, PlayerCharInfo],
|
||||
equipmentInfoMap: dict[str, PlayerEquipmentInfo],
|
||||
):
|
||||
avatar_bg = Image.open(TEXT_PATH / "avatar_bg.png").resize((118, 118))
|
||||
bar_img: Image.Image = Image.open(TEXT_PATH / "bar.png").convert("RGBA")
|
||||
@ -179,16 +176,12 @@ def draw_char(
|
||||
charid = test_char.charId
|
||||
if charid == "char_1037_amiya3":
|
||||
charid = "char_1037_amiya3_2"
|
||||
ui_char_avatar = (
|
||||
Image.open(UI_CHAR_AVATAR_PATH / f"{charid}.png").resize((90, 90)).convert("RGBA")
|
||||
)
|
||||
ui_char_avatar = Image.open(UI_CHAR_AVATAR_PATH / f"{charid}.png").resize((90, 90)).convert("RGBA")
|
||||
bar_img.paste(avatar_bg, (24, 5), mask=avatar_bg)
|
||||
bar_img.paste(ui_char_avatar, (38, 21), mask=ui_char_avatar)
|
||||
|
||||
potential_rank = test_char.potentialRank
|
||||
potential_img = Image.open(POTENTIAL_HUB_PATH / f"potential_{potential_rank}.png").resize(
|
||||
(45, 45)
|
||||
)
|
||||
potential_img = Image.open(POTENTIAL_HUB_PATH / f"potential_{potential_rank}.png").resize((45, 45))
|
||||
bar_img.paste(potential_img, (135, 67), mask=potential_img)
|
||||
|
||||
elite_level = test_char.evolvePhase
|
||||
@ -226,7 +219,7 @@ def draw_char(
|
||||
if char_skills is not None:
|
||||
for i, skill in enumerate(char_skills):
|
||||
skill_id = skill.id_
|
||||
skill_icon_id = SKILL_TABLE.skills[skill_id].iconId
|
||||
skill_icon_id = EXCEL.SKILL_TABLE.skills[skill_id].iconId
|
||||
skill_specialize_level = skill.specializeLevel
|
||||
if skill_icon_id is None:
|
||||
skill_icon_id = skill_id
|
||||
@ -234,9 +227,7 @@ def draw_char(
|
||||
skill_img = skill_img.resize((70, 70))
|
||||
if test_char.defaultSkillId == skill_id:
|
||||
skill_img.paste(skill_selected, (38, -1), mask=skill_selected)
|
||||
skill_specialize_img = Image.open(
|
||||
CHAR_COMMON_PATH / f"evolve_small_icon_{skill_specialize_level}.png"
|
||||
)
|
||||
skill_specialize_img = Image.open(CHAR_COMMON_PATH / f"evolve_small_icon_{skill_specialize_level}.png")
|
||||
skill_img.paste(skill_specialize_img, (0, 0), mask=skill_specialize_img)
|
||||
skill_img = skill_img.resize((60, 60))
|
||||
bar_img.paste(skill_img, box=(355 + 70 * i, 37), mask=skill_img)
|
||||
@ -256,9 +247,7 @@ def draw_char(
|
||||
equip_type_icon = equipmentInfoMap[equip_id.id_].typeIcon
|
||||
if equip_type_icon == "original":
|
||||
continue
|
||||
equip_img = Image.open(
|
||||
UI_EQUIP_TYPE_DIRECTION_HUB_PATH / f"{equip_type_icon.lower()}.png"
|
||||
).resize((92, 68))
|
||||
equip_img = Image.open(UI_EQUIP_TYPE_DIRECTION_HUB_PATH / f"{equip_type_icon.lower()}.png").resize((92, 68))
|
||||
if test_char.defaultEquipId == equip_id.id_:
|
||||
bar_img.paste(equip_selected, (626 + 67 * i, 31), mask=equip_selected)
|
||||
bar_img.paste(equip_img, (616 + 68 * i, 32), mask=equip_img)
|
||||
|
@ -1,5 +1,3 @@
|
||||
from typing import Dict
|
||||
|
||||
from gsuid_core.utils.plugins_config.models import (
|
||||
GSC,
|
||||
GsBoolConfig,
|
||||
@ -8,10 +6,8 @@ from gsuid_core.utils.plugins_config.models import (
|
||||
GsStrConfig,
|
||||
)
|
||||
|
||||
CONIFG_DEFAULT: Dict[str, GSC] = {
|
||||
"SignTime": GsListStrConfig(
|
||||
"每晚签到时间设置", "每晚森空岛签到时间设置(时,分)", ["0", "38"]
|
||||
),
|
||||
CONIFG_DEFAULT: dict[str, GSC] = {
|
||||
"SignTime": GsListStrConfig("每晚签到时间设置", "每晚森空岛签到时间设置(时,分)", ["0", "38"]),
|
||||
"SignReportSimple": GsBoolConfig(
|
||||
"简洁签到报告",
|
||||
"开启后可以大大减少每日签到报告字数",
|
||||
@ -37,7 +33,5 @@ CONIFG_DEFAULT: Dict[str, GSC] = {
|
||||
"用于设置ArknightsUID前缀的配置",
|
||||
"ark",
|
||||
),
|
||||
"AnnMinuteCheck": GsIntConfig(
|
||||
"公告推送时间检测(单位min)", "公告推送时间检测(单位min)", 1, 60
|
||||
),
|
||||
"AnnMinuteCheck": GsIntConfig("公告推送时间检测(单位min)", "公告推送时间检测(单位min)", 1, 60),
|
||||
}
|
||||
|
@ -1,5 +1,3 @@
|
||||
from typing import Optional
|
||||
|
||||
from gsuid_core.logger import logger
|
||||
|
||||
from ..utils.database.models import ArknightsPush, ArknightsUser
|
||||
@ -35,7 +33,7 @@ async def set_config_func(
|
||||
uid: str = "0",
|
||||
user_id: str = "",
|
||||
option: str = "0",
|
||||
query: Optional[bool] = None,
|
||||
query: bool | None = None,
|
||||
is_admin: bool = False,
|
||||
):
|
||||
# 这里将传入的中文config_name转换为英文status
|
||||
@ -60,7 +58,7 @@ async def set_config_func(
|
||||
await ArknightsPush.update_push_data(
|
||||
uid,
|
||||
{
|
||||
f'{PUSH_MAP[config_name.replace("推送", "")]}_push': option,
|
||||
f"{PUSH_MAP[config_name.replace('推送', '')]}_push": option,
|
||||
},
|
||||
)
|
||||
else:
|
||||
|
@ -1,5 +1,4 @@
|
||||
from pathlib import Path
|
||||
from typing import List, Tuple
|
||||
|
||||
from PIL import Image
|
||||
|
||||
@ -12,7 +11,7 @@ back_four = Image.open(IMG_DIR / "back_four.png").convert("RGBA").resize((115, 3
|
||||
# (140 388)
|
||||
|
||||
|
||||
async def draw_gacha_image(char_get: List[Tuple[str, int]]):
|
||||
async def draw_gacha_image(char_get: list[tuple[str, int]]):
|
||||
if len(char_get) != 10:
|
||||
return
|
||||
img = GACHA_BG.copy().resize((1170, 580))
|
||||
@ -43,7 +42,7 @@ async def draw_gacha_image(char_get: List[Tuple[str, int]]):
|
||||
|
||||
import asyncio
|
||||
|
||||
test: List[Tuple[str, int]] = [
|
||||
test: list[tuple[str, int]] = [
|
||||
("char_328_cammou", 4),
|
||||
("char_473_mberry", 4),
|
||||
("char_103_angel", 5),
|
||||
|
@ -1,7 +1,6 @@
|
||||
import json
|
||||
import time
|
||||
from pathlib import Path
|
||||
from typing import List
|
||||
|
||||
from msgspec import convert
|
||||
from msgspec import json as msgjson
|
||||
@ -32,9 +31,7 @@ async def gacha(uid: str):
|
||||
data = PlayerDataDetail(
|
||||
user=PlayerData(
|
||||
gacha=PlayerGacha(
|
||||
newbee=PlayerGacha.PlayerNewbeeGachaPool(
|
||||
openFlag=1, cnt=21, poolId="BOOT_0_1_2"
|
||||
),
|
||||
newbee=PlayerGacha.PlayerNewbeeGachaPool(openFlag=1, cnt=21, poolId="BOOT_0_1_2"),
|
||||
normal={},
|
||||
attain={},
|
||||
single={},
|
||||
@ -64,7 +61,7 @@ async def testTenAdvancedGacha(
|
||||
player_data: PlayerDataDetail,
|
||||
useTkt: int = 0,
|
||||
itemId: str = "4003",
|
||||
) -> List[str]:
|
||||
) -> list[str]:
|
||||
now = int(time.time())
|
||||
newbeeGachaPoolClient = Excel.newbeeGachaPoolClient
|
||||
gachaPoolClient = Excel.gachaPoolClient
|
||||
|
@ -2,7 +2,7 @@ import json
|
||||
import random
|
||||
import time
|
||||
from pathlib import Path
|
||||
from typing import ClassVar, List, Tuple
|
||||
from typing import ClassVar
|
||||
|
||||
from loguru import logger
|
||||
from msgspec import convert
|
||||
@ -33,12 +33,10 @@ class GachaService:
|
||||
RIT5_UP_CNT_2: ClassVar[int] = 20
|
||||
RIT6_UP_CNT: ClassVar[int] = 50
|
||||
|
||||
forbiddenGachaPool: ClassVar[List[str]] = []
|
||||
forbiddenGachaPool: ClassVar[list[str]] = []
|
||||
|
||||
@classmethod
|
||||
async def doAdvancedGacha(
|
||||
cls, poolId: str, ruleType: str, player_data: PlayerDataDetail
|
||||
) -> PoolWeightItem:
|
||||
async def doAdvancedGacha(cls, poolId: str, ruleType: str, player_data: PlayerDataDetail) -> PoolWeightItem:
|
||||
pool = Server.details[poolId]
|
||||
state = GachaService._tryGetTrackState(poolId, player_data)
|
||||
|
||||
@ -85,9 +83,7 @@ class GachaService:
|
||||
return charHit
|
||||
|
||||
@staticmethod
|
||||
async def handleNormalGacha(
|
||||
poolId: str, useTkt: int, player_data: PlayerDataDetail
|
||||
) -> PoolWeightItem:
|
||||
async def handleNormalGacha(poolId: str, useTkt: int, player_data: PlayerDataDetail) -> PoolWeightItem:
|
||||
now = time.time()
|
||||
poolClient = next(p for p in Excel.gachaPoolClient if p.gachaPoolId == poolId)
|
||||
state = GachaService._tryGetTrackState(poolId, player_data)
|
||||
@ -115,7 +111,7 @@ class GachaService:
|
||||
@staticmethod
|
||||
async def handleTenNormalGacha(
|
||||
poolId: str, itemId: str, useTkt: int, player_data: PlayerDataDetail
|
||||
) -> List[PoolWeightItem]:
|
||||
) -> list[PoolWeightItem]:
|
||||
now = time.time()
|
||||
poolClient = next(p for p in Excel.gachaPoolClient if p.gachaPoolId == poolId)
|
||||
state = GachaService._tryGetTrackState(poolId, player_data)
|
||||
@ -167,14 +163,10 @@ class GachaService:
|
||||
# 调试状态下模拟客户端请求时需强制完成`obt/guide/l0-0/1_recruit_adv`
|
||||
curPool.cnt -= 1
|
||||
|
||||
return await GachaService.doAdvancedGacha(
|
||||
poolId=poolId, ruleType=RuleType.NEWBEE, player_data=player_data
|
||||
)
|
||||
return await GachaService.doAdvancedGacha(poolId=poolId, ruleType=RuleType.NEWBEE, player_data=player_data)
|
||||
|
||||
@staticmethod
|
||||
async def handleTenNewbieGacha(
|
||||
poolId: str, player_data: PlayerDataDetail
|
||||
) -> List[PoolWeightItem]:
|
||||
async def handleTenNewbieGacha(poolId: str, player_data: PlayerDataDetail) -> list[PoolWeightItem]:
|
||||
now = time.time()
|
||||
poolClient = next(p for p in Excel.newbeeGachaPoolClient if p.gachaPoolId == poolId)
|
||||
carousel = next(g for g in Excel.carousel if g.poolId == poolId)
|
||||
@ -195,7 +187,7 @@ class GachaService:
|
||||
|
||||
curPool.cnt -= 10
|
||||
|
||||
result: List[PoolWeightItem] = []
|
||||
result: list[PoolWeightItem] = []
|
||||
for _ in range(10):
|
||||
obj = await GachaService.doAdvancedGacha(
|
||||
poolId=poolId,
|
||||
@ -210,7 +202,7 @@ class GachaService:
|
||||
poolId: str,
|
||||
useTkt: int,
|
||||
player_data: PlayerDataDetail,
|
||||
) -> Tuple[PoolWeightItem, List]:
|
||||
) -> tuple[PoolWeightItem, list]:
|
||||
now = time.time()
|
||||
poolClient = next(p for p in Excel.gachaPoolClient if p.gachaPoolId == poolId)
|
||||
state = GachaService._tryGetTrackState(poolId, player_data)
|
||||
@ -241,7 +233,7 @@ class GachaService:
|
||||
@staticmethod
|
||||
async def handleTenLimitedGacha(
|
||||
poolId: str, itemId: str, useTkt: int, player_data: PlayerDataDetail
|
||||
) -> Tuple[List[PoolWeightItem], List[List]]:
|
||||
) -> tuple[list[PoolWeightItem], list[list]]:
|
||||
now = time.time()
|
||||
poolClient = next(p for p in Excel.gachaPoolClient if p.gachaPoolId == poolId)
|
||||
state = GachaService._tryGetTrackState(poolId, player_data)
|
||||
@ -260,7 +252,7 @@ class GachaService:
|
||||
## === ↑ ***基础数据校验*** ↑ ===
|
||||
|
||||
# 处理 lmtgs -> itemGet
|
||||
result: List[PoolWeightItem] = []
|
||||
result: list[PoolWeightItem] = []
|
||||
|
||||
for _ in range(10):
|
||||
obj = await GachaService.doAdvancedGacha(
|
||||
@ -304,7 +296,7 @@ class GachaService:
|
||||
poolId: str,
|
||||
useTkt: int,
|
||||
player_data: PlayerDataDetail,
|
||||
) -> List[PoolWeightItem]:
|
||||
) -> list[PoolWeightItem]:
|
||||
now = time.time()
|
||||
poolClient = next(p for p in Excel.gachaPoolClient if p.gachaPoolId == poolId)
|
||||
state = GachaService._tryGetTrackState(poolId, player_data)
|
||||
@ -321,7 +313,7 @@ class GachaService:
|
||||
# useTkt:7|CLASSIC_TKT_GACHA_10 -> useTkt:8|CLASSIC_TKT_GACHA -> useTkt:2|TKT_GACHA_10 -> useTkt:5|TKT_GACHA -> useTkt:0|DIAMOND_SHD -> gacha tkt state error
|
||||
## === ↑ ***基础数据校验*** ↑ ===
|
||||
|
||||
result: List[PoolWeightItem] = []
|
||||
result: list[PoolWeightItem] = []
|
||||
for _ in range(10):
|
||||
obj = await GachaService.doAdvancedGacha(
|
||||
poolId=poolId,
|
||||
@ -332,9 +324,7 @@ class GachaService:
|
||||
return result
|
||||
|
||||
@classmethod
|
||||
async def tryInitGachaRule(
|
||||
cls, poolClient: GachaPoolClientData, player_data: PlayerDataDetail
|
||||
) -> None:
|
||||
async def tryInitGachaRule(cls, poolClient: GachaPoolClientData, player_data: PlayerDataDetail) -> None:
|
||||
poolId = poolClient.gachaPoolId
|
||||
if poolClient.gachaRuleType in [RuleType.ATTAIN, RuleType.CLASSIC_ATTAIN]:
|
||||
await cls._initAttainPoolState(poolId, poolClient, player_data)
|
||||
@ -351,9 +341,7 @@ class GachaService:
|
||||
return player_data.track.gacha.pool[poolId]
|
||||
|
||||
@staticmethod
|
||||
async def _initAttainPoolState(
|
||||
poolId: str, poolClient: GachaPoolClientData, player_data: PlayerDataDetail
|
||||
) -> None:
|
||||
async def _initAttainPoolState(poolId: str, poolClient: GachaPoolClientData, player_data: PlayerDataDetail) -> None:
|
||||
if poolId not in player_data.user.gacha.attain:
|
||||
attain6Count = (poolClient.dynMeta or {}).get("attainRare6Num", 0)
|
||||
poolObj = player_data.user.gacha.PlayerAttainGacha(attain6Count=attain6Count)
|
||||
|
@ -24,9 +24,7 @@ with cur_path.joinpath("gacha_detail_table.json").open(encoding="UTF-8") as f:
|
||||
|
||||
class GachaTrigger:
|
||||
@classmethod
|
||||
async def postAdvancedGacha(
|
||||
cls, poolId: str, charHit: PoolWeightItem, player_data: PlayerDataDetail
|
||||
) -> None:
|
||||
async def postAdvancedGacha(cls, poolId: str, charHit: PoolWeightItem, player_data: PlayerDataDetail) -> None:
|
||||
if poolId not in [p.gachaPoolId for p in Excel.newbeeGachaPoolClient]:
|
||||
poolClient = next(p for p in Excel.gachaPoolClient if p.gachaPoolId == poolId)
|
||||
if poolClient.gachaRuleType == RuleType.LINKAGE:
|
||||
@ -54,9 +52,7 @@ class GachaTrigger:
|
||||
# return self.track.pool[poolId]
|
||||
|
||||
@staticmethod
|
||||
async def _trigLinkageType(
|
||||
poolId: str, charHit: PoolWeightItem, player_data: PlayerDataDetail
|
||||
) -> None:
|
||||
async def _trigLinkageType(poolId: str, charHit: PoolWeightItem, player_data: PlayerDataDetail) -> None:
|
||||
pool = Server.details[poolId]
|
||||
poolClient = next(p for p in Excel.gachaPoolClient if p.gachaPoolId == poolId)
|
||||
track = player_data.track.gacha.pool[poolId]
|
||||
@ -108,9 +104,7 @@ class GachaTrigger:
|
||||
player_data.track.gacha.nonNormal6StarCnt = track.non6StarCnt
|
||||
|
||||
@staticmethod
|
||||
async def _trigAttainType(
|
||||
poolId: str, charHit: PoolWeightItem, player_data: PlayerDataDetail
|
||||
) -> None:
|
||||
async def _trigAttainType(poolId: str, charHit: PoolWeightItem, player_data: PlayerDataDetail) -> None:
|
||||
pool = Server.details[poolId]
|
||||
weightPool = await PoolGenerator.build(pool)
|
||||
attain = player_data.user.gacha.attain[poolId]
|
||||
@ -127,17 +121,13 @@ class GachaTrigger:
|
||||
attain.attain6Count -= 1
|
||||
|
||||
@staticmethod
|
||||
async def _trigClassicType(
|
||||
poolId: str, charHit: PoolWeightItem, player_data: PlayerDataDetail
|
||||
) -> None:
|
||||
async def _trigClassicType(poolId: str, charHit: PoolWeightItem, player_data: PlayerDataDetail) -> None:
|
||||
track = player_data.track.gacha.pool[poolId]
|
||||
player_data.track.gacha.nonClassic6StarCnt = track.non6StarCnt
|
||||
charHit.isClassic = True
|
||||
|
||||
@staticmethod
|
||||
async def _trigSingleType(
|
||||
poolId: str, charHit: PoolWeightItem, player_data: PlayerDataDetail
|
||||
) -> None:
|
||||
async def _trigSingleType(poolId: str, charHit: PoolWeightItem, player_data: PlayerDataDetail) -> None:
|
||||
pool = Server.details[poolId]
|
||||
single = player_data.user.gacha.single[poolId]
|
||||
charHit.singleEnsureCnt = 150 if single.singleEnsureCnt < 0 else single.singleEnsureCnt
|
||||
@ -162,17 +152,13 @@ class GachaTrigger:
|
||||
charHit.isSingleEnsure = True
|
||||
|
||||
@staticmethod
|
||||
async def _trigFesClassicType(
|
||||
poolId: str, charHit: PoolWeightItem, player_data: PlayerDataDetail
|
||||
) -> None:
|
||||
async def _trigFesClassicType(poolId: str, charHit: PoolWeightItem, player_data: PlayerDataDetail) -> None:
|
||||
track = player_data.track.gacha.pool[poolId]
|
||||
player_data.track.gacha.nonClassic6StarCnt = track.non6StarCnt
|
||||
charHit.isClassic = True
|
||||
|
||||
@staticmethod
|
||||
async def _trigClassicAttainType(
|
||||
poolId: str, charHit: PoolWeightItem, player_data: PlayerDataDetail
|
||||
) -> None:
|
||||
async def _trigClassicAttainType(poolId: str, charHit: PoolWeightItem, player_data: PlayerDataDetail) -> None:
|
||||
pool = Server.details[poolId]
|
||||
weightPool = await PoolGenerator.build(pool)
|
||||
attain = player_data.user.gacha.attain[poolId]
|
||||
|
@ -1,7 +1,7 @@
|
||||
from enum import Enum
|
||||
|
||||
# from typing_extensions import TypeAlias
|
||||
from typing import Any, Dict, List, Union
|
||||
from typing import Any
|
||||
|
||||
from msgspec import Struct, field
|
||||
|
||||
@ -29,23 +29,23 @@ class LinkageRuleType(StrEnum):
|
||||
|
||||
class GachaPerAvail(Struct):
|
||||
rarityRank: int
|
||||
charIdList: List[str]
|
||||
charIdList: list[str]
|
||||
totalPercent: float
|
||||
|
||||
|
||||
class GachaAvailChar(Struct):
|
||||
perAvailList: List[GachaPerAvail]
|
||||
perAvailList: list[GachaPerAvail]
|
||||
|
||||
|
||||
class GachaPerChar(Struct):
|
||||
rarityRank: int
|
||||
charIdList: List[str]
|
||||
charIdList: list[str]
|
||||
percent: float
|
||||
count: int
|
||||
|
||||
|
||||
class GachaUpChar(Struct):
|
||||
perCharList: List[GachaPerChar]
|
||||
perCharList: list[GachaPerChar]
|
||||
|
||||
|
||||
class GachaWeightUpChar(Struct):
|
||||
@ -58,7 +58,7 @@ class GachaObject(Struct):
|
||||
gachaObject: str
|
||||
type_: int = field(name="type")
|
||||
imageType: int
|
||||
param: Union[str, None]
|
||||
param: str | None
|
||||
|
||||
|
||||
class GachaGroupObject(Struct):
|
||||
@ -69,15 +69,15 @@ class GachaGroupObject(Struct):
|
||||
|
||||
class GachaDetailInfo(Struct):
|
||||
availCharInfo: GachaAvailChar
|
||||
upCharInfo: Union[GachaUpChar, None]
|
||||
weightUpCharInfoList: Union[List[GachaWeightUpChar], None]
|
||||
limitedChar: Union[List[str], None]
|
||||
gachaObjList: List[GachaObject]
|
||||
gachaObjGroups: Union[List[GachaGroupObject], None]
|
||||
upCharInfo: GachaUpChar | None
|
||||
weightUpCharInfoList: list[GachaWeightUpChar] | None
|
||||
limitedChar: list[str] | None
|
||||
gachaObjList: list[GachaObject]
|
||||
gachaObjGroups: list[GachaGroupObject] | None
|
||||
|
||||
|
||||
class GachaDetailTable(Struct):
|
||||
details: Dict[str, GachaDetailInfo]
|
||||
details: dict[str, GachaDetailInfo]
|
||||
|
||||
|
||||
class GachaDataLinkageTenGachaTkt(Struct):
|
||||
@ -118,24 +118,24 @@ class GachaDataRecruitRange(Struct):
|
||||
|
||||
|
||||
class PotentialMaterialConverterConfig(Struct):
|
||||
items: Dict[str, ItemBundle]
|
||||
items: dict[str, ItemBundle]
|
||||
|
||||
|
||||
class RecruitPoolRecruitTime(Struct):
|
||||
timeLength: int
|
||||
recruitPrice: int
|
||||
accumRate: Union[float, None] = None
|
||||
accumRate: float | None = None
|
||||
|
||||
|
||||
class RecruitConstantsData(Struct):
|
||||
tagPriceList: Dict[str, int]
|
||||
tagPriceList: dict[str, int]
|
||||
maxRecruitTime: int
|
||||
rarityWeights: None = None
|
||||
recruitTimeFactorList: None = None
|
||||
|
||||
|
||||
class RecruitPool(Struct):
|
||||
recruitTimeTable: List[RecruitPoolRecruitTime]
|
||||
recruitTimeTable: list[RecruitPoolRecruitTime]
|
||||
recruitConstants: RecruitConstantsData
|
||||
recruitCharacterList: None = None
|
||||
maskTypeWeightTable: None = None
|
||||
@ -148,30 +148,30 @@ class NewbeeGachaPoolClientData(Struct):
|
||||
gachaPoolDetail: str
|
||||
gachaPrice: int
|
||||
gachaTimes: int
|
||||
gachaOffset: Union[str, None] = None
|
||||
firstOpenDay: Union[int, None] = None
|
||||
reOpenDay: Union[int, None] = None
|
||||
gachaOffset: str | None = None
|
||||
firstOpenDay: int | None = None
|
||||
reOpenDay: int | None = None
|
||||
gachaPoolItems: None = None
|
||||
signUpEarliestTime: Union[int, None] = None
|
||||
signUpEarliestTime: int | None = None
|
||||
|
||||
|
||||
class GachaPoolClientData(Struct):
|
||||
CDPrimColor: Union[str, None]
|
||||
CDSecColor: Union[str, None]
|
||||
CDPrimColor: str | None
|
||||
CDSecColor: str | None
|
||||
endTime: int
|
||||
gachaIndex: int
|
||||
gachaPoolDetail: Union[str, None]
|
||||
gachaPoolDetail: str | None
|
||||
gachaPoolId: str
|
||||
gachaPoolName: str
|
||||
gachaPoolSummary: str
|
||||
gachaRuleType: str
|
||||
guarantee5Avail: int
|
||||
guarantee5Count: int
|
||||
LMTGSID: Union[str, None]
|
||||
LMTGSID: str | None
|
||||
openTime: int
|
||||
dynMeta: Union[Dict[str, Any], None] = None
|
||||
linkageParam: Union[Dict[str, Any], None] = None
|
||||
linkageRuleId: Union[str, None] = None
|
||||
dynMeta: dict[str, Any] | None = None
|
||||
linkageParam: dict[str, Any] | None = None
|
||||
linkageRuleId: str | None = None
|
||||
|
||||
|
||||
class GachaTag(Struct):
|
||||
@ -190,13 +190,13 @@ class SpecialRecruitPool(Struct):
|
||||
endDateTime: int
|
||||
order: int
|
||||
recruitId: str
|
||||
recruitTimeTable: List[SpecialRecruitPoolSpecialRecruitCostData]
|
||||
recruitTimeTable: list[SpecialRecruitPoolSpecialRecruitCostData]
|
||||
startDateTime: int
|
||||
tagId: int
|
||||
tagName: str
|
||||
CDPrimColor: Union[str, None]
|
||||
CDSecColor: Union[str, None]
|
||||
LMTGSID: Union[str, None]
|
||||
CDPrimColor: str | None
|
||||
CDSecColor: str | None
|
||||
LMTGSID: str | None
|
||||
gachaRuleType: str
|
||||
|
||||
|
||||
@ -208,35 +208,35 @@ class GachaDataFesGachaPoolRelateItem(Struct):
|
||||
class GachaTable(Struct):
|
||||
__version__ = "24-03-29-14-33-44-5002d2"
|
||||
|
||||
gachaTags: List[GachaTag]
|
||||
carousel: List[GachaDataCarouselData]
|
||||
gachaTags: list[GachaTag]
|
||||
carousel: list[GachaDataCarouselData]
|
||||
classicPotentialMaterialConverter: PotentialMaterialConverterConfig
|
||||
dicRecruit6StarHint: Union[Dict[str, str], None]
|
||||
fesGachaPoolRelateItem: Union[Dict[str, GachaDataFesGachaPoolRelateItem], None]
|
||||
freeGacha: List[GachaDataFreeLimitGachaData]
|
||||
gachaPoolClient: List[GachaPoolClientData]
|
||||
limitTenGachaItem: List[GachaDataLimitTenGachaTkt]
|
||||
linkageTenGachaItem: List[GachaDataLinkageTenGachaTkt]
|
||||
newbeeGachaPoolClient: List[NewbeeGachaPoolClientData]
|
||||
dicRecruit6StarHint: dict[str, str] | None
|
||||
fesGachaPoolRelateItem: dict[str, GachaDataFesGachaPoolRelateItem] | None
|
||||
freeGacha: list[GachaDataFreeLimitGachaData]
|
||||
gachaPoolClient: list[GachaPoolClientData]
|
||||
limitTenGachaItem: list[GachaDataLimitTenGachaTkt]
|
||||
linkageTenGachaItem: list[GachaDataLinkageTenGachaTkt]
|
||||
newbeeGachaPoolClient: list[NewbeeGachaPoolClientData]
|
||||
potentialMaterialConverter: PotentialMaterialConverterConfig
|
||||
recruitDetail: str
|
||||
recruitPool: RecruitPool
|
||||
recruitRarityTable: Dict[str, GachaDataRecruitRange]
|
||||
specialRecruitPool: List[SpecialRecruitPool]
|
||||
specialTagRarityTable: Dict[str, List[int]]
|
||||
gachaTagMaxValid: Union[int, None] = None
|
||||
potentialMats: Union[Dict, None] = None
|
||||
classicPotentialMats: Union[Dict, None] = None
|
||||
recruitRarityTable: dict[str, GachaDataRecruitRange]
|
||||
specialRecruitPool: list[SpecialRecruitPool]
|
||||
specialTagRarityTable: dict[str, list[int]]
|
||||
gachaTagMaxValid: int | None = None
|
||||
potentialMats: dict | None = None
|
||||
classicPotentialMats: dict | None = None
|
||||
|
||||
|
||||
class GachaDetailDataPerAvail(Struct):
|
||||
rarityRank: int
|
||||
charIdList: List[str]
|
||||
charIdList: list[str]
|
||||
totalPercent: float
|
||||
|
||||
|
||||
class GachaDetailDataGachaAvailChar(Struct):
|
||||
perAvailList: List[GachaDetailDataPerAvail]
|
||||
perAvailList: list[GachaDetailDataPerAvail]
|
||||
|
||||
|
||||
class PoolWeightItem(Struct):
|
||||
@ -245,12 +245,12 @@ class PoolWeightItem(Struct):
|
||||
type_: str = field(name="type")
|
||||
rarity: int
|
||||
isClassic: bool = field(default=False)
|
||||
beforeNonHitCnt: Union[int, None] = field(default=None)
|
||||
singleEnsureCnt: Union[int, None] = field(default=None)
|
||||
isSingleEnsure: Union[bool, None] = field(default=None)
|
||||
beforeNonHitCnt: int | None = field(default=None)
|
||||
singleEnsureCnt: int | None = field(default=None)
|
||||
isSingleEnsure: bool | None = field(default=None)
|
||||
|
||||
def bulidLog(self) -> Dict:
|
||||
m_log: Dict[str, Union[bool, int]] = {}
|
||||
def bulidLog(self) -> dict:
|
||||
m_log: dict[str, bool | int] = {}
|
||||
if self.beforeNonHitCnt is not None:
|
||||
m_log["beforeNonHitCnt"] = self.beforeNonHitCnt
|
||||
if self.singleEnsureCnt is not None:
|
||||
@ -262,10 +262,10 @@ class PoolWeightItem(Struct):
|
||||
|
||||
class gachaGroupConfig(Struct):
|
||||
normalCharCnt: int
|
||||
weights: List[float] = field(default_factory=list)
|
||||
pool: List[PoolWeightItem] = field(default_factory=list)
|
||||
upChars_1: List[str] = field(default_factory=list)
|
||||
upChars_2: List[str] = field(default_factory=list)
|
||||
weights: list[float] = field(default_factory=list)
|
||||
pool: list[PoolWeightItem] = field(default_factory=list)
|
||||
upChars_1: list[str] = field(default_factory=list)
|
||||
upChars_2: list[str] = field(default_factory=list)
|
||||
perUpWeight_1: float = field(default=0.0)
|
||||
perUpWeight_2: float = field(default=0.0)
|
||||
totalWeights: float = field(default=1.0)
|
||||
@ -276,13 +276,13 @@ class GachaPoolInfo(Struct, omit_defaults=False):
|
||||
totalCnt: int = field(default=0)
|
||||
non6StarCnt: int = field(default=0)
|
||||
non5StarCnt: int = field(default=0)
|
||||
gain5Star: List[str] = field(default_factory=list)
|
||||
gain6Star: List[str] = field(default_factory=list)
|
||||
history: List[str] = field(default_factory=list)
|
||||
gain5Star: list[str] = field(default_factory=list)
|
||||
gain6Star: list[str] = field(default_factory=list)
|
||||
history: list[str] = field(default_factory=list)
|
||||
|
||||
|
||||
class GachaTrackModel(Struct, omit_defaults=False):
|
||||
pool: Dict[str, GachaPoolInfo] = field(default_factory=dict)
|
||||
pool: dict[str, GachaPoolInfo] = field(default_factory=dict)
|
||||
nonNormal6StarCnt: int = field(default=0)
|
||||
nonClassic6StarCnt: int = field(default=0)
|
||||
|
||||
@ -317,20 +317,20 @@ class PlayerGacha(Struct):
|
||||
singleEnsureCnt: int
|
||||
singleEnsureUse: bool
|
||||
singleEnsureChar: str
|
||||
cnt: Union[int, None] = field(default=None)
|
||||
maxCnt: Union[int, None] = field(default=None)
|
||||
avail: Union[bool, None] = field(default=None)
|
||||
cnt: int | None = field(default=None)
|
||||
maxCnt: int | None = field(default=None)
|
||||
avail: bool | None = field(default=None)
|
||||
|
||||
class PlayerFesClassicGacha(Struct):
|
||||
upChar: Dict[str, List[str]]
|
||||
upChar: dict[str, list[str]]
|
||||
|
||||
newbee: PlayerNewbeeGachaPool
|
||||
normal: Dict[str, PlayerGachaPool]
|
||||
attain: Dict[str, PlayerAttainGacha]
|
||||
single: Dict[str, PlayerSingleGacha]
|
||||
fesClassic: Dict[str, PlayerFesClassicGacha]
|
||||
limit: Dict[str, PlayerFreeLimitGacha]
|
||||
linkage: Dict[str, Dict[str, PlayerLinkageGacha]]
|
||||
normal: dict[str, PlayerGachaPool]
|
||||
attain: dict[str, PlayerAttainGacha]
|
||||
single: dict[str, PlayerSingleGacha]
|
||||
fesClassic: dict[str, PlayerFesClassicGacha]
|
||||
limit: dict[str, PlayerFreeLimitGacha]
|
||||
linkage: dict[str, dict[str, PlayerLinkageGacha]]
|
||||
|
||||
|
||||
class PlayerTrack(Struct):
|
||||
|
@ -1,6 +1,4 @@
|
||||
from typing import List, Tuple, overload
|
||||
|
||||
from typing_extensions import TypeAlias
|
||||
from typing import TypeAlias, overload
|
||||
|
||||
from .models import (
|
||||
GachaDetailDataGachaAvailChar,
|
||||
@ -10,8 +8,8 @@ from .models import (
|
||||
gachaGroupConfig,
|
||||
)
|
||||
|
||||
PoolResultA: TypeAlias = Tuple[List[float], List[PoolWeightItem]]
|
||||
PoolResultB: TypeAlias = List[List[Tuple[List[float], List[PoolWeightItem]]]]
|
||||
PoolResultA: TypeAlias = tuple[list[float], list[PoolWeightItem]]
|
||||
PoolResultB: TypeAlias = list[list[tuple[list[float], list[PoolWeightItem]]]]
|
||||
|
||||
|
||||
class PoolGenerator:
|
||||
@ -22,9 +20,7 @@ class PoolGenerator:
|
||||
if not group.charIdList:
|
||||
continue
|
||||
for charId in group.charIdList:
|
||||
weightObj = PoolWeightItem(
|
||||
id_=charId, count=1, type_="CHAR", rarity=group.rarityRank
|
||||
)
|
||||
weightObj = PoolWeightItem(id_=charId, count=1, type_="CHAR", rarity=group.rarityRank)
|
||||
pool.append(weightObj)
|
||||
length = len(group.charIdList)
|
||||
weights.extend([group.totalPercent / length] * length)
|
||||
@ -36,9 +32,7 @@ class PoolGenerator:
|
||||
|
||||
@overload
|
||||
@classmethod
|
||||
async def build(
|
||||
cls, detail: GachaDetailInfo, poolId: str, player_data: PlayerDataDetail
|
||||
) -> PoolResultB: ...
|
||||
async def build(cls, detail: GachaDetailInfo, poolId: str, player_data: PlayerDataDetail) -> PoolResultB: ...
|
||||
|
||||
@classmethod
|
||||
async def build(cls, *args) -> PoolResultB: # type: ignore[overload-overlap]
|
||||
@ -54,9 +48,7 @@ class PoolGenerator:
|
||||
for group in detail.availCharInfo.perAvailList:
|
||||
conf = gachaGroupConfig(normalCharCnt=len(group.charIdList))
|
||||
if info := detail.upCharInfo:
|
||||
upGroup = next(
|
||||
(x for x in info.perCharList if x.rarityRank == group.rarityRank), None
|
||||
)
|
||||
upGroup = next((x for x in info.perCharList if x.rarityRank == group.rarityRank), None)
|
||||
if upGroup is not None:
|
||||
conf.upChars_1 = upGroup.charIdList
|
||||
conf.perUpWeight_1 = upGroup.percent
|
||||
@ -68,11 +60,7 @@ class PoolGenerator:
|
||||
conf.perUpWeight_2 = info[0].weight
|
||||
conf.normalCharCnt -= len(conf.upChars_2)
|
||||
rate = conf.perUpWeight_2 // 100
|
||||
conf.perUpWeight_2 = (
|
||||
conf.totalWeights
|
||||
/ (conf.normalCharCnt + len(conf.upChars_2) * rate)
|
||||
* rate
|
||||
)
|
||||
conf.perUpWeight_2 = conf.totalWeights / (conf.normalCharCnt + len(conf.upChars_2) * rate) * rate
|
||||
conf.totalWeights -= conf.perUpWeight_2 * len(conf.upChars_2)
|
||||
for charId in group.charIdList:
|
||||
weightObj = PoolWeightItem(
|
||||
@ -92,9 +80,7 @@ class PoolGenerator:
|
||||
return result
|
||||
|
||||
@staticmethod
|
||||
async def _buildFesCustomPool(
|
||||
detail: GachaDetailInfo, poolId: str, player_data: PlayerDataDetail
|
||||
) -> PoolResultB:
|
||||
async def _buildFesCustomPool(detail: GachaDetailInfo, poolId: str, player_data: PlayerDataDetail) -> PoolResultB:
|
||||
result = [[] for _ in range(6)]
|
||||
for group in detail.availCharInfo.perAvailList:
|
||||
conf = gachaGroupConfig(normalCharCnt=len(group.charIdList))
|
||||
|
@ -1,5 +1,4 @@
|
||||
from pathlib import Path
|
||||
from typing import Dict, Union
|
||||
|
||||
import aiofiles
|
||||
from gsuid_core.help.draw_plugin_help import get_help
|
||||
@ -18,16 +17,16 @@ TEXT_PATH = Path(__file__).parent / "texture2d"
|
||||
HELP_DATA = Path(__file__).parent / "Help.json"
|
||||
|
||||
|
||||
async def get_help_data() -> Union[Dict[str, PluginHelp], None]:
|
||||
async def get_help_data() -> dict[str, PluginHelp] | None:
|
||||
if HELP_DATA.exists():
|
||||
async with aiofiles.open(HELP_DATA, "rb") as file:
|
||||
return msgjson.decode(
|
||||
await file.read(),
|
||||
type=Dict[str, PluginHelp],
|
||||
type=dict[str, PluginHelp],
|
||||
)
|
||||
|
||||
|
||||
async def get_core_help() -> Union[bytes, str]:
|
||||
async def get_core_help() -> bytes | str:
|
||||
help_data = await get_help_data()
|
||||
if help_data is None:
|
||||
return "暂未找到帮助数据..."
|
||||
@ -42,8 +41,6 @@ async def get_core_help() -> Union[bytes, str]:
|
||||
Image.open(TEXT_PATH / "banner.png"),
|
||||
Image.open(TEXT_PATH / "button.png"),
|
||||
source_han_sans_cn_origin,
|
||||
extra_message=[
|
||||
f"Client Version:{Arknights_Client_version} " f" Res version: {Arknights_Res_version}"
|
||||
],
|
||||
extra_message=[f"Client Version:{Arknights_Client_version} Res version: {Arknights_Res_version}"],
|
||||
)
|
||||
return img
|
||||
|
@ -1,5 +1,5 @@
|
||||
from datetime import datetime
|
||||
from typing import ClassVar, Dict, TypeVar, Union
|
||||
from typing import ClassVar, TypeVar
|
||||
|
||||
import httpx
|
||||
from gsuid_core.utils.plugins_config.gs_config import core_plugins_config
|
||||
@ -36,19 +36,19 @@ class SklandLoginError(Exception):
|
||||
return self.url + " " + self.message
|
||||
|
||||
|
||||
def transUnset(v: Union[T1, UnsetType], d: T2 = None) -> Union[T1, T2]:
|
||||
def transUnset(v: T1 | UnsetType, d: T2 = None) -> T1 | T2:
|
||||
return v if not isinstance(v, UnsetType) else d
|
||||
|
||||
|
||||
class SklandLogin:
|
||||
_HEADER: ClassVar[Dict[str, str]] = {
|
||||
_HEADER: ClassVar[dict[str, str]] = {
|
||||
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36", # noqa: E501
|
||||
"content-type": "application/json;charset=UTF-8",
|
||||
"origin": "https://ak.hypergryph.com",
|
||||
"referer": "https://ak.hypergryph.com",
|
||||
}
|
||||
|
||||
def __init__(self, phone: str, geetest_token: Union[str, None] = None):
|
||||
def __init__(self, phone: str, geetest_token: str | None = None):
|
||||
self.phone = phone
|
||||
self.client = httpx.Client(
|
||||
headers=self._HEADER,
|
||||
@ -60,7 +60,7 @@ class SklandLogin:
|
||||
|
||||
def send_phone_code(
|
||||
self,
|
||||
override_geetest: Union[GeneralGeetestData, None] = None,
|
||||
override_geetest: GeneralGeetestData | None = None,
|
||||
):
|
||||
if override_geetest:
|
||||
data = GeneralV1SendPhoneCodeRequest(
|
||||
|
@ -1,5 +1,3 @@
|
||||
from typing import Dict, Union
|
||||
|
||||
from msgspec import UNSET, Struct, UnsetType, field
|
||||
|
||||
|
||||
@ -12,7 +10,7 @@ class GeneralGeetestData(Struct):
|
||||
class GeneralV1SendPhoneCodeRequest(Struct):
|
||||
phone: str
|
||||
type: int
|
||||
captcha: Union[GeneralGeetestData, UnsetType] = field(default=UNSET)
|
||||
captcha: GeneralGeetestData | UnsetType = field(default=UNSET)
|
||||
|
||||
|
||||
class CaptchaItemModel(Struct):
|
||||
@ -28,9 +26,9 @@ class GeneralV1SendPhoneCodeData(Struct):
|
||||
|
||||
class GeneralV1SendPhoneCodeResponse(Struct):
|
||||
status: int
|
||||
msg: Union[str, UnsetType] = field(default=UNSET)
|
||||
type: Union[str, UnsetType] = field(default=UNSET)
|
||||
data: Union[GeneralV1SendPhoneCodeData, UnsetType] = field(default=UNSET)
|
||||
msg: str | UnsetType = field(default=UNSET)
|
||||
type: str | UnsetType = field(default=UNSET)
|
||||
data: GeneralV1SendPhoneCodeData | UnsetType = field(default=UNSET)
|
||||
|
||||
|
||||
class TokenData(Struct):
|
||||
@ -44,9 +42,9 @@ class UserAuthV2TokenByPhoneCodeRequest(Struct):
|
||||
|
||||
class UserAuthV2TokenByPhoneCodeResponse(Struct):
|
||||
status: int
|
||||
msg: Union[str, UnsetType] = field(default=UNSET)
|
||||
data: Union[TokenData, UnsetType] = field(default=UNSET)
|
||||
type: Union[str, UnsetType] = field(default=UNSET)
|
||||
msg: str | UnsetType = field(default=UNSET)
|
||||
data: TokenData | UnsetType = field(default=UNSET)
|
||||
type: str | UnsetType = field(default=UNSET)
|
||||
|
||||
|
||||
class AccountInfoHGRequest(Struct):
|
||||
@ -56,7 +54,7 @@ class AccountInfoHGRequest(Struct):
|
||||
class AccountInfoHGResponse(Struct):
|
||||
code: int
|
||||
msg: str
|
||||
data: Dict
|
||||
data: dict
|
||||
|
||||
|
||||
class GeetestData(Struct):
|
||||
@ -80,19 +78,19 @@ class Oauth2V2GrantRequest(Struct):
|
||||
|
||||
|
||||
class Oauth2V2CodeDataItemResponse(Struct):
|
||||
hgId: Union[str, UnsetType] = field(default=UNSET)
|
||||
token: Union[str, UnsetType] = field(default=UNSET)
|
||||
code: Union[str, UnsetType] = field(default=UNSET)
|
||||
uid: Union[str, UnsetType] = field(default=UNSET)
|
||||
delete_commit_ts: Union[int, UnsetType] = field(default=UNSET)
|
||||
delete_request_ts: Union[int, UnsetType] = field(default=UNSET)
|
||||
hgId: str | UnsetType = field(default=UNSET)
|
||||
token: str | UnsetType = field(default=UNSET)
|
||||
code: str | UnsetType = field(default=UNSET)
|
||||
uid: str | UnsetType = field(default=UNSET)
|
||||
delete_commit_ts: int | UnsetType = field(default=UNSET)
|
||||
delete_request_ts: int | UnsetType = field(default=UNSET)
|
||||
|
||||
|
||||
class Oauth2V2GrantResponse(Struct):
|
||||
status: int
|
||||
msg: str
|
||||
data: Union[Oauth2V2CodeDataItemResponse, UnsetType] = field(default=UNSET)
|
||||
type: Union[str, UnsetType] = field(default=UNSET)
|
||||
data: Oauth2V2CodeDataItemResponse | UnsetType = field(default=UNSET)
|
||||
type: str | UnsetType = field(default=UNSET)
|
||||
|
||||
|
||||
class ZonaiSklandWebUserGenerateCredByCodeRequest(Struct):
|
||||
|
@ -1,158 +1,8 @@
|
||||
import asyncio
|
||||
import json
|
||||
import threading
|
||||
from pathlib import Path
|
||||
|
||||
from gsuid_core.logger import logger
|
||||
from torappu_excel import ExcelTableManager
|
||||
|
||||
from ..utils.models.gamedata.BattleEquipTable import BattleEquipTable
|
||||
from ..utils.models.gamedata.BuildingData import BuildingData
|
||||
from ..utils.models.gamedata.CampaignTable import CampaignTable
|
||||
from ..utils.models.gamedata.ChapterTable import ChapterTable
|
||||
from ..utils.models.gamedata.CharacterTable import CharacterTable
|
||||
from ..utils.models.gamedata.CharMetaTable import CharMetaTable
|
||||
from ..utils.models.gamedata.CharmTable import CharmTable
|
||||
from ..utils.models.gamedata.CharPatchTable import CharPatchTable
|
||||
from ..utils.models.gamedata.CharwordTable import CharwordTable
|
||||
from ..utils.models.gamedata.CheckinTable import CheckinTable
|
||||
from ..utils.models.gamedata.ClimbTowerTable import ClimbTowerTable
|
||||
from ..utils.models.gamedata.ClueData import ClueData
|
||||
from ..utils.models.gamedata.CrisisTable import CrisisTable
|
||||
from ..utils.models.gamedata.CrisisV2Table import CrisisV2Table
|
||||
from ..utils.models.gamedata.EnemyHandbookTable import EnemyHandbookTable
|
||||
from ..utils.models.gamedata.FavorTable import FavorTable
|
||||
from ..utils.models.gamedata.GachaTable import GachaTable
|
||||
from ..utils.models.gamedata.GamedataConst import GamedataConst
|
||||
from ..utils.models.gamedata.HandbookInfoTable import HandbookInfoTable
|
||||
from ..utils.models.gamedata.HandbookTable import HandbookTable
|
||||
from ..utils.models.gamedata.HandbookTeamTable import HandbookTeamTable
|
||||
from ..utils.models.gamedata.MedalTable import MedalTable
|
||||
from ..utils.models.gamedata.MissionTable import MissionTable
|
||||
from ..utils.models.gamedata.OpenServerTable import OpenServerTable
|
||||
from ..utils.models.gamedata.PlayerAvatarTable import PlayerAvatarTable
|
||||
from ..utils.models.gamedata.RangeTable import RangeTable
|
||||
from ..utils.models.gamedata.ReplicateTable import ReplicateTable
|
||||
from ..utils.models.gamedata.RetroTable import RetroTable
|
||||
from ..utils.models.gamedata.RoguelikeTable import RoguelikeTable
|
||||
from ..utils.models.gamedata.RoguelikeTopicTable import RoguelikeTopicTable
|
||||
from ..utils.models.gamedata.SandboxTable import SandboxTable
|
||||
from ..utils.models.gamedata.ShopClientTable import ShopClientTable
|
||||
from ..utils.models.gamedata.SkillTable import SkillTable
|
||||
from ..utils.models.gamedata.SkinTable import SkinTable
|
||||
from ..utils.models.gamedata.StageTable import StageTable
|
||||
from ..utils.models.gamedata.StoryReviewMetaTable import StoryReviewMetaTable
|
||||
from ..utils.models.gamedata.StoryReviewTable import StoryReviewTable
|
||||
from ..utils.models.gamedata.StoryTable import StoryTable
|
||||
from ..utils.models.gamedata.TechBuffTable import TechBuffTable
|
||||
from ..utils.models.gamedata.TipTable import TipTable
|
||||
from ..utils.models.gamedata.TokenTable import TokenTable
|
||||
from ..utils.models.gamedata.UniequipData import UniequipData
|
||||
from ..utils.models.gamedata.UniequipTable import UniEquipTable
|
||||
from ..utils.models.gamedata.ZoneTable import ZoneTable
|
||||
from ..utils.resource.download_all_resource import download_all_resource
|
||||
from ..utils.resource.RESOURCE_PATH import GAMEDATA_PATH
|
||||
EXCEL: ExcelTableManager = ExcelTableManager()
|
||||
|
||||
|
||||
def read_json(file_path: Path, **kwargs) -> dict:
|
||||
"""
|
||||
Read a JSON file and return its contents as a dictionary.
|
||||
"""
|
||||
try:
|
||||
with Path.open(file_path, encoding="UTF-8", **kwargs) as file:
|
||||
return json.load(file)
|
||||
except (FileNotFoundError, json.JSONDecodeError) as e:
|
||||
logger.error(f"Error reading JSON file: {e}")
|
||||
return {}
|
||||
|
||||
|
||||
threading.Thread(target=lambda: asyncio.run(download_all_resource()), daemon=True).start()
|
||||
# ACTIVITY_TABLE = ActivityTable.convert(read_json(GAMEDATA_PATH / 'activity_table.json'))
|
||||
# AUDIO_DATA = AudioData.convert(read_json(GAMEDATA_PATH / 'audio_data.json'))
|
||||
|
||||
BATTLE_EQUIP_TABLE = BattleEquipTable.convert(
|
||||
{"equips": read_json(GAMEDATA_PATH / "battle_equip_table.json")}
|
||||
)
|
||||
BUILDING_DATA = BuildingData.convert(read_json(GAMEDATA_PATH / "building_data.json"))
|
||||
|
||||
CAMPAIGN_TABLE = CampaignTable.convert(read_json(GAMEDATA_PATH / "campaign_table.json"))
|
||||
CHAPTER_TABLE = ChapterTable.convert(
|
||||
{"chapters": read_json(GAMEDATA_PATH / "chapter_table.json")}
|
||||
)
|
||||
CHARACTER_TABLE = CharacterTable.convert(
|
||||
{"chars": read_json(GAMEDATA_PATH / "character_table.json")}
|
||||
)
|
||||
CHAR_META_TABLE = CharMetaTable.convert(read_json(GAMEDATA_PATH / "char_meta_table.json"))
|
||||
CHARM_TABLE = CharmTable.convert(read_json(GAMEDATA_PATH / "charm_table.json"))
|
||||
CHAR_PATH_TABLE = CharPatchTable.convert(read_json(GAMEDATA_PATH / "char_patch_table.json"))
|
||||
CHARWORD_TABLE = CharwordTable.convert(read_json(GAMEDATA_PATH / "charword_table.json"))
|
||||
CHECKIN_TABLE = CheckinTable.convert(read_json(GAMEDATA_PATH / "checkin_table.json"))
|
||||
CLIMB_TOWER_TABLE = ClimbTowerTable.convert(read_json(GAMEDATA_PATH / "climb_tower_table.json"))
|
||||
CLUE_DATA = ClueData.convert(read_json(GAMEDATA_PATH / "clue_data.json"))
|
||||
CRISIS_TABLE = CrisisTable.convert(read_json(GAMEDATA_PATH / "crisis_table.json"))
|
||||
CRISIS_V2_TABLE = CrisisV2Table.convert(read_json(GAMEDATA_PATH / "crisis_v2_table.json"))
|
||||
|
||||
# DISPLAY_META_TABLE = DisplayMetaTable.convert(read_json(GAMEDATA_PATH / 'display_meta_table.json'))
|
||||
|
||||
ENEMY_HANDBOOK_TABLE = EnemyHandbookTable.convert(
|
||||
read_json(GAMEDATA_PATH / "enemy_handbook_table.json")
|
||||
)
|
||||
|
||||
FAVOR_TABLE = FavorTable.convert(read_json(GAMEDATA_PATH / "favor_table.json"))
|
||||
|
||||
GACHA_TABLE = GachaTable.convert(read_json(GAMEDATA_PATH / "gacha_table.json"))
|
||||
GAMEDATA_CONST = GamedataConst.convert(read_json(GAMEDATA_PATH / "gamedata_const.json"))
|
||||
|
||||
HANDBOOK_INFO_TABLE = HandbookInfoTable.convert(
|
||||
read_json(GAMEDATA_PATH / "handbook_info_table.json")
|
||||
)
|
||||
HANDBOOK_TABLE = HandbookTable.convert(read_json(GAMEDATA_PATH / "handbook_table.json"))
|
||||
HANDBOOK_TEAM_TABLE = HandbookTeamTable.convert(
|
||||
{"team": read_json(GAMEDATA_PATH / "handbook_team_table.json")}
|
||||
)
|
||||
|
||||
# ITEM_TABLE = ItemTable.convert(read_json(GAMEDATA_PATH / "item_table.json"))
|
||||
|
||||
MEDAL_TABLE = MedalTable.convert(read_json(GAMEDATA_PATH / "medal_table.json"))
|
||||
MISSION_TABLE = MissionTable.convert(read_json(GAMEDATA_PATH / "mission_table.json"))
|
||||
|
||||
OPEN_SERVER_TABLE = OpenServerTable.convert(read_json(GAMEDATA_PATH / "open_server_table.json"))
|
||||
|
||||
PLAYER_AVATAR_TABLE = PlayerAvatarTable.convert(
|
||||
read_json(GAMEDATA_PATH / "player_avatar_table.json")
|
||||
)
|
||||
|
||||
RANGE_TABLE = RangeTable.convert({"range_": read_json(GAMEDATA_PATH / "range_table.json")})
|
||||
REPLICATE_TABLE = ReplicateTable.convert(
|
||||
{"replicate": read_json(GAMEDATA_PATH / "replicate_table.json")}
|
||||
)
|
||||
RETRO_TABLE = RetroTable.convert(read_json(GAMEDATA_PATH / "retro_table.json"))
|
||||
ROGUELIKE_TABLE = RoguelikeTable.convert(read_json(GAMEDATA_PATH / "roguelike_table.json"))
|
||||
ROGUELIKE_TOPIC_TABLE = RoguelikeTopicTable.convert(
|
||||
read_json(GAMEDATA_PATH / "roguelike_topic_table.json")
|
||||
)
|
||||
|
||||
SANDBOX_TABLE = SandboxTable.convert(read_json(GAMEDATA_PATH / "sandbox_table.json"))
|
||||
# SANDBOX_PERM_TABLE = SandboxPermTable.convert(
|
||||
# read_json(GAMEDATA_PATH / "sandbox_perm_table.json")
|
||||
# )
|
||||
SHOP_CLIENT_TABLE = ShopClientTable.convert(read_json(GAMEDATA_PATH / "shop_client_table.json"))
|
||||
SKILL_TABLE = SkillTable.convert(
|
||||
{"skills": read_json(Path(__file__).parent / "skill_table.json")}
|
||||
)
|
||||
SKIN_TABLE = SkinTable.convert(read_json(GAMEDATA_PATH / "skin_table.json"))
|
||||
STAGE_TABLE = StageTable.convert(read_json(GAMEDATA_PATH / "stage_table.json"))
|
||||
STORY_REVIEW_META_TABLE = StoryReviewMetaTable.convert(
|
||||
read_json(GAMEDATA_PATH / "story_review_meta_table.json")
|
||||
)
|
||||
STORY_REVIEW_TABLE = StoryReviewTable.convert(
|
||||
{"storyreviewtable": read_json(GAMEDATA_PATH / "story_review_table.json")}
|
||||
)
|
||||
STORY_TABLE = StoryTable.convert({"stories": read_json(GAMEDATA_PATH / "story_table.json")})
|
||||
|
||||
TECH_BUFF_TABLE = TechBuffTable.convert(read_json(GAMEDATA_PATH / "tech_buff_table.json"))
|
||||
TIP_TABLE = TipTable.convert(read_json(GAMEDATA_PATH / "tip_table.json"))
|
||||
TOKEN_TABLE = TokenTable.convert({"tokens": read_json(GAMEDATA_PATH / "token_table.json")})
|
||||
|
||||
UNIEQUIP_DATA = UniequipData.convert(read_json(GAMEDATA_PATH / "uniequip_data.json"))
|
||||
UNIEQUIP_TABLE = UniEquipTable.convert(read_json(GAMEDATA_PATH / "uniequip_table.json"))
|
||||
ZONE_TABLE = ZoneTable.convert(read_json(GAMEDATA_PATH / "zone_table.json"))
|
||||
threading.Thread(target=lambda: asyncio.run(EXCEL.preload_table()), daemon=True).start()
|
||||
|
@ -33,9 +33,7 @@ async def get_role_img(uid: str):
|
||||
# secretary_charId = secretary.charId
|
||||
secretary_skinId = secretary.skinId.replace("@", "_")
|
||||
|
||||
secretary_char_img = (
|
||||
Image.open(SKINPACK_PATH / f"{secretary_skinId}b.png").resize((768, 768)).convert("RGBA")
|
||||
)
|
||||
secretary_char_img = Image.open(SKINPACK_PATH / f"{secretary_skinId}b.png").resize((768, 768)).convert("RGBA")
|
||||
char_info.paste(secretary_char_img, (0, -20), secretary_char_img)
|
||||
|
||||
# 放基础信息
|
||||
|
@ -3,8 +3,6 @@ import json
|
||||
import random
|
||||
|
||||
import aiohttp
|
||||
from msgspec import Struct, convert
|
||||
|
||||
from gsuid_core.aps import scheduler
|
||||
from gsuid_core.bot import Bot
|
||||
from gsuid_core.data_store import get_res_path
|
||||
@ -12,6 +10,7 @@ from gsuid_core.logger import logger
|
||||
from gsuid_core.models import Event
|
||||
from gsuid_core.subscribe import gs_subscribe
|
||||
from gsuid_core.sv import SV
|
||||
from msgspec import Struct, convert
|
||||
|
||||
from ..arknightsuid_config import PREFIX
|
||||
|
||||
@ -44,9 +43,7 @@ async def check_update() -> UpdateCheckResult:
|
||||
bool: if the resource version is updated
|
||||
"""
|
||||
async with aiohttp.ClientSession() as session:
|
||||
async with session.get(
|
||||
"https://ak-conf.hypergryph.com/config/prod/official/Android/version"
|
||||
) as response:
|
||||
async with session.get("https://ak-conf.hypergryph.com/config/prod/official/Android/version") as response:
|
||||
data = json.loads(await response.text())
|
||||
version = convert(data, VersionModel)
|
||||
|
||||
@ -58,19 +55,14 @@ async def check_update() -> UpdateCheckResult:
|
||||
json.dump(data, f, indent=2)
|
||||
|
||||
logger.info("First time checking version")
|
||||
return UpdateCheckResult(
|
||||
version=version, old_version=None, client_updated=False, res_updated=False
|
||||
)
|
||||
return UpdateCheckResult(version=version, old_version=None, client_updated=False, res_updated=False)
|
||||
else:
|
||||
with open(version_path, encoding="utf-8") as f:
|
||||
base_version_json = json.load(f)
|
||||
|
||||
base_version = convert(base_version_json, VersionModel)
|
||||
|
||||
if (
|
||||
version.clientVersion != base_version.clientVersion
|
||||
or version.resVersion != base_version.resVersion
|
||||
):
|
||||
if version.clientVersion != base_version.clientVersion or version.resVersion != base_version.resVersion:
|
||||
with open(version_path, "w", encoding="utf-8") as f:
|
||||
json.dump(data, f, indent=2)
|
||||
|
||||
@ -92,9 +84,7 @@ async def check_update() -> UpdateCheckResult:
|
||||
@sv_server_check.on_command("取明日方舟最新版本")
|
||||
async def get_latest_version(bot: Bot, ev: Event):
|
||||
result = await check_update()
|
||||
await bot.send(
|
||||
f"clientVersion: {result.version.clientVersion}\nresVersion: {result.version.resVersion}"
|
||||
)
|
||||
await bot.send(f"clientVersion: {result.version.clientVersion}\nresVersion: {result.version.resVersion}")
|
||||
|
||||
|
||||
@sv_server_check_sub.on_fullmatch(f"{PREFIX}订阅版本更新")
|
||||
|
@ -60,9 +60,7 @@ async def send_daily_sign():
|
||||
try:
|
||||
for bot_id in gss.active_bot:
|
||||
for single in private_msg_list[qid]:
|
||||
await gss.active_bot[bot_id].target_send(
|
||||
single["msg"], "direct", qid, single["bot_id"], "", ""
|
||||
)
|
||||
await gss.active_bot[bot_id].target_send(single["msg"], "direct", qid, single["bot_id"], "", "")
|
||||
except Exception as e:
|
||||
logger.warning(f"[ARK每日全部签到] QQ {qid} 私聊推送失败!错误信息:{e}")
|
||||
await asyncio.sleep(0.5)
|
||||
|
@ -1,8 +1,8 @@
|
||||
import asyncio
|
||||
import random
|
||||
from collections.abc import Sequence
|
||||
from copy import deepcopy
|
||||
from datetime import datetime
|
||||
from typing import Sequence
|
||||
|
||||
from gsuid_core.gss import gss
|
||||
from gsuid_core.logger import logger
|
||||
|
@ -26,9 +26,7 @@ ark_skd_cred_add = SV("森空岛cred绑定")
|
||||
# await bot.send(uid_list)
|
||||
|
||||
|
||||
@sv_user_info.on_command(
|
||||
(f"{PREFIX}绑定uid", f"{PREFIX}切换uid", f"{PREFIX}删除uid", f"{PREFIX}解绑uid")
|
||||
)
|
||||
@sv_user_info.on_command((f"{PREFIX}绑定uid", f"{PREFIX}切换uid", f"{PREFIX}删除uid", f"{PREFIX}解绑uid"))
|
||||
async def send_link_uid_msg(bot: Bot, ev: Event):
|
||||
await bot.logger.info("开始执行[绑定/解绑用户信息]")
|
||||
qid = ev.user_id
|
||||
@ -52,7 +50,7 @@ async def send_link_uid_msg(bot: Bot, ev: Event):
|
||||
)
|
||||
elif "切换" in ev.command:
|
||||
data = await ArknightsBind.switch_uid_by_game(qid, ev.bot_id, ark_uid)
|
||||
if isinstance(data, List):
|
||||
if isinstance(data, list):
|
||||
return await bot.send(f"切换ARK_UID{ark_uid}成功!")
|
||||
else:
|
||||
return await bot.send(f"尚未绑定该ARK_UID{ark_uid}")
|
||||
|
@ -3,9 +3,7 @@ import re
|
||||
from ..utils.ark_api import ark_skd_api
|
||||
from ..utils.database.models import ArknightsBind, ArknightsPush, ArknightsUser
|
||||
|
||||
ERROR_HINT = (
|
||||
"添加失败, 格式为: skd添加cred Cred 例如: skd添加cred VropL583Sb1hClS5buQ4nSASkDlL8tMT"
|
||||
)
|
||||
ERROR_HINT = "添加失败, 格式为: skd添加cred Cred 例如: skd添加cred VropL583Sb1hClS5buQ4nSASkDlL8tMT"
|
||||
UID_HINT = "添加失败, 请先绑定明日方舟UID"
|
||||
|
||||
|
||||
|
@ -8,7 +8,7 @@ from gsuid_core.utils.image.convert import convert_img
|
||||
from gsuid_core.utils.image.image_tools import draw_center_text_by_line
|
||||
from PIL import Image, ImageDraw
|
||||
|
||||
from ..arknightsuid_resource.constants import CHARACTER_TABLE
|
||||
from ..arknightsuid_resource.constants import EXCEL
|
||||
from ..arknightsuid_wiki.draw_wiki_img import (
|
||||
# draw_wiki,
|
||||
get_equip_info,
|
||||
@ -44,7 +44,7 @@ async def send_role_wiki_pic(bot: Bot, ev: Event):
|
||||
logger.info(char_name)
|
||||
|
||||
char_id = None
|
||||
for char_id_, char_info in CHARACTER_TABLE.chars.items():
|
||||
for char_id_, char_info in EXCEL.CHARATER_TABLE.chars.items():
|
||||
if char_info.name == char_name:
|
||||
char_id = char_id_
|
||||
break
|
||||
@ -62,7 +62,7 @@ async def send_equip_wiki_pic(bot: Bot, ev: Event):
|
||||
char_name = " ".join(re.findall("[\u4e00-\u9fa5]+", ev.text))
|
||||
|
||||
char_id = None
|
||||
for char_id_, char_info in CHARACTER_TABLE.chars.items():
|
||||
for char_id_, char_info in EXCEL.CHARATER_TABLE.chars.items():
|
||||
if char_info.name == char_name:
|
||||
char_id = char_id_
|
||||
break
|
||||
|
@ -2,20 +2,13 @@ import asyncio
|
||||
import re
|
||||
from pathlib import Path
|
||||
from pprint import pformat
|
||||
from typing import Dict, Union
|
||||
|
||||
from gsuid_core.utils.colortext.ColorText import ColorTextGroup, split_ctg
|
||||
from gsuid_core.utils.image.image_tools import draw_text_by_line
|
||||
from jinja2 import Template
|
||||
from PIL import Image, ImageDraw
|
||||
|
||||
from ..arknightsuid_resource.constants import (
|
||||
BATTLE_EQUIP_TABLE,
|
||||
CHARACTER_TABLE,
|
||||
RANGE_TABLE,
|
||||
SKILL_TABLE,
|
||||
UNIEQUIP_TABLE,
|
||||
)
|
||||
from ..arknightsuid_resource.constants import EXCEL
|
||||
from ..utils.fonts.source_han_sans import (
|
||||
sans_font_24,
|
||||
sans_font_34,
|
||||
@ -92,7 +85,7 @@ def test_ctg(length: int, *params):
|
||||
f_ = pformat(split_ctg(groups_, length)).split("\n")
|
||||
|
||||
|
||||
def render_template(template_str: str, data: Dict[str, Union[float, Union[int, None]]]):
|
||||
def render_template(template_str: str, data: dict[str, float | int | None]):
|
||||
matches = re.finditer(r"\{([^}:]+)\}", template_str)
|
||||
matches_1 = re.finditer(r"\{([^{}]+):([^{}]+)\}", template_str)
|
||||
|
||||
@ -132,15 +125,15 @@ async def get_equip_info(char_id: str):
|
||||
im = ""
|
||||
|
||||
try:
|
||||
char_equip_id_list = UNIEQUIP_TABLE.charEquip[char_id]
|
||||
char_equip_id_list = EXCEL.UNIEQUIP_TABLE.charEquip[char_id]
|
||||
except KeyError:
|
||||
return "该干员没有模组"
|
||||
for char_equip_id in char_equip_id_list:
|
||||
equip_dict = UNIEQUIP_TABLE.equipDict[char_equip_id]
|
||||
equip_dict = EXCEL.UNIEQUIP_TABLE.equipDict[char_equip_id]
|
||||
uniequip_name = equip_dict.uniEquipName
|
||||
|
||||
try:
|
||||
char_equip_phases = BATTLE_EQUIP_TABLE.equips[char_equip_id].phases
|
||||
char_equip_phases = EXCEL.BATTLE_EQUIP_TABLE.equips[char_equip_id].phases
|
||||
except KeyError:
|
||||
continue
|
||||
|
||||
@ -173,9 +166,7 @@ async def get_equip_info(char_id: str):
|
||||
blackboard_dict[blackboard_.key] = blackboard_.value
|
||||
if additionalDescription:
|
||||
additionalDescription = re.sub(r"<[^>]+>", "", additionalDescription)
|
||||
additionalDescription = render_template(
|
||||
additionalDescription, blackboard_dict
|
||||
)
|
||||
additionalDescription = render_template(additionalDescription, blackboard_dict)
|
||||
additionalDescription = re.sub(r".000000", "", additionalDescription)
|
||||
im += f"{additionalDescription}\n"
|
||||
|
||||
@ -202,9 +193,7 @@ async def get_equip_info(char_id: str):
|
||||
blackboard_dict[blackboard_.key] = blackboard_.value
|
||||
if additionalDescription and blackboard:
|
||||
additionalDescription = re.sub(r"<[^>]+>", "", additionalDescription)
|
||||
additionalDescription = render_template(
|
||||
additionalDescription, blackboard_dict
|
||||
)
|
||||
additionalDescription = render_template(additionalDescription, blackboard_dict)
|
||||
additionalDescription = re.sub(r".000000", "", additionalDescription)
|
||||
im += f"{additionalDescription}\n"
|
||||
|
||||
@ -230,9 +219,7 @@ async def get_equip_info(char_id: str):
|
||||
blackboard_dict[blackboard_.key] = blackboard_.value
|
||||
if overrideDescripton and blackboard:
|
||||
overrideDescripton = re.sub(r"<[^>]+>", "", overrideDescripton)
|
||||
overrideDescripton = render_template(
|
||||
overrideDescripton, blackboard_dict
|
||||
)
|
||||
overrideDescripton = render_template(overrideDescripton, blackboard_dict)
|
||||
im += f"{overrideDescripton}\n"
|
||||
else:
|
||||
raise NotImplementedError
|
||||
@ -247,20 +234,20 @@ async def get_equip_info(char_id: str):
|
||||
async def get_wiki_info(char_id: str):
|
||||
im = ""
|
||||
|
||||
character_data = CHARACTER_TABLE[char_id]
|
||||
character_data = EXCEL.CHARATER_TABLE.chars[char_id]
|
||||
|
||||
char_name = character_data.name
|
||||
im += f"干员名: {char_name}\n"
|
||||
im += "-----------------\n"
|
||||
char_rarity = character_data.rarity
|
||||
char_rarity = character_data.rarity.value
|
||||
im += f"星级: {char_rarity + 1!s}\n"
|
||||
im += "-----------------\n"
|
||||
profession = character_data.profession
|
||||
profession = character_data.profession.name
|
||||
im += f"职业: {profession_en_to_cn[profession]}\n"
|
||||
char_position = character_data.position
|
||||
im += f"攻击方式: {char_position_en_to_cn[char_position]}\n"
|
||||
sub_profession_id = character_data.subProfessionId
|
||||
sub_profession = UNIEQUIP_TABLE.subProfDict[sub_profession_id].subProfessionName
|
||||
sub_profession = EXCEL.UNIEQUIP_TABLE.subProfDict[sub_profession_id].subProfessionName
|
||||
im += f"子职业: {sub_profession}\n"
|
||||
im += "-----------------\n"
|
||||
nation_id = character_data.nationId
|
||||
@ -301,7 +288,7 @@ async def get_wiki_info(char_id: str):
|
||||
if potential.buff:
|
||||
potential_add_attribute = potential.buff.attributes.attributeModifiers
|
||||
if len(potential.buff.attributes.attributeModifiers) == 1:
|
||||
potential_add_attribute_type = potential_add_attribute[0].attributeType
|
||||
potential_add_attribute_type = potential_add_attribute[0].attributeType.value
|
||||
potential_add_attribute_value = potential_add_attribute[0].value
|
||||
potential_add_dict[potential_id] = (
|
||||
potential_add_attribute_type,
|
||||
@ -328,7 +315,7 @@ async def get_wiki_info(char_id: str):
|
||||
im += "技能:\n"
|
||||
|
||||
for skill in skill_id_list:
|
||||
skill_data = SKILL_TABLE.skills[skill]
|
||||
skill_data = EXCEL.SKILL_TABLE.skills[skill]
|
||||
skill_level_data = skill_data.levels[-1]
|
||||
skill_name = skill_level_data.name
|
||||
im += f"技能名: {skill_name}\n"
|
||||
@ -362,15 +349,13 @@ async def get_wiki_info(char_id: str):
|
||||
im += f"初始: {skill_sp_data.initSp} "
|
||||
im += f"持续: {skill_duration!s}\n"
|
||||
skill_blackboard_data = skill_level_data.blackboard
|
||||
black_board_dict: dict[str, Union[Union[int, float], None]] = {}
|
||||
black_board_dict: dict[str, int | float | None] = {}
|
||||
for black_board in skill_blackboard_data:
|
||||
black_board_dict[black_board.key] = black_board.value
|
||||
if skill_description:
|
||||
skill_description = skill_description.replace(":0.0", "")
|
||||
skill_description = re.sub(r"<[^>]+>", "", skill_description)
|
||||
skill_description = render_template(skill_description, black_board_dict).replace(
|
||||
"--", "-"
|
||||
)
|
||||
skill_description = render_template(skill_description, black_board_dict).replace("--", "-")
|
||||
last_skill_description = re.sub(r".000000", "", skill_description)
|
||||
if "{" in last_skill_description:
|
||||
raise NotImplementedError
|
||||
@ -392,7 +377,7 @@ async def draw_wiki(char_id: str):
|
||||
img.paste(vvan_img, (-700, -100), vvan_img)
|
||||
img.paste(title_img, (0, -50), title_img)
|
||||
|
||||
character_data = CHARACTER_TABLE[char_id]
|
||||
character_data = EXCEL.CHARATER_TABLE.chars[char_id]
|
||||
|
||||
char_name = character_data.name
|
||||
draw.text(
|
||||
@ -407,7 +392,7 @@ async def draw_wiki(char_id: str):
|
||||
rarity_img = Image.open(TEXTURE2D_PATH / f"rarity_yellow_{char_rarity}.png")
|
||||
img.paste(rarity_img, (960, 120), rarity_img)
|
||||
|
||||
profession = character_data.profession
|
||||
profession = character_data.profession.name
|
||||
profession_img = Image.open(TEXTURE2D_PATH / f"icon_{profession.lower()}.png")
|
||||
img.paste(profession_img, (1100, 7050), profession_img)
|
||||
|
||||
@ -427,7 +412,7 @@ async def draw_wiki(char_id: str):
|
||||
)
|
||||
|
||||
sub_profession_id = character_data.subProfessionId
|
||||
sub_profession = UNIEQUIP_TABLE.subProfDict[sub_profession_id].subProfessionName
|
||||
sub_profession = EXCEL.UNIEQUIP_TABLE.subProfDict[sub_profession_id].subProfessionName
|
||||
bar_img_draw.text(
|
||||
(360, 100),
|
||||
sub_profession,
|
||||
@ -589,7 +574,7 @@ async def draw_wiki(char_id: str):
|
||||
range_id = char_phases_data.rangeId
|
||||
attack_area_img = Image.open(TEXTURE2D_PATH / "attack_area.png")
|
||||
if range_id:
|
||||
range_data = RANGE_TABLE.range_[range_id]
|
||||
range_data = EXCEL.RANGE_TABLE.range_[range_id]
|
||||
grids = range_data.grids
|
||||
area_0 = Image.open(TEXTURE2D_PATH / "area_0.png").resize((58, 58))
|
||||
area_1 = Image.open(TEXTURE2D_PATH / "area_1.png")
|
||||
@ -608,7 +593,7 @@ async def draw_wiki(char_id: str):
|
||||
if potential.buff:
|
||||
potential_add_attribute = potential.buff.attributes.attributeModifiers
|
||||
if len(potential.buff.attributes.attributeModifiers) == 1:
|
||||
potential_add_attribute_type = potential_add_attribute[0].attributeType
|
||||
potential_add_attribute_type = potential_add_attribute[0].attributeType.value
|
||||
potential_add_attribute_value = potential_add_attribute[0].value
|
||||
potential_add_dict[potential_id] = (
|
||||
potential_add_attribute_type,
|
||||
@ -640,21 +625,19 @@ async def draw_wiki(char_id: str):
|
||||
skill_bg = Image.open(TEXTURE2D_PATH / "skill_bg.png")
|
||||
skill3_bar_bg = Image.open(TEXTURE2D_PATH / "skill3_bar.png")
|
||||
|
||||
skill_data = SKILL_TABLE.skills[skill]
|
||||
skill_data = EXCEL.SKILL_TABLE.skills[skill]
|
||||
skill_level_data = skill_data.levels[-1]
|
||||
skill_name = skill_level_data.name
|
||||
skill_description = skill_level_data.description
|
||||
skill_sp_data = skill_level_data.spData
|
||||
skill_duration = skill_level_data.duration
|
||||
skill_blackboard_data = skill_level_data.blackboard
|
||||
black_board_dict: dict[str, Union[Union[int, float], None]] = {}
|
||||
black_board_dict: dict[str, int | float | None] = {}
|
||||
for black_board in skill_blackboard_data:
|
||||
black_board_dict[black_board.key] = black_board.value
|
||||
if skill_description:
|
||||
skill_description = re.sub(r"<[^>]+>", "", skill_description)
|
||||
skill_description = render_template(skill_description, black_board_dict).replace(
|
||||
"--", "-"
|
||||
)
|
||||
skill_description = render_template(skill_description, black_board_dict).replace("--", "-")
|
||||
last_skill_description = re.sub(r".000000", "", skill_description)
|
||||
if "{" in last_skill_description:
|
||||
raise NotImplementedError
|
||||
|
@ -3,7 +3,7 @@ import hmac
|
||||
import json
|
||||
import time
|
||||
from copy import deepcopy
|
||||
from typing import Any, Dict, Literal, Tuple, Union, cast
|
||||
from typing import Any, Literal, cast
|
||||
from urllib.parse import urlparse
|
||||
|
||||
import msgspec
|
||||
@ -31,7 +31,7 @@ ssl_verify = core_plugins_config.get_config("MhySSLVerify").data
|
||||
# header["dId"] = await get_d_id()
|
||||
# return header
|
||||
|
||||
_HEADER: Dict[str, str] = {
|
||||
_HEADER: dict[str, str] = {
|
||||
"User-Agent": "Skland/1.28.0 (com.hypergryph.skland; build:102800063; Android 35; ) Okhttp/4.11.0",
|
||||
"Accept-Encoding": "gzip",
|
||||
"Connection": "close",
|
||||
@ -52,9 +52,7 @@ header_for_sign = {
|
||||
}
|
||||
|
||||
|
||||
def generate_signature(
|
||||
token: str, path: str, body_or_query: str, dId: str = ""
|
||||
) -> Tuple[str, Dict[str, str]]:
|
||||
def generate_signature(token: str, path: str, body_or_query: str, dId: str = "") -> tuple[str, dict[str, str]]:
|
||||
t = str(int(time.time()) - 2)
|
||||
_token = token.encode("utf-8")
|
||||
header_ca = header_for_sign.copy()
|
||||
@ -71,7 +69,7 @@ def get_sign_header(
|
||||
token: str,
|
||||
url: str,
|
||||
method: str,
|
||||
body: Union[dict[Any, Any], None],
|
||||
body: dict[Any, Any] | None,
|
||||
old_header: dict[str, str],
|
||||
):
|
||||
h = old_header.copy()
|
||||
@ -93,13 +91,13 @@ class TokenRefreshFailed(Exception):
|
||||
|
||||
|
||||
class BaseArkApi:
|
||||
proxy_url: Union[str, None] = proxy_url if proxy_url else None
|
||||
proxy_url: str | None = proxy_url if proxy_url else None
|
||||
|
||||
async def _pass(
|
||||
self,
|
||||
gt: str,
|
||||
ch: str,
|
||||
) -> Tuple[Union[str, None], Union[str, None]]:
|
||||
) -> tuple[str | None, str | None]:
|
||||
_pass_api = core_plugins_config.get_config("_pass_API").data
|
||||
if _pass_api:
|
||||
data = await self._ark_request(
|
||||
@ -119,15 +117,15 @@ class BaseArkApi:
|
||||
async def get_game_player_info(
|
||||
self,
|
||||
uid: str,
|
||||
) -> Union[int, ArknightsPlayerInfoModel]:
|
||||
cred: Union[str, None] = await ArknightsUser.get_user_attr_by_uid(
|
||||
) -> int | ArknightsPlayerInfoModel:
|
||||
cred: str | None = await ArknightsUser.get_user_attr_by_uid(
|
||||
uid=uid,
|
||||
attr="cred",
|
||||
)
|
||||
if cred is None:
|
||||
logger.info(f"cred is None {uid}")
|
||||
return -60
|
||||
token: Union[str, None] = await ArknightsUser.get_user_attr_by_uid(
|
||||
token: str | None = await ArknightsUser.get_user_attr_by_uid(
|
||||
uid=uid,
|
||||
attr="token",
|
||||
)
|
||||
@ -165,14 +163,14 @@ class BaseArkApi:
|
||||
else:
|
||||
return msgspec.convert(unpack_data, type=ArknightsPlayerInfoModel)
|
||||
|
||||
async def skd_sign(self, uid: str) -> Union[int, ArknightsAttendanceModel]:
|
||||
cred: Union[str, None] = await ArknightsUser.get_user_attr_by_uid(
|
||||
async def skd_sign(self, uid: str) -> int | ArknightsAttendanceModel:
|
||||
cred: str | None = await ArknightsUser.get_user_attr_by_uid(
|
||||
uid=uid,
|
||||
attr="cred",
|
||||
)
|
||||
if cred is None:
|
||||
return -60
|
||||
token: Union[str, None] = await ArknightsUser.get_user_attr_by_uid(
|
||||
token: str | None = await ArknightsUser.get_user_attr_by_uid(
|
||||
uid=uid,
|
||||
attr="token",
|
||||
)
|
||||
@ -206,14 +204,14 @@ class BaseArkApi:
|
||||
async def get_sign_info(
|
||||
self,
|
||||
uid: str,
|
||||
) -> Union[int, ArknightsAttendanceCalendarModel]:
|
||||
cred: Union[str, None] = await ArknightsUser.get_user_attr_by_uid(
|
||||
) -> int | ArknightsAttendanceCalendarModel:
|
||||
cred: str | None = await ArknightsUser.get_user_attr_by_uid(
|
||||
uid=uid,
|
||||
attr="cred",
|
||||
)
|
||||
if cred is None:
|
||||
return -60
|
||||
token: Union[str, None] = await ArknightsUser.get_user_attr_by_uid(
|
||||
token: str | None = await ArknightsUser.get_user_attr_by_uid(
|
||||
uid=uid,
|
||||
attr="token",
|
||||
)
|
||||
@ -242,10 +240,10 @@ class BaseArkApi:
|
||||
|
||||
async def check_cred_valid(
|
||||
self,
|
||||
cred: Union[str, None] = None,
|
||||
token: Union[str, None] = None,
|
||||
uid: Union[str, None] = None,
|
||||
) -> Union[bool, ArknightsUserMeModel]:
|
||||
cred: str | None = None,
|
||||
token: str | None = None,
|
||||
uid: str | None = None,
|
||||
) -> bool | ArknightsUserMeModel:
|
||||
if uid is not None:
|
||||
cred = (
|
||||
cred
|
||||
@ -282,14 +280,14 @@ class BaseArkApi:
|
||||
unpack_data = self.unpack(raw_data)
|
||||
return msgspec.convert(unpack_data, type=ArknightsUserMeModel)
|
||||
|
||||
def unpack(self, raw_data: Dict) -> Dict:
|
||||
def unpack(self, raw_data: dict) -> dict:
|
||||
try:
|
||||
data = raw_data["data"]
|
||||
return data
|
||||
except KeyError:
|
||||
return raw_data
|
||||
|
||||
async def refresh_token(self, cred: str, uid: Union[str, None] = None) -> str:
|
||||
async def refresh_token(self, cred: str, uid: str | None = None) -> str:
|
||||
header = deepcopy(_HEADER)
|
||||
header["cred"] = cred
|
||||
header["sign_enable"] = "false"
|
||||
@ -312,11 +310,11 @@ class BaseArkApi:
|
||||
self,
|
||||
url: str,
|
||||
method: Literal["GET", "POST"] = "GET",
|
||||
header: Dict[str, Any] = _HEADER,
|
||||
params: Union[Dict[str, Any], None] = None,
|
||||
data: Union[Dict[str, Any], None] = None,
|
||||
use_proxy: Union[bool, None] = False,
|
||||
) -> Union[Dict, Union[int, None]]:
|
||||
header: dict[str, Any] = _HEADER,
|
||||
params: dict[str, Any] | None = None,
|
||||
data: dict[str, Any] | None = None,
|
||||
use_proxy: bool | None = False,
|
||||
) -> dict | int | None:
|
||||
logger.debug(f"ark_request {url} {method} {header} {params} {data} {use_proxy}")
|
||||
try:
|
||||
raw_data = await self._ark_request(
|
||||
@ -347,11 +345,11 @@ class BaseArkApi:
|
||||
self,
|
||||
url: str,
|
||||
method: Literal["GET", "POST"] = "GET",
|
||||
header: Dict[str, Any] = _HEADER,
|
||||
params: Union[Dict[str, Any], None] = None,
|
||||
data: Union[Dict[str, Any], None] = None,
|
||||
use_proxy: Union[bool, None] = False,
|
||||
) -> Union[Dict, Union[int, None]]:
|
||||
header: dict[str, Any] = _HEADER,
|
||||
params: dict[str, Any] | None = None,
|
||||
data: dict[str, Any] | None = None,
|
||||
use_proxy: bool | None = False,
|
||||
) -> dict | int | None:
|
||||
async with ClientSession(
|
||||
connector=TCPConnector(verify_ssl=ssl_verify),
|
||||
) as client:
|
||||
|
@ -1,4 +1,5 @@
|
||||
from typing import Dict, Literal, Optional, Sequence, Type, TypeVar, Union
|
||||
from collections.abc import Sequence
|
||||
from typing import Literal, TypeVar
|
||||
|
||||
from gsuid_core.utils.database.base_models import (
|
||||
BaseModel,
|
||||
@ -17,14 +18,14 @@ T_ARK_User = TypeVar("T_ARK_User", bound="ArknightsUser")
|
||||
|
||||
|
||||
class ArknightsBind(Bind, table=True):
|
||||
uid: Union[str, None] = Field(default=None, title="明日方舟UID")
|
||||
uid: str | None = Field(default=None, title="明日方舟UID")
|
||||
|
||||
|
||||
class ArknightsUser(User, table=True):
|
||||
uid: Union[str, None] = Field(default=None, title="明日方舟UID")
|
||||
skd_uid: Union[str, None] = Field(default=None, title="SKD用户ID")
|
||||
cred: Union[str, None] = Field(default=None, title="SKD凭证")
|
||||
token: Union[str, None] = Field(default=None, title="SKD Token")
|
||||
uid: str | None = Field(default=None, title="明日方舟UID")
|
||||
skd_uid: str | None = Field(default=None, title="SKD用户ID")
|
||||
cred: str | None = Field(default=None, title="SKD凭证")
|
||||
token: str | None = Field(default=None, title="SKD Token")
|
||||
|
||||
@classmethod
|
||||
@with_session
|
||||
@ -32,7 +33,7 @@ class ArknightsUser(User, table=True):
|
||||
cls,
|
||||
session: AsyncSession,
|
||||
cred: str,
|
||||
) -> Union[BaseModel, None]:
|
||||
) -> BaseModel | None:
|
||||
sql = select(cls).where(cls.cred == cred)
|
||||
result = await session.execute(sql)
|
||||
data = result.scalars().all()
|
||||
@ -40,19 +41,19 @@ class ArknightsUser(User, table=True):
|
||||
|
||||
@classmethod
|
||||
@with_session
|
||||
async def get_all_user(cls: Type[T_ARK_User], session: AsyncSession) -> Sequence[T_ARK_User]:
|
||||
async def get_all_user(cls: type[T_ARK_User], session: AsyncSession) -> Sequence[T_ARK_User]:
|
||||
sql = select(cls).where(cls.cred is not None, cls.cred != "")
|
||||
result = await session.execute(sql)
|
||||
data: Sequence[T_ARK_User] = result.scalars().all()
|
||||
return data
|
||||
|
||||
@classmethod
|
||||
async def get_token_by_cred(cls, cred: str) -> Union[str, None]:
|
||||
async def get_token_by_cred(cls, cred: str) -> str | None:
|
||||
result = await cls.select_data_by_cred(cred)
|
||||
return getattr(result, "token") if result else None
|
||||
|
||||
@classmethod
|
||||
async def get_uid_by_cred(cls, cred: str) -> Union[str, None]:
|
||||
async def get_uid_by_cred(cls, cred: str) -> str | None:
|
||||
result = await cls.select_data_by_cred(cred)
|
||||
return getattr(result, "uid") if result else None
|
||||
|
||||
@ -74,21 +75,21 @@ class ArknightsUser(User, table=True):
|
||||
return not bool(retcode)
|
||||
|
||||
@classmethod
|
||||
async def update_user_data(cls, uid: str, data: Dict = {}):
|
||||
async def update_user_data(cls, uid: str, data: dict = {}):
|
||||
return await cls.update_data_by_uid(uid, cls.bot_id, None, **data)
|
||||
|
||||
|
||||
class ArknightsPush(Push, table=True):
|
||||
uid: Union[str, None] = Field(default=None, title="明日方舟UID")
|
||||
skd_uid: Union[str, None] = Field(default=None, title="森空岛用户ID")
|
||||
ap_push: Union[bool, None] = Field(default=False, title="理智推送")
|
||||
ap_value: Union[int, None] = Field(default=110, title="理智推送阈值")
|
||||
ap_is_push: Union[bool, None] = Field(default=False, title="理智是否已经推送")
|
||||
training_push: Union[bool, None] = Field(default=False, title="训练室推送")
|
||||
training_value: Union[int, None] = Field(default=30, title="训练室推送阈值")
|
||||
training_is_push: Union[bool, None] = Field(default=False, title="训练室是否已经推送")
|
||||
version_push: Union[bool, None] = Field(default=False, title="版本更新推送")
|
||||
version_is_push: Union[bool, None] = Field(default=False, title="版本更新是否已经推送")
|
||||
uid: str | None = Field(default=None, title="明日方舟UID")
|
||||
skd_uid: str | None = Field(default=None, title="森空岛用户ID")
|
||||
ap_push: bool | None = Field(default=False, title="理智推送")
|
||||
ap_value: int | None = Field(default=110, title="理智推送阈值")
|
||||
ap_is_push: bool | None = Field(default=False, title="理智是否已经推送")
|
||||
training_push: bool | None = Field(default=False, title="训练室推送")
|
||||
training_value: int | None = Field(default=30, title="训练室推送阈值")
|
||||
training_is_push: bool | None = Field(default=False, title="训练室是否已经推送")
|
||||
version_push: bool | None = Field(default=False, title="版本更新推送")
|
||||
version_is_push: bool | None = Field(default=False, title="版本更新是否已经推送")
|
||||
|
||||
@classmethod
|
||||
async def insert_push_data(cls, bot_id: str, uid: str, skd_uid: str):
|
||||
@ -106,9 +107,7 @@ class ArknightsPush(Push, table=True):
|
||||
|
||||
@classmethod
|
||||
@with_session
|
||||
async def base_select_data(
|
||||
cls: Type[T_BaseIDModel], session: AsyncSession, **data
|
||||
) -> Optional[T_BaseIDModel]:
|
||||
async def base_select_data(cls: type[T_BaseIDModel], session: AsyncSession, **data) -> T_BaseIDModel | None:
|
||||
stmt = select(cls)
|
||||
for k, v in data.items():
|
||||
stmt = stmt.where(getattr(cls, k) == v)
|
||||
@ -117,7 +116,7 @@ class ArknightsPush(Push, table=True):
|
||||
return data[0] if data else None
|
||||
|
||||
@classmethod
|
||||
async def update_push_data(cls, uid: str, data: Dict) -> bool:
|
||||
async def update_push_data(cls, uid: str, data: dict) -> bool:
|
||||
retcode = -1
|
||||
if await cls.data_exist(uid=uid):
|
||||
retcode = await cls.update_data_by_uid(
|
||||
@ -138,7 +137,7 @@ class ArknightsPush(Push, table=True):
|
||||
await cls.update_push_data(uid, {f"{mode}_is_push": status})
|
||||
|
||||
@classmethod
|
||||
async def select_push_data(cls: Type[T_BaseIDModel], uid: str) -> Union[T_BaseIDModel, None]:
|
||||
async def select_push_data(cls: type[T_BaseIDModel], uid: str) -> T_BaseIDModel | None:
|
||||
return await cls.base_select_data(uid=uid)
|
||||
|
||||
@classmethod
|
||||
|
@ -1,9 +1,7 @@
|
||||
from typing import Union
|
||||
|
||||
UID_HINT = "添加失败, 请先绑定明日方舟UID"
|
||||
|
||||
|
||||
def get_error(retcode: Union[int, str]) -> str:
|
||||
def get_error(retcode: int | str) -> str:
|
||||
if retcode == 10000:
|
||||
return "请求异常, 请检查具体实现代码..."
|
||||
if retcode == 10001:
|
||||
|
@ -1,11 +1,10 @@
|
||||
import json
|
||||
from pathlib import Path
|
||||
from typing import Dict
|
||||
|
||||
from loguru import logger
|
||||
|
||||
|
||||
def read_json(file_path: Path, **kwargs) -> Dict:
|
||||
def read_json(file_path: Path, **kwargs) -> dict:
|
||||
"""
|
||||
Read a JSON file and return its contents as a dictionary.
|
||||
"""
|
||||
@ -17,7 +16,7 @@ def read_json(file_path: Path, **kwargs) -> Dict:
|
||||
return {}
|
||||
|
||||
|
||||
def write_json(data: Dict, file_path: Path) -> None:
|
||||
def write_json(data: dict, file_path: Path) -> None:
|
||||
"""
|
||||
Write a dictionary to a JSON file.
|
||||
"""
|
||||
|
@ -1,5 +1,4 @@
|
||||
from pathlib import Path
|
||||
from typing import Union
|
||||
|
||||
from gsuid_core.utils.image.image_tools import CustomizeImage
|
||||
from PIL import Image
|
||||
@ -9,8 +8,6 @@ NM_BG_PATH = BG_PATH / "nm_bg"
|
||||
SP_BG_PATH = BG_PATH / "sp_bg"
|
||||
|
||||
|
||||
async def get_simple_bg(
|
||||
based_w: int, based_h: int, image: Union[str, Union[None, Image.Image]] = None
|
||||
) -> Image.Image:
|
||||
async def get_simple_bg(based_w: int, based_h: int, image: str | None | Image.Image = None) -> Image.Image:
|
||||
CIL = CustomizeImage(NM_BG_PATH)
|
||||
return CIL.get_image(image, based_w, based_h)
|
||||
|
@ -1,9 +1,9 @@
|
||||
from typing import Any, Dict, Union
|
||||
from typing import Any
|
||||
|
||||
from gsuid_core.bot import Bot
|
||||
|
||||
|
||||
async def send_diff_msg(bot: Bot, code: Any, data: Union[Dict, None] = None):
|
||||
async def send_diff_msg(bot: Bot, code: Any, data: dict | None = None):
|
||||
if data is None:
|
||||
data = {
|
||||
0: "绑定UID成功!",
|
||||
|
@ -1,69 +0,0 @@
|
||||
from collections.abc import Callable, Iterable, Iterator
|
||||
from copy import copy, deepcopy
|
||||
from typing import Any, Dict, Tuple, Type, TypeVar, Union
|
||||
|
||||
from msgspec import Struct, UnsetType, convert, field
|
||||
from msgspec import json as mscjson
|
||||
from typing_extensions import dataclass_transform
|
||||
|
||||
Model = TypeVar("Model", bound="BaseStruct")
|
||||
T = TypeVar("T")
|
||||
|
||||
|
||||
def transUnset(v: Union[T, UnsetType], d: Any = None) -> Union[T, Any]:
|
||||
return v if not isinstance(v, UnsetType) else d
|
||||
|
||||
|
||||
@dataclass_transform(field_specifiers=(field,))
|
||||
class BaseStruct(
|
||||
Struct,
|
||||
forbid_unknown_fields=True,
|
||||
omit_defaults=True,
|
||||
gc=False,
|
||||
):
|
||||
class Config:
|
||||
encoder = mscjson.Encoder()
|
||||
|
||||
@classmethod
|
||||
def convert(
|
||||
cls: Type[Model],
|
||||
obj: Any,
|
||||
*,
|
||||
strict: bool = True,
|
||||
from_attributes: bool = False,
|
||||
dec_hook: Union[Callable[[type, Any], Any], None] = None,
|
||||
builtin_types: Union[Iterable[type], None] = None,
|
||||
str_keys: bool = False,
|
||||
) -> Model:
|
||||
return convert(
|
||||
obj=obj,
|
||||
type=cls,
|
||||
strict=strict,
|
||||
from_attributes=from_attributes,
|
||||
dec_hook=dec_hook,
|
||||
builtin_types=builtin_types,
|
||||
str_keys=str_keys,
|
||||
)
|
||||
|
||||
def __iter__(self) -> Iterator[Tuple[str, Any]]:
|
||||
for field_name in self.__struct_fields__:
|
||||
yield field_name, getattr(self, field_name)
|
||||
|
||||
def __getattribute__(self, __name: str) -> Union[Any, None]:
|
||||
value = super().__getattribute__(__name)
|
||||
if isinstance(value, UnsetType):
|
||||
return None
|
||||
return value
|
||||
|
||||
def keys(self) -> Iterator[str]:
|
||||
yield from self.__struct_fields__
|
||||
|
||||
def values(self) -> Iterator[Any]:
|
||||
for field_name in self.__struct_fields__:
|
||||
yield getattr(self, field_name)
|
||||
|
||||
def model_dump(self) -> Dict[str, Any]:
|
||||
return mscjson.decode(mscjson.encode(self))
|
||||
|
||||
def model_copy(self: Model, *, deep: bool = False) -> Model:
|
||||
return deepcopy(self) if deep else copy(self)
|
File diff suppressed because it is too large
Load Diff
@ -1,105 +0,0 @@
|
||||
from typing import Dict, List, Union
|
||||
|
||||
from msgspec import field
|
||||
|
||||
from ..common import BaseStruct
|
||||
|
||||
|
||||
class BGMBank(BaseStruct):
|
||||
name: str
|
||||
intro: Union[str, None]
|
||||
loop: Union[str, None]
|
||||
volume: float
|
||||
crossfade: float
|
||||
delay: float
|
||||
fadeStyleId: Union[str, None] = None
|
||||
|
||||
|
||||
class SoundFXBankSoundFX(BaseStruct):
|
||||
asset: str
|
||||
weight: float
|
||||
important: bool
|
||||
is2D: bool
|
||||
delay: float
|
||||
minPitch: float
|
||||
maxPitch: float
|
||||
minVolume: float
|
||||
maxVolume: float
|
||||
ignoreTimeScale: bool
|
||||
|
||||
|
||||
class SoundFXBank(BaseStruct):
|
||||
name: str
|
||||
sounds: Union[List[SoundFXBankSoundFX], None]
|
||||
maxSoundAllowed: int
|
||||
popOldest: bool
|
||||
customMixerGroup: Union[str, None]
|
||||
loop: bool
|
||||
|
||||
|
||||
class SoundFXCtrlBank(BaseStruct):
|
||||
name: str
|
||||
targetBank: str
|
||||
ctrlStop: bool
|
||||
ctrlStopFadetime: float
|
||||
|
||||
|
||||
class SnapshotBank(BaseStruct):
|
||||
name: str
|
||||
targetSnapshot: str
|
||||
hookSoundFxBank: str
|
||||
delay: float
|
||||
duration: float
|
||||
targetFxBank: Union[str, None] = None
|
||||
|
||||
|
||||
class BattleVoiceOption(BaseStruct):
|
||||
voiceType: int
|
||||
priority: int
|
||||
overlapIfSamePriority: bool
|
||||
cooldown: float
|
||||
delay: float
|
||||
|
||||
|
||||
class MusicData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
name: str
|
||||
bank: str
|
||||
|
||||
|
||||
class BattleVoiceData(BaseStruct):
|
||||
crossfade: float
|
||||
minTimeDeltaForEnemyEncounter: float
|
||||
minSpCostForImportantPassiveSkill: int
|
||||
voiceTypeOptions: List[BattleVoiceOption]
|
||||
|
||||
|
||||
class AudioDataDucking(BaseStruct):
|
||||
bank: str
|
||||
volume: float
|
||||
fadeTime: float
|
||||
delay: float
|
||||
fadeStyleId: Union[str, None] = None
|
||||
|
||||
|
||||
class AudioDataFadeStyle(BaseStruct):
|
||||
styleName: str
|
||||
fadeinTime: float
|
||||
fadeoutTime: float
|
||||
fadeinType: str
|
||||
fadeoutType: str
|
||||
|
||||
|
||||
class AudioData(BaseStruct):
|
||||
__version__ = "24-02-02-10-18-07-831ad8"
|
||||
|
||||
bgmBanks: List[BGMBank]
|
||||
soundFXBanks: List[SoundFXBank]
|
||||
soundFXCtrlBanks: List[SoundFXCtrlBank]
|
||||
snapshotBanks: List[SnapshotBank]
|
||||
battleVoice: BattleVoiceData
|
||||
musics: List[MusicData]
|
||||
soundFxVoiceLang: Dict[str, Dict[str, Dict[str, str]]]
|
||||
bankAlias: Dict[str, str]
|
||||
duckings: List[AudioDataDucking]
|
||||
fadeStyles: List[AudioDataFadeStyle]
|
@ -1,83 +0,0 @@
|
||||
from typing import Dict, List, Union
|
||||
|
||||
from ..common import BaseStruct
|
||||
|
||||
|
||||
class CharacterDataUnlockCondition(BaseStruct):
|
||||
phase: int
|
||||
level: int
|
||||
|
||||
|
||||
class Blackboard(BaseStruct):
|
||||
key: str
|
||||
value: Union[float, None] = None
|
||||
valueStr: Union[str, None] = None
|
||||
|
||||
|
||||
class TalentData(BaseStruct):
|
||||
unlockCondition: CharacterDataUnlockCondition
|
||||
requiredPotentialRank: int
|
||||
prefabKey: Union[str, None]
|
||||
name: Union[str, None]
|
||||
description: Union[str, None]
|
||||
rangeId: Union[str, None]
|
||||
blackboard: List[Blackboard]
|
||||
|
||||
|
||||
class EquipTalentData(TalentData):
|
||||
displayRangeId: bool
|
||||
upgradeDescription: str
|
||||
talentIndex: int
|
||||
tokenKey: Union[str, None] = None
|
||||
|
||||
|
||||
class CharacterDataEquipTalentDataBundle(BaseStruct):
|
||||
candidates: Union[List[EquipTalentData], None]
|
||||
|
||||
|
||||
class CharacterDataTraitData(BaseStruct):
|
||||
unlockCondition: CharacterDataUnlockCondition
|
||||
requiredPotentialRank: int
|
||||
blackboard: List[Blackboard]
|
||||
overrideDescripton: Union[str, None]
|
||||
prefabKey: Union[str, None]
|
||||
rangeId: Union[str, None]
|
||||
|
||||
|
||||
class CharacterDataEquipTraitData(BaseStruct):
|
||||
additionalDescription: Union[str, None]
|
||||
unlockCondition: CharacterDataUnlockCondition
|
||||
requiredPotentialRank: int
|
||||
blackboard: List[Blackboard]
|
||||
overrideDescripton: Union[str, None]
|
||||
prefabKey: Union[str, None]
|
||||
rangeId: Union[str, None]
|
||||
|
||||
|
||||
class CharacterDataEquipTraitDataBundle(BaseStruct):
|
||||
candidates: Union[List[CharacterDataEquipTraitData], None]
|
||||
|
||||
|
||||
class BattleUniEquipData(BaseStruct):
|
||||
resKey: Union[str, None]
|
||||
target: str
|
||||
isToken: bool
|
||||
addOrOverrideTalentDataBundle: CharacterDataEquipTalentDataBundle
|
||||
overrideTraitDataBundle: CharacterDataEquipTraitDataBundle
|
||||
|
||||
|
||||
class BattleEquipPerLevelPack(BaseStruct):
|
||||
equipLevel: int
|
||||
parts: List[BattleUniEquipData]
|
||||
attributeBlackboard: List[Blackboard]
|
||||
tokenAttributeBlackboard: Dict[str, List[Blackboard]]
|
||||
|
||||
|
||||
class BattleEquipData(BaseStruct):
|
||||
phases: List[BattleEquipPerLevelPack]
|
||||
|
||||
|
||||
class BattleEquipTable(BaseStruct):
|
||||
__version__ = "24-02-02-10-18-07-831ad8"
|
||||
|
||||
equips: Dict[str, BattleEquipData]
|
@ -1,487 +0,0 @@
|
||||
from typing import Dict, List, Union
|
||||
|
||||
from msgspec import field
|
||||
|
||||
from ..common import BaseStruct
|
||||
|
||||
|
||||
class BuildingDataRoomUnlockCondCondItem(BaseStruct):
|
||||
type_: str = field(name="type")
|
||||
level: int
|
||||
count: int
|
||||
|
||||
|
||||
class BuildingDataRoomUnlockCond(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
number: Dict[str, BuildingDataRoomUnlockCondCondItem]
|
||||
|
||||
|
||||
class GridPosition(BaseStruct):
|
||||
row: int
|
||||
col: int
|
||||
|
||||
|
||||
class ItemBundle(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
count: int
|
||||
type_: str = field(name="type")
|
||||
|
||||
|
||||
class BuildingDataRoomDataBuildCost(BaseStruct):
|
||||
items: List[ItemBundle]
|
||||
time: int
|
||||
labor: int
|
||||
|
||||
|
||||
class BuildingDataRoomDataPhaseData(BaseStruct):
|
||||
overrideName: Union[str, None]
|
||||
overridePrefabId: Union[str, None]
|
||||
unlockCondId: str
|
||||
buildCost: BuildingDataRoomDataBuildCost
|
||||
electricity: int
|
||||
maxStationedNum: int
|
||||
manpowerCost: int
|
||||
|
||||
|
||||
class BuildingDataRoomData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
name: str
|
||||
description: Union[str, None]
|
||||
defaultPrefabId: str
|
||||
canLevelDown: bool
|
||||
maxCount: int
|
||||
category: str
|
||||
size: GridPosition
|
||||
phases: List[BuildingDataRoomDataPhaseData]
|
||||
|
||||
|
||||
class BuildingDataLayoutDataRoomSlot(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
cleanCostId: str
|
||||
costLabor: int
|
||||
provideLabor: int
|
||||
size: GridPosition
|
||||
offset: GridPosition
|
||||
category: str
|
||||
storeyId: str
|
||||
|
||||
|
||||
class BuildingDataLayoutDataSlotCleanCostCountCost(BaseStruct):
|
||||
items: List[ItemBundle]
|
||||
|
||||
|
||||
class BuildingDataLayoutDataSlotCleanCost(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
number: Dict[str, BuildingDataLayoutDataSlotCleanCostCountCost]
|
||||
|
||||
|
||||
class BuildingDataLayoutDataStoreyData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
yOffset: int
|
||||
unlockControlLevel: int
|
||||
type_: str = field(name="type")
|
||||
|
||||
|
||||
class BuildingDataLayoutData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
slots: Dict[str, BuildingDataLayoutDataRoomSlot]
|
||||
cleanCosts: Dict[str, BuildingDataLayoutDataSlotCleanCost]
|
||||
storeys: Dict[str, BuildingDataLayoutDataStoreyData]
|
||||
|
||||
|
||||
class BuildingDataPrefabInfo(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
blueprintRoomOverrideId: Union[str, None]
|
||||
size: GridPosition
|
||||
floorGridSize: GridPosition
|
||||
backWallGridSize: GridPosition
|
||||
obstacleId: Union[str, None]
|
||||
|
||||
|
||||
class BuildingDataManufactPhase(BaseStruct, tag="BuildingDataManufactPhase"):
|
||||
speed: Union[float, int]
|
||||
outputCapacity: int
|
||||
|
||||
|
||||
class BuildingDataShopPhase(BaseStruct, tag="BuildingDataShopPhase"):
|
||||
counterNum: int
|
||||
speed: Union[float, int]
|
||||
moneyCapacity: int
|
||||
|
||||
|
||||
class BuildingDataHirePhase(BaseStruct, tag="BuildingDataHirePhase"):
|
||||
economizeRate: float
|
||||
resSpeed: int
|
||||
refreshTimes: int
|
||||
|
||||
|
||||
class BuildingDataDormPhase(BaseStruct, tag="BuildingDataDormPhase"):
|
||||
manpowerRecover: int
|
||||
decorationLimit: int
|
||||
|
||||
|
||||
class BuildingDataMeetingPhase(BaseStruct, tag="BuildingDataMeetingPhase"):
|
||||
friendSlotInc: int
|
||||
maxVisitorNum: int
|
||||
gatheringSpeed: int
|
||||
|
||||
|
||||
class BuildingDataTradingPhase(BaseStruct, tag="BuildingDataTradingPhase"):
|
||||
orderSpeed: Union[float, int]
|
||||
orderLimit: int
|
||||
orderRarity: int
|
||||
|
||||
|
||||
class BuildingDataWorkshopPhase(BaseStruct, tag="BuildingDataWorkshopPhase"):
|
||||
manpowerFactor: Union[float, int]
|
||||
|
||||
|
||||
class BuildingDataTrainingPhase(BaseStruct, tag="BuildingDataTrainingPhase"):
|
||||
specSkillLvlLimit: int
|
||||
|
||||
|
||||
class BuildingDataShopRoomBean(BaseStruct):
|
||||
phases: None = None
|
||||
# phases: Union[List[Union[Union[Union[Union[Union[Union[Union[BuildingDataManufactPhase, BuildingDataShopPhase], BuildingDataHirePhase], BuildingDataDormPhase], BuildingDataMeetingPhase], BuildingDataTradingPhase], BuildingDataWorkshopPhase], BuildingDataTrainingPhase]], None] # noqa: E501
|
||||
|
||||
|
||||
class BuildingDataControlRoomBean(BaseStruct):
|
||||
basicCostBuff: int
|
||||
phases: None = None
|
||||
|
||||
|
||||
class BuildingDataManufactRoomBean(BaseStruct):
|
||||
basicSpeedBuff: float
|
||||
phases: List[BuildingDataManufactPhase]
|
||||
|
||||
|
||||
class BuildingDataHireRoomBean(BaseStruct):
|
||||
basicSpeedBuff: float
|
||||
phases: List[BuildingDataHirePhase]
|
||||
|
||||
|
||||
class BuildingDataDormRoomBean(BaseStruct):
|
||||
phases: List[BuildingDataDormPhase]
|
||||
|
||||
|
||||
class BuildingDataMeetingRoomBean(BaseStruct):
|
||||
basicSpeedBuff: float
|
||||
phases: List[BuildingDataMeetingPhase]
|
||||
|
||||
|
||||
class BuildingDataTradingRoomBean(BaseStruct):
|
||||
basicSpeedBuff: float
|
||||
phases: List[BuildingDataTradingPhase]
|
||||
|
||||
|
||||
class BuildingDataWorkShopRoomBean(BaseStruct):
|
||||
phases: List[BuildingDataWorkshopPhase]
|
||||
|
||||
|
||||
class BuildingDataTrainingBean(BaseStruct):
|
||||
basicSpeedBuff: float
|
||||
phases: List[BuildingDataTrainingPhase]
|
||||
|
||||
|
||||
class BuildingDataPowerRoomBean(BaseStruct):
|
||||
basicSpeedBuff: float
|
||||
phases: None = None
|
||||
|
||||
|
||||
class CharacterDataUnlockCondition(BaseStruct):
|
||||
phase: int
|
||||
level: int
|
||||
|
||||
|
||||
class BuildingDataBuildingBuffCharSlotSlotItem(BaseStruct):
|
||||
buffId: str
|
||||
cond: CharacterDataUnlockCondition
|
||||
|
||||
|
||||
class BuildingDataBuildingBuffCharSlot(BaseStruct):
|
||||
buffData: List[BuildingDataBuildingBuffCharSlotSlotItem]
|
||||
|
||||
|
||||
class BuildingDataBuildingCharacter(BaseStruct):
|
||||
charId: str
|
||||
maxManpower: int
|
||||
buffChar: List[BuildingDataBuildingBuffCharSlot]
|
||||
|
||||
|
||||
class BuildingDataBuildingBuff(BaseStruct):
|
||||
buffId: str
|
||||
buffName: str
|
||||
buffIcon: str
|
||||
skillIcon: str
|
||||
sortId: int
|
||||
buffColor: str
|
||||
textColor: str
|
||||
buffCategory: str
|
||||
roomType: str
|
||||
description: str
|
||||
|
||||
|
||||
class BuildingDataCustomDataFurnitureData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
sortId: int
|
||||
name: str
|
||||
iconId: str
|
||||
type_: str = field(name="type")
|
||||
subType: str
|
||||
location: str
|
||||
category: str
|
||||
validOnRotate: bool
|
||||
enableRotate: bool
|
||||
rarity: int
|
||||
themeId: str
|
||||
groupId: str
|
||||
width: int
|
||||
depth: int
|
||||
height: int
|
||||
comfort: int
|
||||
usage: str
|
||||
description: str
|
||||
obtainApproach: str
|
||||
processedProductId: str
|
||||
processedProductCount: int
|
||||
processedByProductPercentage: int
|
||||
processedByProductGroup: List
|
||||
canBeDestroy: bool
|
||||
isOnly: int
|
||||
quantity: int
|
||||
musicId: str
|
||||
interactType: Union[str, None] = None
|
||||
|
||||
|
||||
class BuildingDataCustomDataThemeQuickSetupItem(BaseStruct):
|
||||
furnitureId: str
|
||||
pos0: int
|
||||
pos1: int
|
||||
dir_: int = field(name="dir")
|
||||
|
||||
|
||||
class BuildingDataCustomDataThemeData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
sortId: int
|
||||
name: str
|
||||
themeType: str
|
||||
desc: str
|
||||
quickSetup: List[BuildingDataCustomDataThemeQuickSetupItem]
|
||||
groups: List[str]
|
||||
furnitures: List[str]
|
||||
|
||||
|
||||
class BuildingDataCustomDataGroupData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
sortId: int
|
||||
name: str
|
||||
themeId: str
|
||||
comfort: int
|
||||
count: int
|
||||
furniture: List[str]
|
||||
|
||||
|
||||
class BuildingDataCustomDataFurnitureTypeData(BaseStruct):
|
||||
type_: str = field(name="type")
|
||||
name: str
|
||||
|
||||
|
||||
class BuildingDataCustomDataFurnitureSubTypeData(BaseStruct):
|
||||
subType: str
|
||||
name: str
|
||||
type_: str = field(name="type")
|
||||
sortId: int
|
||||
|
||||
|
||||
class BuildingDataCustomDataDormitoryDefaultFurnitureItem(BaseStruct):
|
||||
furnitureId: str
|
||||
xOffset: int
|
||||
yOffset: int
|
||||
defaultPrefabId: str
|
||||
|
||||
|
||||
class BuildingDataCustomDataInteractItem(BaseStruct):
|
||||
skinId: str
|
||||
|
||||
|
||||
class BuildingDataCustomDataDiyUISortTemplateListDataDiyUISortTemplateData(
|
||||
BaseStruct,
|
||||
):
|
||||
name: str
|
||||
sequences: List[str]
|
||||
stableSequence: str
|
||||
stableSequenceOrder: str
|
||||
|
||||
|
||||
class BuildingDataCustomDataDiyUISortTemplateListData(BaseStruct):
|
||||
diyUIType: str
|
||||
expandState: str
|
||||
defaultTemplateIndex: int
|
||||
defaultTemplateOrder: str
|
||||
templates: List[BuildingDataCustomDataDiyUISortTemplateListDataDiyUISortTemplateData]
|
||||
|
||||
|
||||
class BuildingDataCustomData(BaseStruct):
|
||||
furnitures: Dict[str, BuildingDataCustomDataFurnitureData]
|
||||
themes: Dict[str, BuildingDataCustomDataThemeData]
|
||||
groups: Dict[str, BuildingDataCustomDataGroupData]
|
||||
types: Dict[str, BuildingDataCustomDataFurnitureTypeData]
|
||||
subTypes: Dict[str, BuildingDataCustomDataFurnitureSubTypeData]
|
||||
defaultFurnitures: Dict[
|
||||
str,
|
||||
List[BuildingDataCustomDataDormitoryDefaultFurnitureItem],
|
||||
]
|
||||
interactGroups: Dict[str, List[BuildingDataCustomDataInteractItem]]
|
||||
diyUISortTemplates: Dict[
|
||||
str,
|
||||
Dict[str, BuildingDataCustomDataDiyUISortTemplateListData],
|
||||
]
|
||||
|
||||
|
||||
class BuildingDataManufactFormulaUnlockRoom(BaseStruct):
|
||||
roomId: str
|
||||
roomLevel: int
|
||||
roomCount: int
|
||||
|
||||
|
||||
class BuildingDataManufactFormulaUnlockStage(BaseStruct):
|
||||
stageId: str
|
||||
rank: int
|
||||
|
||||
|
||||
class BuildingDataManufactFormula(BaseStruct):
|
||||
formulaId: str
|
||||
itemId: str
|
||||
count: int
|
||||
weight: int
|
||||
costPoint: int
|
||||
formulaType: str
|
||||
buffType: str
|
||||
costs: List[ItemBundle]
|
||||
requireRooms: List[BuildingDataManufactFormulaUnlockRoom]
|
||||
requireStages: List[BuildingDataManufactFormulaUnlockStage]
|
||||
|
||||
|
||||
class BuildingDataShopFormulaUnlockRoom(BaseStruct):
|
||||
roomId: str
|
||||
roomLevel: int
|
||||
|
||||
|
||||
class BuildingDataShopFormula(BaseStruct):
|
||||
formulaId: str
|
||||
itemId: str
|
||||
formulaType: str
|
||||
costPoint: int
|
||||
gainItem: ItemBundle
|
||||
requireRooms: List[BuildingDataShopFormulaUnlockRoom]
|
||||
|
||||
|
||||
class BuildingDataWorkshopExtraWeightItem(BaseStruct):
|
||||
weight: int
|
||||
itemId: str
|
||||
itemCount: int
|
||||
|
||||
|
||||
class BuildingDataWorkshopFormulaUnlockRoom(BaseStruct):
|
||||
roomId: str
|
||||
roomLevel: int
|
||||
roomCount: int
|
||||
|
||||
|
||||
class BuildingDataWorkshopFormulaUnlockStage(BaseStruct):
|
||||
stageId: str
|
||||
rank: int
|
||||
|
||||
|
||||
class BuildingDataWorkshopFormula(BaseStruct):
|
||||
sortId: int
|
||||
formulaId: str
|
||||
rarity: int
|
||||
itemId: str
|
||||
count: int
|
||||
goldCost: int
|
||||
apCost: int
|
||||
formulaType: str
|
||||
buffType: str
|
||||
extraOutcomeRate: float
|
||||
extraOutcomeGroup: List[BuildingDataWorkshopExtraWeightItem]
|
||||
costs: List[ItemBundle]
|
||||
requireRooms: List[BuildingDataWorkshopFormulaUnlockRoom]
|
||||
requireStages: List[BuildingDataWorkshopFormulaUnlockStage]
|
||||
|
||||
|
||||
class BuildingDataCreditFormulaValueModel(BaseStruct):
|
||||
basic: int
|
||||
addition: int
|
||||
|
||||
|
||||
class BuildingDataCreditFormula(BaseStruct):
|
||||
initiative: Dict
|
||||
passive: Dict
|
||||
|
||||
|
||||
class BuildingData(BaseStruct):
|
||||
__version__ = "24-02-02-10-18-07-831ad8"
|
||||
|
||||
controlSlotId: str
|
||||
meetingSlotId: str
|
||||
initMaxLabor: int
|
||||
laborRecoverTime: int
|
||||
manufactInputCapacity: int
|
||||
shopCounterCapacity: int
|
||||
comfortLimit: int
|
||||
creditInitiativeLimit: int
|
||||
creditPassiveLimit: int
|
||||
creditComfortFactor: int
|
||||
creditGuaranteed: int
|
||||
creditCeiling: int
|
||||
manufactUnlockTips: str
|
||||
shopUnlockTips: str
|
||||
manufactStationBuff: float
|
||||
comfortManpowerRecoverFactor: int
|
||||
manpowerDisplayFactor: int
|
||||
shopOutputRatio: Union[Dict[str, int], None]
|
||||
shopStackRatio: Union[Dict[str, int], None]
|
||||
basicFavorPerDay: int
|
||||
humanResourceLimit: int
|
||||
tiredApThreshold: int
|
||||
processedCountRatio: int
|
||||
trainingBonusMax: int
|
||||
tradingStrategyUnlockLevel: int
|
||||
tradingReduceTimeUnit: int
|
||||
tradingLaborCostUnit: int
|
||||
manufactReduceTimeUnit: int
|
||||
manufactLaborCostUnit: int
|
||||
laborAssistUnlockLevel: int
|
||||
apToLaborUnlockLevel: int
|
||||
apToLaborRatio: int
|
||||
socialResourceLimit: int
|
||||
socialSlotNum: int
|
||||
furniDuplicationLimit: int
|
||||
assistFavorReport: int
|
||||
manufactManpowerCostByNum: List[int]
|
||||
tradingManpowerCostByNum: List[int]
|
||||
roomUnlockConds: Dict[str, BuildingDataRoomUnlockCond]
|
||||
rooms: Dict[str, BuildingDataRoomData]
|
||||
layouts: Dict[str, BuildingDataLayoutData]
|
||||
prefabs: Dict[str, BuildingDataPrefabInfo]
|
||||
controlData: BuildingDataControlRoomBean
|
||||
manufactData: BuildingDataManufactRoomBean
|
||||
shopData: BuildingDataShopRoomBean
|
||||
hireData: BuildingDataHireRoomBean
|
||||
dormData: BuildingDataDormRoomBean
|
||||
meetingData: BuildingDataMeetingRoomBean
|
||||
tradingData: BuildingDataTradingRoomBean
|
||||
workshopData: BuildingDataWorkShopRoomBean
|
||||
trainingData: BuildingDataTrainingBean
|
||||
powerData: BuildingDataPowerRoomBean
|
||||
chars: Dict[str, BuildingDataBuildingCharacter]
|
||||
buffs: Dict[str, BuildingDataBuildingBuff]
|
||||
workshopBonus: Dict[str, List[str]]
|
||||
customData: BuildingDataCustomData
|
||||
manufactFormulas: Dict[str, BuildingDataManufactFormula]
|
||||
shopFormulas: Dict[str, BuildingDataShopFormula]
|
||||
workshopFormulas: Dict[str, BuildingDataWorkshopFormula]
|
||||
creditFormula: BuildingDataCreditFormula
|
||||
goldItems: Dict[str, int]
|
||||
assistantUnlock: List[int]
|
@ -1,159 +0,0 @@
|
||||
from typing import Dict, List, Union
|
||||
|
||||
from msgspec import field
|
||||
|
||||
from ..common import BaseStruct
|
||||
|
||||
|
||||
class ItemBundle(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
count: int
|
||||
type_: str = field(name="type")
|
||||
|
||||
|
||||
class CampaignDataBreakRewardLadder(BaseStruct):
|
||||
killCnt: int
|
||||
breakFeeAdd: int
|
||||
rewards: List[ItemBundle]
|
||||
|
||||
|
||||
class WeightItemBundle(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
type_: str = field(name="type")
|
||||
dropType: str
|
||||
count: int
|
||||
weight: int
|
||||
|
||||
|
||||
class StageDataDisplayRewards_(BaseStruct):
|
||||
type_: str = field(name="type")
|
||||
id_: str = field(name="id")
|
||||
dropType: int
|
||||
|
||||
|
||||
class StageDataDisplayDetailRewards_(StageDataDisplayRewards_):
|
||||
occPercent: int
|
||||
GetPercent: float
|
||||
CannotGetPercent: float
|
||||
|
||||
|
||||
class CampaignDataCampaignDropInfo(BaseStruct):
|
||||
firstPassRewards: Union[List[ItemBundle], None]
|
||||
passRewards: Union[List[List[WeightItemBundle]], None]
|
||||
displayDetailRewards: Union[List[StageDataDisplayDetailRewards_], None]
|
||||
|
||||
|
||||
class CampaignDataDropLadder(BaseStruct):
|
||||
killCnt: int
|
||||
dropInfo: CampaignDataCampaignDropInfo
|
||||
|
||||
|
||||
class CampaignDataGainLadder(BaseStruct):
|
||||
killCnt: int
|
||||
apFailReturn: int
|
||||
favor: int
|
||||
expGain: int
|
||||
goldGain: int
|
||||
displayDiamondShdNum: int
|
||||
|
||||
|
||||
class StageDataDisplayRewards(BaseStruct):
|
||||
type_: str = field(name="type")
|
||||
id_: str = field(name="id")
|
||||
dropType: int
|
||||
|
||||
|
||||
class StageDataDisplayDetailRewards(BaseStruct):
|
||||
occPercent: int
|
||||
type_: str = field(name="type")
|
||||
id_: str = field(name="id")
|
||||
dropType: int
|
||||
|
||||
|
||||
class CampaignDataDropGainInfo(BaseStruct):
|
||||
dropLadders: List[CampaignDataDropLadder]
|
||||
gainLadders: List[CampaignDataGainLadder]
|
||||
displayRewards: List[StageDataDisplayRewards]
|
||||
displayDetailRewards: List[StageDataDisplayDetailRewards]
|
||||
|
||||
|
||||
class CampaignData(BaseStruct):
|
||||
stageId: str
|
||||
isSmallScale: int
|
||||
breakLadders: List[CampaignDataBreakRewardLadder]
|
||||
isCustomized: bool
|
||||
dropGains: Dict[str, CampaignDataDropGainInfo]
|
||||
|
||||
|
||||
class CampaignGroupData(BaseStruct):
|
||||
groupId: str
|
||||
activeCamps: List[str]
|
||||
startTs: int
|
||||
endTs: int
|
||||
|
||||
|
||||
class CampaignRegionData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
isUnknwon: int
|
||||
|
||||
|
||||
class CampaignZoneData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
name: str
|
||||
regionId: str
|
||||
templateId: str
|
||||
|
||||
|
||||
class CampaignMissionData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
sortId: int
|
||||
param: List[str]
|
||||
description: str
|
||||
breakFeeAdd: int
|
||||
|
||||
|
||||
class CampaignConstTable(BaseStruct):
|
||||
systemPreposedStage: str
|
||||
rotateStartTime: int
|
||||
rotatePreposedStage: str
|
||||
zoneUnlockStage: str
|
||||
firstRotateRegion: str
|
||||
sweepStartTime: int
|
||||
|
||||
|
||||
class CampaignRotateOpenTimeData(BaseStruct):
|
||||
groupId: str
|
||||
stageId: str
|
||||
mapId: str
|
||||
unknownRegions: List[str]
|
||||
duration: int
|
||||
startTs: int
|
||||
endTs: int
|
||||
|
||||
|
||||
class CampaignTrainingOpenTimeData(BaseStruct):
|
||||
groupId: str
|
||||
stages: List[str]
|
||||
startTs: int
|
||||
endTs: int
|
||||
|
||||
|
||||
class CampaignTrainingAllOpenTimeData(BaseStruct):
|
||||
groupId: str
|
||||
startTs: int
|
||||
endTs: int
|
||||
|
||||
|
||||
class CampaignTable(BaseStruct):
|
||||
__version__ = "24-02-02-10-18-07-831ad8"
|
||||
|
||||
campaigns: Dict[str, CampaignData]
|
||||
campaignGroups: Dict[str, CampaignGroupData]
|
||||
campaignRegions: Dict[str, CampaignRegionData]
|
||||
campaignZones: Dict[str, CampaignZoneData]
|
||||
campaignMissions: Dict[str, CampaignMissionData]
|
||||
stageIndexInZoneMap: Dict[str, int]
|
||||
campaignConstTable: CampaignConstTable
|
||||
campaignRotateStageOpenTimes: List[CampaignRotateOpenTimeData]
|
||||
campaignTrainingStageOpenTimes: List[CampaignTrainingOpenTimeData]
|
||||
campaignTrainingAllOpenTimes: List[CampaignTrainingAllOpenTimeData]
|
@ -1,20 +0,0 @@
|
||||
from typing import Dict, Union
|
||||
|
||||
from ..common import BaseStruct
|
||||
|
||||
|
||||
class ChapterData(BaseStruct):
|
||||
chapterId: str
|
||||
chapterName: str
|
||||
chapterName2: str
|
||||
chapterIndex: int
|
||||
preposedChapterId: Union[str, None]
|
||||
startZoneId: str
|
||||
endZoneId: str
|
||||
chapterEndStageId: str
|
||||
|
||||
|
||||
class ChapterTable(BaseStruct):
|
||||
__version__ = "24-02-02-10-18-07-831ad8"
|
||||
|
||||
chapters: Dict[str, ChapterData]
|
@ -1,28 +0,0 @@
|
||||
from typing import Dict, List
|
||||
|
||||
from msgspec import field
|
||||
|
||||
from ..common import BaseStruct
|
||||
|
||||
|
||||
class ItemBundle(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
count: int
|
||||
type_: str = field(name="type")
|
||||
|
||||
|
||||
class SpCharMissionData(BaseStruct):
|
||||
charId: str
|
||||
missionId: str
|
||||
sortId: int
|
||||
condType: str
|
||||
param: List[str]
|
||||
rewards: List[ItemBundle]
|
||||
|
||||
|
||||
class CharMetaTable(BaseStruct):
|
||||
__version__ = "24-02-02-10-18-07-831ad8"
|
||||
|
||||
spCharGroups: Dict[str, List[str]]
|
||||
spCharMissions: Dict[str, Dict[str, SpCharMissionData]]
|
||||
spCharVoucherSkinTime: Dict[str, int]
|
@ -1,200 +0,0 @@
|
||||
from typing import Dict, List, Union
|
||||
|
||||
from msgspec import field
|
||||
|
||||
from ..common import BaseStruct
|
||||
|
||||
|
||||
class CharPatchDataPatchInfo(BaseStruct):
|
||||
tmplIds: List[str]
|
||||
default: str
|
||||
|
||||
|
||||
class CharacterDataUnlockCondition(BaseStruct):
|
||||
phase: int
|
||||
level: int
|
||||
|
||||
|
||||
class Blackboard(BaseStruct):
|
||||
key: str
|
||||
value: Union[float, None] = None
|
||||
valueStr: Union[str, None] = None
|
||||
|
||||
|
||||
class CharacterDataTraitData(BaseStruct):
|
||||
unlockCondition: CharacterDataUnlockCondition
|
||||
requiredPotentialRank: int
|
||||
blackboard: List[Blackboard]
|
||||
overrideDescripton: Union[str, None]
|
||||
prefabKey: Union[str, None]
|
||||
rangeId: Union[str, None]
|
||||
|
||||
|
||||
class CharacterDataTraitDataBundle(BaseStruct):
|
||||
candidates: List[CharacterDataTraitData]
|
||||
|
||||
|
||||
class AttributesData(BaseStruct):
|
||||
maxHp: int
|
||||
atk: int
|
||||
def_: int = field(name="def")
|
||||
magicResistance: float
|
||||
cost: int
|
||||
blockCnt: int
|
||||
moveSpeed: float
|
||||
attackSpeed: float
|
||||
baseAttackTime: float
|
||||
respawnTime: int
|
||||
hpRecoveryPerSec: float
|
||||
spRecoveryPerSec: float
|
||||
maxDeployCount: int
|
||||
maxDeckStackCnt: int
|
||||
tauntLevel: int
|
||||
massLevel: int
|
||||
baseForceLevel: int
|
||||
stunImmune: bool
|
||||
silenceImmune: bool
|
||||
sleepImmune: bool
|
||||
frozenImmune: bool
|
||||
levitateImmune: bool
|
||||
disarmedCombatImmune: bool
|
||||
|
||||
|
||||
class CharacterDataAttributesKeyFrame(BaseStruct):
|
||||
level: int
|
||||
data: AttributesData
|
||||
|
||||
|
||||
class ItemBundle(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
count: int
|
||||
type_: str = field(name="type")
|
||||
|
||||
|
||||
class CharacterDataPhaseData(BaseStruct):
|
||||
characterPrefabKey: str
|
||||
rangeId: Union[str, None]
|
||||
maxLevel: int
|
||||
attributesKeyFrames: List[CharacterDataAttributesKeyFrame]
|
||||
evolveCost: Union[List[ItemBundle], None]
|
||||
|
||||
|
||||
class CharacterDataMainSkillSpecializeLevelData(BaseStruct):
|
||||
unlockCond: CharacterDataUnlockCondition
|
||||
lvlUpTime: int
|
||||
levelUpCost: Union[List[ItemBundle], None]
|
||||
|
||||
|
||||
class CharacterDataMainSkill(BaseStruct):
|
||||
skillId: Union[str, None]
|
||||
overridePrefabKey: Union[str, None]
|
||||
overrideTokenKey: Union[str, None]
|
||||
levelUpCostCond: List[CharacterDataMainSkillSpecializeLevelData]
|
||||
unlockCond: CharacterDataUnlockCondition
|
||||
|
||||
|
||||
class TalentData(BaseStruct):
|
||||
unlockCondition: CharacterDataUnlockCondition
|
||||
requiredPotentialRank: int
|
||||
prefabKey: str
|
||||
name: Union[str, None]
|
||||
description: Union[str, None]
|
||||
rangeId: Union[str, None]
|
||||
blackboard: List[Blackboard]
|
||||
displayRange: bool
|
||||
|
||||
|
||||
class CharacterDataTalentDataBundle(BaseStruct):
|
||||
candidates: Union[List[TalentData], None]
|
||||
|
||||
|
||||
class AttributeModifierDataAttributeModifier(BaseStruct):
|
||||
attributeType: int
|
||||
formulaItem: int
|
||||
value: float
|
||||
loadFromBlackboard: bool
|
||||
fetchBaseValueFromSourceEntity: bool
|
||||
|
||||
|
||||
class AttributeModifierData(BaseStruct):
|
||||
abnormalFlags: Union[List[str], None]
|
||||
abnormalImmunes: Union[List[str], None]
|
||||
abnormalAntis: Union[List[str], None]
|
||||
abnormalCombos: Union[List[str], None]
|
||||
abnormalComboImmunes: Union[List[str], None]
|
||||
attributeModifiers: List[AttributeModifierDataAttributeModifier]
|
||||
|
||||
|
||||
class ExternalBuff(BaseStruct):
|
||||
attributes: AttributeModifierData
|
||||
|
||||
|
||||
class CharacterDataPotentialRank(BaseStruct):
|
||||
type_: int = field(name="type")
|
||||
description: str
|
||||
buff: Union[ExternalBuff, None]
|
||||
equivalentCost: Union[ItemBundle, None]
|
||||
|
||||
|
||||
class CharacterDataSkillLevelCost(BaseStruct):
|
||||
unlockCond: CharacterDataUnlockCondition
|
||||
lvlUpCost: Union[List[ItemBundle], None]
|
||||
|
||||
|
||||
class CharacterData(BaseStruct):
|
||||
name: str
|
||||
description: Union[str, None]
|
||||
canUseGeneralPotentialItem: bool
|
||||
canUseActivityPotentialItem: bool
|
||||
potentialItemId: Union[str, None]
|
||||
activityPotentialItemId: Union[str, None]
|
||||
nationId: Union[str, None]
|
||||
groupId: Union[str, None]
|
||||
teamId: Union[str, None]
|
||||
displayNumber: Union[str, None]
|
||||
appellation: str
|
||||
position: str
|
||||
tagList: Union[List[str], None]
|
||||
itemUsage: Union[str, None]
|
||||
itemDesc: Union[str, None]
|
||||
itemObtainApproach: Union[str, None]
|
||||
isNotObtainable: bool
|
||||
isSpChar: bool
|
||||
maxPotentialLevel: int
|
||||
rarity: int
|
||||
profession: str
|
||||
subProfessionId: str
|
||||
trait: Union[CharacterDataTraitDataBundle, None]
|
||||
phases: List[CharacterDataPhaseData]
|
||||
skills: List[CharacterDataMainSkill]
|
||||
talents: Union[List[CharacterDataTalentDataBundle], None]
|
||||
potentialRanks: List[CharacterDataPotentialRank]
|
||||
favorKeyFrames: Union[List[CharacterDataAttributesKeyFrame], None]
|
||||
allSkillLvlup: List[CharacterDataSkillLevelCost]
|
||||
minPowerId: str
|
||||
maxPowerId: str
|
||||
tokenKey: Union[str, None] = None
|
||||
|
||||
|
||||
class CharPatchDataUnlockCondItem(BaseStruct):
|
||||
stageId: str
|
||||
completeState: int
|
||||
|
||||
|
||||
class CharPatchDataUnlockCond(BaseStruct):
|
||||
conds: List[CharPatchDataUnlockCondItem]
|
||||
|
||||
|
||||
class CharPatchDataPatchDetailInfo(BaseStruct):
|
||||
patchId: str
|
||||
sortId: int
|
||||
infoParam: str
|
||||
|
||||
|
||||
class CharPatchTable(BaseStruct):
|
||||
__version__ = "24-02-02-10-18-07-831ad8"
|
||||
|
||||
infos: Dict[str, CharPatchDataPatchInfo]
|
||||
patchChars: Dict[str, CharacterData]
|
||||
unlockConds: Dict[str, CharPatchDataUnlockCond]
|
||||
patchDetailInfoList: Dict[str, CharPatchDataPatchDetailInfo]
|
@ -1,184 +0,0 @@
|
||||
from typing import Dict, List, Union
|
||||
|
||||
from msgspec import field
|
||||
|
||||
from ..common import BaseStruct
|
||||
|
||||
|
||||
class CharacterDataUnlockCondition(BaseStruct):
|
||||
phase: int
|
||||
level: int
|
||||
|
||||
|
||||
class Blackboard(BaseStruct):
|
||||
key: str
|
||||
value: Union[float, None] = None
|
||||
valueStr: Union[str, None] = None
|
||||
|
||||
|
||||
class CharacterDataTraitData(BaseStruct):
|
||||
unlockCondition: CharacterDataUnlockCondition
|
||||
requiredPotentialRank: int
|
||||
blackboard: List[Blackboard]
|
||||
overrideDescripton: Union[str, None]
|
||||
prefabKey: Union[str, None]
|
||||
rangeId: Union[str, None]
|
||||
additionalDesc: str
|
||||
|
||||
|
||||
class CharacterDataTraitDataBundle(BaseStruct):
|
||||
candidates: List[CharacterDataTraitData]
|
||||
|
||||
|
||||
class AttributesData(BaseStruct):
|
||||
maxHp: int
|
||||
atk: int
|
||||
def_: int = field(name="def")
|
||||
magicResistance: float
|
||||
cost: int
|
||||
blockCnt: int
|
||||
moveSpeed: float
|
||||
attackSpeed: float
|
||||
baseAttackTime: float
|
||||
respawnTime: int
|
||||
hpRecoveryPerSec: float
|
||||
spRecoveryPerSec: float
|
||||
maxDeployCount: int
|
||||
maxDeckStackCnt: int
|
||||
tauntLevel: int
|
||||
massLevel: int
|
||||
baseForceLevel: int
|
||||
stunImmune: bool
|
||||
silenceImmune: bool
|
||||
sleepImmune: bool
|
||||
frozenImmune: bool
|
||||
levitateImmune: bool
|
||||
disarmedCombatImmune: bool
|
||||
|
||||
|
||||
class CharacterDataAttributesKeyFrame(BaseStruct):
|
||||
level: int
|
||||
data: AttributesData
|
||||
|
||||
|
||||
class ItemBundle(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
count: int
|
||||
type_: str = field(name="type")
|
||||
|
||||
|
||||
class CharacterDataPhaseData(BaseStruct):
|
||||
characterPrefabKey: str
|
||||
rangeId: Union[str, None]
|
||||
maxLevel: int
|
||||
attributesKeyFrames: List[CharacterDataAttributesKeyFrame]
|
||||
evolveCost: Union[List[ItemBundle], None]
|
||||
|
||||
|
||||
class CharacterDataMainSkillSpecializeLevelData(BaseStruct):
|
||||
unlockCond: CharacterDataUnlockCondition
|
||||
lvlUpTime: int
|
||||
levelUpCost: Union[List[ItemBundle], None]
|
||||
|
||||
|
||||
class CharacterDataMainSkill(BaseStruct):
|
||||
skillId: Union[str, None]
|
||||
overridePrefabKey: Union[str, None]
|
||||
overrideTokenKey: Union[str, None]
|
||||
levelUpCostCond: List[CharacterDataMainSkillSpecializeLevelData]
|
||||
unlockCond: CharacterDataUnlockCondition
|
||||
|
||||
|
||||
class TalentData(BaseStruct):
|
||||
unlockCondition: CharacterDataUnlockCondition
|
||||
requiredPotentialRank: int
|
||||
prefabKey: str
|
||||
name: Union[str, None]
|
||||
description: Union[str, None]
|
||||
rangeId: Union[str, None]
|
||||
blackboard: List[Blackboard]
|
||||
displayRange: bool
|
||||
tokenKey: Union[str, None] = None
|
||||
|
||||
|
||||
class CharacterDataTalentDataBundle(BaseStruct):
|
||||
candidates: Union[List[TalentData], None]
|
||||
|
||||
|
||||
class AttributeModifierDataAttributeModifier(BaseStruct):
|
||||
attributeType: int
|
||||
formulaItem: int
|
||||
value: float
|
||||
loadFromBlackboard: bool
|
||||
fetchBaseValueFromSourceEntity: bool
|
||||
|
||||
|
||||
class AttributeModifierData(BaseStruct):
|
||||
abnormalFlags: Union[List[str], None]
|
||||
abnormalImmunes: Union[List[str], None]
|
||||
abnormalAntis: Union[List[str], None]
|
||||
abnormalCombos: Union[List[str], None]
|
||||
abnormalComboImmunes: Union[List[str], None]
|
||||
attributeModifiers: List[AttributeModifierDataAttributeModifier]
|
||||
|
||||
|
||||
class ExternalBuff(BaseStruct):
|
||||
attributes: AttributeModifierData
|
||||
|
||||
|
||||
class CharacterDataPotentialRank(BaseStruct):
|
||||
type_: int = field(name="type")
|
||||
description: str
|
||||
buff: Union[ExternalBuff, None]
|
||||
equivalentCost: Union[ItemBundle, None]
|
||||
|
||||
|
||||
class CharacterDataSkillLevelCost(BaseStruct):
|
||||
unlockCond: CharacterDataUnlockCondition
|
||||
lvlUpCost: Union[List[ItemBundle], None]
|
||||
|
||||
|
||||
class CharacterData(BaseStruct):
|
||||
name: str
|
||||
description: Union[str, None]
|
||||
canUseGeneralPotentialItem: bool
|
||||
canUseActivityPotentialItem: bool
|
||||
potentialItemId: Union[str, None]
|
||||
activityPotentialItemId: Union[str, None]
|
||||
nationId: Union[str, None]
|
||||
groupId: Union[str, None]
|
||||
teamId: Union[str, None]
|
||||
displayNumber: Union[str, None]
|
||||
appellation: str
|
||||
position: str
|
||||
tagList: Union[List[str], None]
|
||||
itemUsage: Union[str, None]
|
||||
itemDesc: Union[str, None]
|
||||
itemObtainApproach: Union[str, None]
|
||||
isNotObtainable: bool
|
||||
isSpChar: bool
|
||||
maxPotentialLevel: int
|
||||
rarity: int
|
||||
profession: str
|
||||
subProfessionId: str
|
||||
trait: Union[CharacterDataTraitDataBundle, None]
|
||||
phases: List[CharacterDataPhaseData]
|
||||
skills: List[CharacterDataMainSkill]
|
||||
talents: Union[List[CharacterDataTalentDataBundle], None]
|
||||
potentialRanks: List[CharacterDataPotentialRank]
|
||||
favorKeyFrames: Union[List[CharacterDataAttributesKeyFrame], None]
|
||||
allSkillLvlup: List[CharacterDataSkillLevelCost]
|
||||
minPowerId: str
|
||||
maxPowerId: str
|
||||
displayTokenDict: Union[Dict[str, bool], None] = None
|
||||
classicPotentialItemId: Union[str, None] = None
|
||||
tokenKey: Union[str, None] = None
|
||||
|
||||
|
||||
class CharacterTable(BaseStruct):
|
||||
__version__ = "24-02-02-10-18-07-831ad8"
|
||||
|
||||
chars: Dict[str, CharacterData]
|
||||
|
||||
def __getitem__(self, key: str) -> CharacterData:
|
||||
return self.chars[key]
|
@ -1,66 +0,0 @@
|
||||
from typing import List, Union
|
||||
|
||||
from msgspec import field
|
||||
|
||||
from ..common import BaseStruct
|
||||
|
||||
|
||||
class RuneDataSelector(BaseStruct):
|
||||
professionMask: Union[int, str]
|
||||
buildableMask: int
|
||||
charIdFilter: Union[List[str], None]
|
||||
enemyIdFilter: Union[List[str], None]
|
||||
enemyIdExcludeFilter: Union[List[str], None]
|
||||
enemyLevelTypeFilter: Union[List[str], None]
|
||||
skillIdFilter: Union[List[str], None]
|
||||
tileKeyFilter: Union[List[str], None]
|
||||
groupTagFilter: Union[List[str], None]
|
||||
filterTagFilter: Union[List[str], None]
|
||||
filterTagExcludeFilter: Union[List[str], None]
|
||||
subProfessionExcludeFilter: Union[List[str], None]
|
||||
mapTagFilter: Union[List[str], None]
|
||||
|
||||
|
||||
class Blackboard(BaseStruct):
|
||||
key: str
|
||||
value: Union[float, None] = None
|
||||
valueStr: Union[str, None] = None
|
||||
|
||||
|
||||
class RuneData(BaseStruct):
|
||||
key: str
|
||||
selector: RuneDataSelector
|
||||
blackboard: List[Blackboard]
|
||||
|
||||
|
||||
class RuneTablePackedRuneData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
points: float
|
||||
mutexGroupKey: Union[str, None]
|
||||
description: str
|
||||
runes: List[RuneData]
|
||||
|
||||
|
||||
class CharmItemData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
sort: int
|
||||
name: str
|
||||
icon: str
|
||||
itemUsage: str
|
||||
itemDesc: str
|
||||
itemObtainApproach: str
|
||||
rarity: int
|
||||
desc: str
|
||||
price: int
|
||||
specialObtainApproach: Union[str, None]
|
||||
charmType: str
|
||||
obtainInRandom: bool
|
||||
dropStages: List[str]
|
||||
runeData: RuneTablePackedRuneData
|
||||
charmEffect: str
|
||||
|
||||
|
||||
class CharmTable(BaseStruct):
|
||||
__version__ = "24-02-02-10-18-07-831ad8"
|
||||
|
||||
charmList: List[CharmItemData]
|
@ -1,70 +0,0 @@
|
||||
from typing import Dict, List, Union
|
||||
|
||||
from msgspec import field
|
||||
|
||||
from ..common import BaseStruct
|
||||
|
||||
|
||||
class CharWordUnlockParam(BaseStruct):
|
||||
valueStr: Union[str, None]
|
||||
valueInt: int
|
||||
|
||||
|
||||
class CharWordData(BaseStruct):
|
||||
charWordId: str
|
||||
wordKey: str
|
||||
charId: str
|
||||
voiceId: str
|
||||
voiceText: str
|
||||
voiceTitle: str
|
||||
voiceIndex: int
|
||||
voiceType: str
|
||||
unlockType: str
|
||||
unlockParam: List[CharWordUnlockParam]
|
||||
lockDescription: Union[str, None]
|
||||
placeType: str
|
||||
voiceAsset: str
|
||||
|
||||
|
||||
class VoiceLangInfoData(BaseStruct):
|
||||
wordkey: str
|
||||
voiceLangType: str
|
||||
cvName: List[str]
|
||||
voicePath: Union[str, None] = None
|
||||
|
||||
|
||||
class VoiceLangData(BaseStruct):
|
||||
wordkeys: List[str]
|
||||
charId: str
|
||||
dict_: Dict[str, VoiceLangInfoData] = field(name="dict")
|
||||
|
||||
|
||||
class VoiceLangTypeData(BaseStruct):
|
||||
name: str
|
||||
groupType: str
|
||||
|
||||
|
||||
class VoiceLangGroupData(BaseStruct):
|
||||
name: str
|
||||
members: List[str]
|
||||
|
||||
|
||||
class NewVoiceTimeData(BaseStruct):
|
||||
timestamp: int
|
||||
charSet: List[str]
|
||||
|
||||
|
||||
class CharwordTable(BaseStruct):
|
||||
__version__ = "24-02-02-10-18-07-831ad8"
|
||||
|
||||
charWords: Dict[str, CharWordData]
|
||||
voiceLangDict: Dict[str, VoiceLangData]
|
||||
defaultLangType: str
|
||||
newTagList: List[str]
|
||||
voiceLangTypeDict: Dict[str, VoiceLangTypeData]
|
||||
voiceLangGroupTypeDict: Dict[str, VoiceLangGroupData]
|
||||
charDefaultTypeDict: Dict[str, str]
|
||||
startTimeWithTypeDict: Dict[str, List[NewVoiceTimeData]]
|
||||
displayGroupTypeList: List[str]
|
||||
displayTypeList: List[str]
|
||||
playVoiceRange: str
|
@ -1,43 +0,0 @@
|
||||
from typing import Dict, List
|
||||
|
||||
from msgspec import field
|
||||
|
||||
from ..common import BaseStruct
|
||||
|
||||
|
||||
class ItemBundle(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
count: int
|
||||
type_: str = field(name="type")
|
||||
|
||||
|
||||
class MonthlySignInData(BaseStruct):
|
||||
itemId: str
|
||||
itemType: str
|
||||
count: int
|
||||
|
||||
|
||||
class MonthlySignInGroupData(BaseStruct):
|
||||
groupId: str
|
||||
title: str
|
||||
description: str
|
||||
signStartTime: int
|
||||
signEndTime: int
|
||||
items: List[MonthlySignInData]
|
||||
|
||||
|
||||
class MonthlyDailyBonusGroup(BaseStruct):
|
||||
groupId: str
|
||||
startTime: int
|
||||
endTime: int
|
||||
items: List[ItemBundle]
|
||||
imgId: str
|
||||
backId: str
|
||||
|
||||
|
||||
class CheckinTable(BaseStruct):
|
||||
__version__ = "24-02-02-10-18-07-831ad8"
|
||||
|
||||
groups: Dict[str, MonthlySignInGroupData]
|
||||
monthlySubItem: Dict[str, List[MonthlyDailyBonusGroup]]
|
||||
currentMonthlySubId: str
|
@ -1,258 +0,0 @@
|
||||
from typing import Dict, List, Union
|
||||
|
||||
from msgspec import field
|
||||
|
||||
from ..common import BaseStruct
|
||||
|
||||
|
||||
class ItemBundle(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
count: int
|
||||
type_: str = field(name="type")
|
||||
|
||||
|
||||
class ClimbTowerSingleTowerDataClimbTowerTaskRewardData(BaseStruct):
|
||||
levelNum: int
|
||||
rewards: List[ItemBundle]
|
||||
|
||||
|
||||
class ClimbTowerSingleTowerData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
sortId: int
|
||||
stageNum: int
|
||||
name: str
|
||||
subName: str
|
||||
desc: str
|
||||
towerType: str
|
||||
levels: List[str]
|
||||
hardLevels: Union[List[str], None]
|
||||
taskInfo: Union[
|
||||
List[ClimbTowerSingleTowerDataClimbTowerTaskRewardData],
|
||||
None,
|
||||
]
|
||||
preTowerId: Union[str, None]
|
||||
medalId: Union[str, None]
|
||||
hiddenMedalId: Union[str, None]
|
||||
hardModeMedalId: Union[str, None]
|
||||
bossId: Union[str, None]
|
||||
cardId: Union[str, None]
|
||||
curseCardIds: List[str]
|
||||
dangerDesc: str
|
||||
hardModeDesc: Union[str, None]
|
||||
|
||||
|
||||
class WeightItemBundle(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
type_: str = field(name="type")
|
||||
dropType: str
|
||||
count: int
|
||||
weight: int
|
||||
|
||||
|
||||
class StageDataDisplayRewards(BaseStruct):
|
||||
type_: str = field(name="type")
|
||||
id_: str = field(name="id")
|
||||
dropType: int
|
||||
|
||||
|
||||
class StageDataDisplayDetailRewards(BaseStruct):
|
||||
occPercent: int
|
||||
type_: str = field(name="type")
|
||||
id_: str = field(name="id")
|
||||
dropType: int
|
||||
|
||||
|
||||
class ClimbTowerDropDisplayInfo(BaseStruct):
|
||||
itemId: str
|
||||
type_: int = field(name="type")
|
||||
maxCount: int
|
||||
minCount: int
|
||||
|
||||
|
||||
class ClimbTowerLevelDropInfo(BaseStruct):
|
||||
displayRewards: Union[List[StageDataDisplayRewards], None]
|
||||
displayDetailRewards: Union[List[StageDataDisplayDetailRewards], None]
|
||||
passRewards: Union[List[List[WeightItemBundle]], None] = None
|
||||
displayDropInfo: Union[Dict[str, ClimbTowerDropDisplayInfo], None] = None
|
||||
|
||||
|
||||
class ClimbTowerSingleLevelData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
levelId: str
|
||||
towerId: str
|
||||
layerNum: int
|
||||
code: str
|
||||
name: str
|
||||
desc: str
|
||||
levelType: str
|
||||
loadingPicId: str
|
||||
dropInfo: ClimbTowerLevelDropInfo
|
||||
|
||||
|
||||
class ClimbTowerTacticalBuffData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
desc: str
|
||||
profession: str
|
||||
isDefaultActive: bool
|
||||
sortId: int
|
||||
buffType: str
|
||||
|
||||
|
||||
class RuneDataSelector(BaseStruct):
|
||||
professionMask: Union[int, str]
|
||||
buildableMask: int
|
||||
charIdFilter: Union[List[str], None]
|
||||
enemyIdFilter: Union[List[str], None]
|
||||
enemyIdExcludeFilter: Union[List[str], None]
|
||||
enemyLevelTypeFilter: Union[List[str], None]
|
||||
skillIdFilter: Union[List[str], None]
|
||||
tileKeyFilter: Union[List[str], None]
|
||||
groupTagFilter: Union[List[str], None]
|
||||
filterTagFilter: Union[List[str], None]
|
||||
filterTagExcludeFilter: Union[List[str], None]
|
||||
subProfessionExcludeFilter: Union[List[str], None]
|
||||
mapTagFilter: Union[List[str], None]
|
||||
|
||||
|
||||
class Blackboard(BaseStruct):
|
||||
key: str
|
||||
value: Union[float, None] = None
|
||||
valueStr: Union[str, None] = None
|
||||
|
||||
|
||||
class RuneData(BaseStruct):
|
||||
key: str
|
||||
selector: RuneDataSelector
|
||||
blackboard: List[Blackboard]
|
||||
|
||||
|
||||
class RuneTablePackedRuneData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
points: float
|
||||
mutexGroupKey: Union[str, None]
|
||||
description: str
|
||||
runes: List[RuneData]
|
||||
|
||||
|
||||
class ClimbTowerMainCardData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
type_: str = field(name="type")
|
||||
linkedTowerId: Union[str, None]
|
||||
sortId: int
|
||||
name: str
|
||||
desc: str
|
||||
subCardIds: List[str]
|
||||
runeData: RuneTablePackedRuneData
|
||||
trapIds: List[str]
|
||||
|
||||
|
||||
class ClimbTowerSubCardData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
mainCardId: str
|
||||
sortId: int
|
||||
name: str
|
||||
desc: str
|
||||
runeData: RuneTablePackedRuneData
|
||||
trapIds: List[str]
|
||||
|
||||
|
||||
class ClimbTowerCurseCardData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
towerIdList: List[str]
|
||||
name: str
|
||||
desc: str
|
||||
trapId: str
|
||||
|
||||
|
||||
class ClimbTowerSeasonInfoData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
name: str
|
||||
startTs: int
|
||||
endTs: int
|
||||
towers: List[str]
|
||||
seasonCards: List[str]
|
||||
seasonColor: str
|
||||
|
||||
|
||||
class ClimbTowerDetailConst(BaseStruct):
|
||||
unlockLevelId: str
|
||||
unlockModuleNumRequirement: int
|
||||
lowerItemId: str
|
||||
lowerItemLimit: int
|
||||
higherItemId: str
|
||||
higherItemLimit: int
|
||||
initCharCount: int
|
||||
charRecruitTimes: int
|
||||
charRecruitChoiceCount: int
|
||||
subcardStageSort: int
|
||||
assistCharLimit: int
|
||||
firstClearTaskDesc: str
|
||||
subCardObtainDesc: str
|
||||
subGodCardUnlockDesc: str
|
||||
recruitStageSort: Union[List[int], None] = None
|
||||
|
||||
|
||||
class ClimbTowerRewardInfo(BaseStruct):
|
||||
stageSort: int
|
||||
lowerItemCount: int
|
||||
higherItemCount: int
|
||||
|
||||
|
||||
class MissionDisplayRewards(BaseStruct):
|
||||
type_: str = field(name="type")
|
||||
id_: str = field(name="id")
|
||||
count: int
|
||||
|
||||
|
||||
class MissionData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
sortId: int
|
||||
description: str
|
||||
type_: str = field(name="type")
|
||||
itemBgType: str
|
||||
preMissionIds: Union[List[str], None]
|
||||
template: str
|
||||
templateType: str
|
||||
param: List[str]
|
||||
unlockCondition: Union[str, None]
|
||||
unlockParam: Union[List[str], None]
|
||||
missionGroup: str
|
||||
toPage: Union[str, None]
|
||||
periodicalPoint: int
|
||||
rewards: Union[List[MissionDisplayRewards], None]
|
||||
backImagePath: Union[str, None]
|
||||
foldId: Union[str, None]
|
||||
haveSubMissionToUnlock: bool
|
||||
|
||||
|
||||
class ClimbTowerMissionData(MissionData):
|
||||
bindGodCardId: Union[str, None]
|
||||
missionBkg: str
|
||||
|
||||
|
||||
class MissionGroup(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
title: Union[str, None]
|
||||
type_: str = field(name="type")
|
||||
preMissionGroup: Union[str, None]
|
||||
period: Union[List[int], None]
|
||||
rewards: List[MissionDisplayRewards]
|
||||
missionIds: List[str]
|
||||
startTs: int
|
||||
endTs: int
|
||||
|
||||
|
||||
class ClimbTowerTable(BaseStruct):
|
||||
__version__ = "24-02-02-10-18-07-831ad8"
|
||||
|
||||
towers: Dict[str, ClimbTowerSingleTowerData]
|
||||
levels: Dict[str, ClimbTowerSingleLevelData]
|
||||
tacticalBuffs: Dict[str, ClimbTowerTacticalBuffData]
|
||||
mainCards: Dict[str, ClimbTowerMainCardData]
|
||||
subCards: Dict[str, ClimbTowerSubCardData]
|
||||
curseCards: Dict[str, ClimbTowerCurseCardData]
|
||||
seasonInfos: Dict[str, ClimbTowerSeasonInfoData]
|
||||
detailConst: ClimbTowerDetailConst
|
||||
rewardInfoList: List[ClimbTowerRewardInfo]
|
||||
missionData: Dict[str, ClimbTowerMissionData]
|
||||
missionGroup: Dict[str, MissionGroup]
|
@ -1,39 +0,0 @@
|
||||
from typing import List
|
||||
|
||||
from ..common import BaseStruct
|
||||
|
||||
|
||||
class MeetingClueDataClueData(BaseStruct):
|
||||
clueId: str
|
||||
clueName: str
|
||||
clueType: str
|
||||
number: int
|
||||
|
||||
|
||||
class MeetingClueDataClueTypeData(BaseStruct):
|
||||
clueType: str
|
||||
clueNumber: int
|
||||
|
||||
|
||||
class MeetingClueDataReceiveTimeBonus(BaseStruct):
|
||||
receiveTimes: int
|
||||
receiveBonus: int
|
||||
|
||||
|
||||
class ClueData(BaseStruct):
|
||||
__version__ = "24-02-02-10-18-07-831ad8"
|
||||
|
||||
clues: List[MeetingClueDataClueData]
|
||||
clueTypes: List[MeetingClueDataClueTypeData]
|
||||
receiveTimeBonus: List[MeetingClueDataReceiveTimeBonus]
|
||||
inventoryLimit: int
|
||||
outputBasicBonus: int
|
||||
outputOperatorsBonus: int
|
||||
cluePointLimit: int
|
||||
expiredDays: int
|
||||
transferBonus: int
|
||||
recycleBonus: int
|
||||
expiredBonus: int
|
||||
communicationDuration: int
|
||||
initiatorBonus: int
|
||||
participantsBonus: int
|
@ -1,49 +0,0 @@
|
||||
from typing import Dict, List, Union
|
||||
|
||||
from msgspec import field
|
||||
|
||||
from ..common import BaseStruct
|
||||
|
||||
|
||||
class ItemBundle(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
count: int
|
||||
type_: str = field(name="type")
|
||||
|
||||
|
||||
class StringKeyFrames(BaseStruct):
|
||||
level: int
|
||||
data: str
|
||||
|
||||
|
||||
class CrisisClientDataSeasonInfo(BaseStruct):
|
||||
seasonId: str
|
||||
startTs: int
|
||||
endTs: int
|
||||
name: str
|
||||
crisisRuneCoinUnlockItem: ItemBundle
|
||||
permBgm: str
|
||||
medalGroupId: Union[str, None]
|
||||
bgmHardPoint: int
|
||||
permBgmHard: Union[str, None]
|
||||
|
||||
|
||||
class CrisisMapRankInfo(BaseStruct):
|
||||
rewards: List[ItemBundle]
|
||||
unlockPoint: int
|
||||
|
||||
|
||||
class CrisisTable(BaseStruct):
|
||||
__version__ = "24-02-02-10-18-07-831ad8"
|
||||
|
||||
seasonInfo: List[CrisisClientDataSeasonInfo]
|
||||
meta: str
|
||||
unlockCoinLv3: int
|
||||
hardPointPerm: int
|
||||
hardPointTemp: int
|
||||
voiceGrade: int
|
||||
crisisRuneCoinUnlockItemTitle: str
|
||||
crisisRuneCoinUnlockItemDesc: str
|
||||
tempAppraise: Union[List[StringKeyFrames], None] = None # Removed in 2.1.21
|
||||
permAppraise: Union[List[StringKeyFrames], None] = None # Removed in 2.1.21
|
||||
mapRankInfo: Union[Dict[str, CrisisMapRankInfo], None] = None # Removed in 2.1.21
|
@ -1,53 +0,0 @@
|
||||
from enum import Enum
|
||||
from typing import Dict
|
||||
|
||||
from msgspec import field
|
||||
|
||||
from ..common import BaseStruct
|
||||
|
||||
|
||||
class ItemBundle(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
count: int
|
||||
type_: str = field(name="type")
|
||||
|
||||
|
||||
class StringKeyFrames(BaseStruct):
|
||||
level: int
|
||||
data: str
|
||||
|
||||
|
||||
class CrisisV2ConstData(BaseStruct):
|
||||
sysStartTime: int
|
||||
blackScoreThreshold: int
|
||||
redScoreThreshold: int
|
||||
detailBkgRedThreshold: int
|
||||
voiceGrade: int
|
||||
seasonButtonUnlockInfo: int
|
||||
shopCoinId: str
|
||||
hardBgmSwitchScore: int
|
||||
stageId: str
|
||||
hideTodoWhenStageFinish: bool
|
||||
|
||||
|
||||
class appraiseType(Enum):
|
||||
RANK_D = "RANK_D"
|
||||
RANK_C = "RANK_C"
|
||||
RANK_B = "RANK_B"
|
||||
RANK_A = "RANK_A"
|
||||
RANK_S = "RANK_S"
|
||||
RANK_SS = "RANK_SS"
|
||||
RANK_SSS = "RANK_SSS"
|
||||
|
||||
|
||||
class CrisisV2ScoreLevelToAppraiseData(BaseStruct):
|
||||
appraiseType: appraiseType
|
||||
|
||||
|
||||
class CrisisV2Table(BaseStruct):
|
||||
__version__ = "24-02-02-10-18-07-831ad8"
|
||||
|
||||
seasonInfoDataMap: Dict
|
||||
scoreLevelToAppraiseDataMap: Dict[str, CrisisV2ScoreLevelToAppraiseData]
|
||||
constData: CrisisV2ConstData
|
||||
battleCommentRuneData: Dict
|
@ -1,93 +0,0 @@
|
||||
from typing import Dict, List
|
||||
|
||||
from msgspec import field
|
||||
|
||||
from ..common import BaseStruct
|
||||
|
||||
|
||||
class PlayerAvatarPerData(BaseStruct):
|
||||
avatarId: str
|
||||
avatarType: str
|
||||
avatarIdSort: int
|
||||
avatarIdDesc: str
|
||||
avatarItemName: str
|
||||
avatarItemDesc: str
|
||||
avatarItemUsage: str
|
||||
obtainApproach: str
|
||||
|
||||
|
||||
class PlayerAvatarGroupData(BaseStruct):
|
||||
avatarType: str
|
||||
typeName: str
|
||||
avatarIdList: List[str]
|
||||
|
||||
|
||||
class PlayerAvatarData(BaseStruct):
|
||||
defaultAvatarId: str
|
||||
avatarList: List[PlayerAvatarPerData]
|
||||
avatarTypeData: Dict[str, PlayerAvatarGroupData]
|
||||
|
||||
|
||||
class HomeBackgroundSingleData(BaseStruct):
|
||||
bgId: str
|
||||
bgType: str
|
||||
bgSortId: int
|
||||
bgStartTime: int
|
||||
bgName: str
|
||||
bgMusicId: str
|
||||
bgDes: str
|
||||
bgUsage: str
|
||||
obtainApproach: str
|
||||
unlockDesList: List[str]
|
||||
|
||||
|
||||
class HomeBackgroundThemeData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
type_: str = field(name="type")
|
||||
sortId: int
|
||||
startTime: int
|
||||
tmName: str
|
||||
tmDes: str
|
||||
tmUsage: str
|
||||
obtainApproach: str
|
||||
unlockDesList: List[str]
|
||||
isLimitObtain: bool
|
||||
hideWhenLimit: bool
|
||||
|
||||
|
||||
class ThemeLimitInfo(BaseStruct):
|
||||
startTime: int
|
||||
endTime: int
|
||||
invalidObtainDesc: str
|
||||
|
||||
|
||||
class HomeBackgroundThemeLimitData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
limitInfos: List[ThemeLimitInfo]
|
||||
|
||||
|
||||
class HomeBackgroundData(BaseStruct):
|
||||
defaultBackgroundId: str
|
||||
defaultThemeId: str
|
||||
homeBgDataList: List[HomeBackgroundSingleData]
|
||||
themeList: List[HomeBackgroundThemeData]
|
||||
themeLimitData: Dict[str, HomeBackgroundThemeLimitData]
|
||||
defaultBgMusicId: str
|
||||
themeStartTime: int
|
||||
|
||||
|
||||
# class
|
||||
|
||||
# class NameCardV2Data(BaseStruct):
|
||||
# fixedModuleData: Dict[str, Dict[str, str]]
|
||||
# removableModuleData: Dict[str, RemovableModule]
|
||||
# skinData: Dict[str, NameCardV2DataSkinData]
|
||||
# consts: NameCardV2DataConsts
|
||||
|
||||
|
||||
class DisplayMetaTable(BaseStruct):
|
||||
__version__ = "24-02-02-10-18-07-831ad8"
|
||||
|
||||
playerAvatarData: PlayerAvatarData
|
||||
homeBackgroundData: HomeBackgroundData
|
||||
# nameCardV2Data: NameCardV2Data
|
@ -1,61 +0,0 @@
|
||||
from typing import Dict, List, Union
|
||||
|
||||
from msgspec import field
|
||||
|
||||
from ..common import BaseStruct
|
||||
|
||||
|
||||
class EnemyHandBookDataAbilty(BaseStruct):
|
||||
text: str
|
||||
textFormat: str
|
||||
|
||||
|
||||
class EnemyHandBookData(BaseStruct):
|
||||
enemyId: str
|
||||
enemyIndex: str
|
||||
enemyTags: Union[List[str], None]
|
||||
sortId: int
|
||||
name: str
|
||||
enemyLevel: str
|
||||
description: str
|
||||
attackType: Union[str, None]
|
||||
ability: Union[str, None]
|
||||
isInvalidKilled: bool
|
||||
overrideKillCntInfos: Dict[str, int]
|
||||
hideInHandbook: bool
|
||||
abilityList: Union[List[EnemyHandBookDataAbilty], None]
|
||||
linkEnemies: Union[List[str], None]
|
||||
damageType: Union[List[str], None]
|
||||
invisibleDetail: bool
|
||||
hideInStage: Union[bool, None] = None
|
||||
|
||||
|
||||
class EnemyHandbookLevelInfoDataRangePair(BaseStruct):
|
||||
min_: float = field(name="min")
|
||||
max_: float = field(name="max")
|
||||
|
||||
|
||||
class EnemyHandbookLevelInfoData(BaseStruct):
|
||||
classLevel: str
|
||||
attack: EnemyHandbookLevelInfoDataRangePair
|
||||
def_: EnemyHandbookLevelInfoDataRangePair = field(name="def")
|
||||
magicRes: EnemyHandbookLevelInfoDataRangePair
|
||||
maxHP: EnemyHandbookLevelInfoDataRangePair
|
||||
moveSpeed: EnemyHandbookLevelInfoDataRangePair
|
||||
attackSpeed: EnemyHandbookLevelInfoDataRangePair
|
||||
enemyDamageRes: EnemyHandbookLevelInfoDataRangePair
|
||||
enemyRes: EnemyHandbookLevelInfoDataRangePair
|
||||
|
||||
|
||||
class EnemyHandbookRaceData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
raceName: str
|
||||
sortId: int
|
||||
|
||||
|
||||
class EnemyHandbookTable(BaseStruct):
|
||||
__version__ = "24-02-02-10-18-07-831ad8"
|
||||
|
||||
levelInfoList: List[EnemyHandbookLevelInfoData]
|
||||
enemyData: Dict[str, EnemyHandBookData]
|
||||
raceData: Dict[str, EnemyHandbookRaceData]
|
@ -1,21 +0,0 @@
|
||||
from typing import List
|
||||
|
||||
from ..common import BaseStruct
|
||||
|
||||
|
||||
class FavorData(BaseStruct):
|
||||
favorPoint: int
|
||||
percent: int
|
||||
battlePhase: int
|
||||
|
||||
|
||||
class FavorDataFrames(BaseStruct):
|
||||
level: int
|
||||
data: FavorData
|
||||
|
||||
|
||||
class FavorTable(BaseStruct):
|
||||
__version__ = "24-02-02-10-18-07-831ad8"
|
||||
|
||||
maxFavor: int
|
||||
favorFrames: List[FavorDataFrames]
|
@ -1,165 +0,0 @@
|
||||
from typing import Dict, List, Union
|
||||
|
||||
from msgspec import field
|
||||
|
||||
from ..common import BaseStruct
|
||||
|
||||
|
||||
class GachaDataLinkageTenGachaTkt(BaseStruct):
|
||||
itemId: str
|
||||
endTime: int
|
||||
gachaPoolId: str
|
||||
|
||||
|
||||
class GachaDataLimitTenGachaTkt(BaseStruct):
|
||||
itemId: str
|
||||
endTime: int
|
||||
|
||||
|
||||
class GachaDataFreeLimitGachaData(BaseStruct):
|
||||
poolId: str
|
||||
openTime: int
|
||||
endTime: int
|
||||
freeCount: int
|
||||
|
||||
|
||||
class GachaDataCarouselData(BaseStruct):
|
||||
poolId: str
|
||||
index: int
|
||||
startTime: int
|
||||
endTime: int
|
||||
spriteId: str
|
||||
|
||||
|
||||
class ItemBundle(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
count: int
|
||||
type_: str = field(name="type")
|
||||
|
||||
|
||||
class GachaDataRecruitRange(BaseStruct):
|
||||
rarityStart: int
|
||||
rarityEnd: int
|
||||
|
||||
|
||||
class PotentialMaterialConverterConfig(BaseStruct):
|
||||
items: Dict[str, ItemBundle]
|
||||
|
||||
|
||||
class RecruitPoolRecruitTime(BaseStruct):
|
||||
timeLength: int
|
||||
recruitPrice: int
|
||||
accumRate: Union[float, None] = None
|
||||
|
||||
|
||||
class RecruitConstantsData(BaseStruct):
|
||||
tagPriceList: Dict[str, int]
|
||||
maxRecruitTime: int
|
||||
rarityWeights: None = None
|
||||
recruitTimeFactorList: None = None
|
||||
|
||||
|
||||
class RecruitPool(BaseStruct):
|
||||
recruitTimeTable: List[RecruitPoolRecruitTime]
|
||||
recruitConstants: RecruitConstantsData
|
||||
recruitCharacterList: None = None
|
||||
maskTypeWeightTable: None = None
|
||||
|
||||
|
||||
class NewbeeGachaPoolClientData(BaseStruct):
|
||||
gachaPoolId: str
|
||||
gachaIndex: int
|
||||
gachaPoolName: str
|
||||
gachaPoolDetail: str
|
||||
gachaPrice: int
|
||||
gachaTimes: int
|
||||
gachaOffset: Union[str, None] = None
|
||||
firstOpenDay: Union[int, None] = None
|
||||
reOpenDay: Union[int, None] = None
|
||||
gachaPoolItems: None = None
|
||||
signUpEarliestTime: Union[int, None] = None
|
||||
|
||||
|
||||
class GachaPoolClientData(BaseStruct):
|
||||
CDPrimColor: Union[str, None]
|
||||
CDSecColor: Union[str, None]
|
||||
endTime: int
|
||||
gachaIndex: int
|
||||
gachaPoolDetail: Union[str, None]
|
||||
gachaPoolId: str
|
||||
gachaPoolName: str
|
||||
gachaPoolSummary: str
|
||||
gachaRuleType: str
|
||||
guarantee5Avail: int
|
||||
guarantee5Count: int
|
||||
LMTGSID: Union[str, None]
|
||||
openTime: int
|
||||
dynMeta: Union[Dict[str, object], None] = None
|
||||
linkageParam: Union[Dict[str, object], None] = None
|
||||
linkageRuleId: Union[str, None] = None
|
||||
|
||||
|
||||
class GachaTag(BaseStruct):
|
||||
tagId: int
|
||||
tagName: str
|
||||
tagGroup: int
|
||||
|
||||
|
||||
class SpecialRecruitPoolSpecialRecruitCostData(BaseStruct):
|
||||
itemCosts: ItemBundle
|
||||
recruitPrice: int
|
||||
timeLength: int
|
||||
|
||||
|
||||
class SpecialRecruitPool(BaseStruct):
|
||||
endDateTime: int
|
||||
order: int
|
||||
recruitId: str
|
||||
recruitTimeTable: List[SpecialRecruitPoolSpecialRecruitCostData]
|
||||
startDateTime: int
|
||||
tagId: int
|
||||
tagName: str
|
||||
CDPrimColor: Union[str, None]
|
||||
CDSecColor: Union[str, None]
|
||||
LMTGSID: Union[str, None]
|
||||
gachaRuleType: str
|
||||
|
||||
|
||||
class GachaDataFesGachaPoolRelateItem(BaseStruct):
|
||||
rarityRank5ItemId: str
|
||||
rarityRank6ItemId: str
|
||||
|
||||
|
||||
class GachaNormalItem(BaseStruct):
|
||||
itemId: str
|
||||
endTime: int
|
||||
gachaPoolId: str
|
||||
isTen: bool
|
||||
|
||||
|
||||
class GachaTable(BaseStruct):
|
||||
__version__ = "24-02-02-10-18-07-831ad8"
|
||||
|
||||
gachaTags: List[GachaTag]
|
||||
carousel: List[GachaDataCarouselData]
|
||||
classicPotentialMaterialConverter: PotentialMaterialConverterConfig
|
||||
dicRecruit6StarHint: Union[Dict[str, str], None]
|
||||
normalGachaItem: List[GachaNormalItem]
|
||||
fesGachaPoolRelateItem: Union[
|
||||
Dict[str, GachaDataFesGachaPoolRelateItem],
|
||||
None,
|
||||
]
|
||||
freeGacha: List[GachaDataFreeLimitGachaData]
|
||||
gachaPoolClient: List[GachaPoolClientData]
|
||||
limitTenGachaItem: List[GachaDataLimitTenGachaTkt]
|
||||
linkageTenGachaItem: List[GachaDataLinkageTenGachaTkt]
|
||||
newbeeGachaPoolClient: List[NewbeeGachaPoolClientData]
|
||||
potentialMaterialConverter: PotentialMaterialConverterConfig
|
||||
recruitDetail: str
|
||||
recruitPool: RecruitPool
|
||||
recruitRarityTable: Dict[str, GachaDataRecruitRange]
|
||||
specialRecruitPool: List[SpecialRecruitPool]
|
||||
specialTagRarityTable: Dict[str, List[int]]
|
||||
gachaTagMaxValid: Union[int, None] = None
|
||||
potentialMats: Union[Dict, None] = None
|
||||
classicPotentialMats: Union[Dict, None] = None
|
@ -1,124 +0,0 @@
|
||||
from typing import Dict, List, Union
|
||||
|
||||
from msgspec import field
|
||||
|
||||
from ..common import BaseStruct
|
||||
|
||||
|
||||
class ItemBundle(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
count: int
|
||||
type_: str = field(name="type")
|
||||
|
||||
|
||||
class GameDataConstsCharAssistRefreshTimeState(BaseStruct):
|
||||
Hour: int
|
||||
Minute: int
|
||||
|
||||
|
||||
class TermDescriptionData(BaseStruct):
|
||||
termId: str
|
||||
termName: str
|
||||
description: str
|
||||
|
||||
|
||||
class GamedataConst(BaseStruct):
|
||||
__version__ = "24-02-02-10-18-07-831ad8"
|
||||
|
||||
addedRewardDisplayZone: str
|
||||
advancedGachaCrystalCost: int
|
||||
announceWebBusType: str
|
||||
apBuyCost: int
|
||||
apBuyThreshold: int
|
||||
assistBeUsedSocialPt: Dict[str, int]
|
||||
attackMax: float
|
||||
baseMaxFriendNum: int
|
||||
buyApTimeNoLimitFlag: bool
|
||||
characterExpMap: List[List[int]]
|
||||
characterUpgradeCostMap: List[List[int]]
|
||||
charAssistRefreshTime: List[GameDataConstsCharAssistRefreshTimeState]
|
||||
charmEquipCount: int
|
||||
commonPotentialLvlUpCount: int
|
||||
completeCrystalBonus: int
|
||||
completeGainBonus: float
|
||||
continuousActionOpen: bool
|
||||
creditLimit: int
|
||||
dataVersion: str
|
||||
defaultMinContinuousBattleTimes: int
|
||||
defaultMaxContinuousBattleTimes: int
|
||||
defCDPrimColor: str
|
||||
defCDSecColor: str
|
||||
defMax: float
|
||||
diamondMaterialToShardExchangeRatio: int
|
||||
diamondToShdRate: int
|
||||
easyCrystalBonus: int
|
||||
evolveGoldCost: List[List[int]]
|
||||
friendAssistRarityLimit: List[int]
|
||||
hardDiamondDrop: int
|
||||
hpMax: float
|
||||
initCampaignTotalFee: int
|
||||
initCharIdList: List[str]
|
||||
initPlayerDiamondShard: int
|
||||
initPlayerGold: int
|
||||
initRecruitTagList: List[int]
|
||||
instFinDmdShdCost: int
|
||||
isClassicGachaPoolFuncEnabled: bool
|
||||
isClassicPotentialItemFuncEnabled: bool
|
||||
isClassicQCShopEnabled: bool
|
||||
isDynIllustEnabled: bool
|
||||
isDynIllustStartEnabled: bool
|
||||
isLMGTSEnabled: bool
|
||||
isSandboxPermFuncEnabled: bool
|
||||
isRoguelikeAvgAchieveFuncEnabled: bool
|
||||
isRoguelikeTopicFuncEnabled: bool
|
||||
legacyItemList: List[ItemBundle]
|
||||
legacyTime: int
|
||||
lMTGSDescConstOne: str
|
||||
lMTGSDescConstTwo: str
|
||||
LMTGSToEPGSRatio: int
|
||||
mailBannerType: List[str]
|
||||
mainlineCompatibleDesc: str
|
||||
mainlineEasyDesc: str
|
||||
mainlineNormalDesc: str
|
||||
mainlineToughDesc: str
|
||||
maxLevel: List[List[int]]
|
||||
maxPlayerLevel: int
|
||||
maxPracticeTicket: int
|
||||
monthlySubRemainTimeLimitDays: int
|
||||
monthlySubWarningTime: int
|
||||
multiInComeByRank: List[str]
|
||||
newBeeGiftEPGS: int
|
||||
normalGachaUnlockPrice: List[int]
|
||||
normalRecruitLockedString: List[str]
|
||||
playerApMap: List[int]
|
||||
playerApRegenSpeed: int
|
||||
playerExpMap: List[int]
|
||||
pullForces: List[float]
|
||||
pullForceZeroIndex: int
|
||||
pushForces: List[float]
|
||||
pushForceZeroIndex: int
|
||||
recruitPoolVersion: int
|
||||
rejectSpCharMission: int
|
||||
reMax: float
|
||||
replicateShopStartTime: int
|
||||
requestSameFriendCD: int
|
||||
resPrefVersion: str
|
||||
richTextStyles: Dict[str, str]
|
||||
storyReviewUnlockItemLackTip: str
|
||||
termDescriptionDict: Dict[str, TermDescriptionData]
|
||||
UnlimitSkinOutOfTime: int
|
||||
useAssistSocialPt: int
|
||||
useAssistSocialPtMaxCount: int
|
||||
v006RecruitTimeStep1Refresh: int
|
||||
v006RecruitTimeStep2Check: int
|
||||
v006RecruitTimeStep2Flush: int
|
||||
voucherDiv: int
|
||||
voucherSkinDesc: str
|
||||
voucherSkinRedeem: int
|
||||
weeklyOverrideDesc: str
|
||||
TSO: int
|
||||
classicProtectChar: List[str]
|
||||
isVoucherClassicItemDistinguishable: Union[bool, None] = None
|
||||
operatorRecordsStartTime: Union[int, None] = None
|
||||
subProfessionDamageTypePairs: Union[Dict[str, int], None] = None
|
||||
crisisUnlockStage: Union[str, None] = None # Removed in 2.1.21
|
@ -1,132 +0,0 @@
|
||||
from typing import Dict, List, Union
|
||||
|
||||
from msgspec import field
|
||||
|
||||
from ..common import BaseStruct
|
||||
|
||||
|
||||
class HandbookUnlockParam(BaseStruct):
|
||||
unlockType: int
|
||||
unlockParam1: str
|
||||
unlockParam2: Union[str, None]
|
||||
unlockParam3: Union[str, None]
|
||||
|
||||
|
||||
class ItemBundle(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
count: int
|
||||
type_: str = field(name="type")
|
||||
|
||||
|
||||
class HandbookStageTimeData(BaseStruct):
|
||||
timestamp: int
|
||||
charSet: List[str]
|
||||
|
||||
|
||||
class HandbookStoryStageData(BaseStruct):
|
||||
charId: str
|
||||
code: str
|
||||
description: str
|
||||
levelId: str
|
||||
loadingPicId: str
|
||||
name: str
|
||||
picId: str
|
||||
rewardItem: List[ItemBundle]
|
||||
stageGetTime: int
|
||||
stageId: str
|
||||
stageNameForShow: str
|
||||
unlockParam: List[HandbookUnlockParam]
|
||||
zoneId: str
|
||||
zoneNameForShow: str
|
||||
|
||||
|
||||
class HandbookDisplayCondition(BaseStruct):
|
||||
charId: str
|
||||
conditionCharId: str
|
||||
type_: str = field(name="type")
|
||||
|
||||
|
||||
class HandbookTeamMission(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
sort: int
|
||||
powerId: str
|
||||
powerName: str
|
||||
item: ItemBundle
|
||||
favorPoint: int
|
||||
|
||||
|
||||
class NPCUnlock(BaseStruct):
|
||||
unLockType: int
|
||||
unLockParam: str
|
||||
unLockString: Union[str, None] = None
|
||||
|
||||
|
||||
class NPCData(BaseStruct):
|
||||
appellation: str
|
||||
cv: str
|
||||
designerList: Union[List[str], None]
|
||||
displayNumber: str
|
||||
groupId: Union[str, None]
|
||||
illustList: List[str]
|
||||
name: str
|
||||
nationId: str
|
||||
npcId: str
|
||||
npcShowAudioInfoFlag: bool
|
||||
profession: str
|
||||
resType: str
|
||||
teamId: None
|
||||
unlockDict: Dict[str, NPCUnlock]
|
||||
minPowerId: str
|
||||
|
||||
|
||||
class HandbookAvgData(BaseStruct):
|
||||
storyId: str
|
||||
storySetId: str
|
||||
storySort: int
|
||||
storyCanShow: bool
|
||||
storyIntro: str
|
||||
storyInfo: str
|
||||
storyTxt: str
|
||||
|
||||
|
||||
class HandbookAvgGroupData(BaseStruct):
|
||||
storySetId: str
|
||||
storySetName: str
|
||||
sortId: int
|
||||
storyGetTime: int
|
||||
rewardItem: List[ItemBundle]
|
||||
unlockParam: List[HandbookUnlockParam]
|
||||
avgList: List[HandbookAvgData]
|
||||
charId: str
|
||||
|
||||
|
||||
class HandbookStoryData(BaseStruct):
|
||||
storyText: str
|
||||
unLockType: int
|
||||
unLockParam: str
|
||||
unLockString: str
|
||||
|
||||
|
||||
class HandBookStoryViewData(BaseStruct):
|
||||
stories: List[HandbookStoryData]
|
||||
storyTitle: str
|
||||
unLockorNot: bool
|
||||
|
||||
|
||||
class HandbookInfoData(BaseStruct):
|
||||
charID: str
|
||||
infoName: str
|
||||
storyTextAudio: List[HandBookStoryViewData]
|
||||
handbookAvgList: List[HandbookAvgGroupData]
|
||||
isLimited: Union[bool, None] = None
|
||||
|
||||
|
||||
class HandbookInfoTable(BaseStruct):
|
||||
__version__ = "24-02-02-10-18-07-831ad8"
|
||||
|
||||
handbookDict: Dict[str, HandbookInfoData]
|
||||
npcDict: Dict[str, NPCData]
|
||||
teamMissionList: Dict[str, HandbookTeamMission]
|
||||
handbookDisplayConditionList: Dict[str, HandbookDisplayCondition]
|
||||
handbookStageData: Dict[str, HandbookStoryStageData]
|
||||
handbookStageTime: List[HandbookStageTimeData]
|
@ -1,45 +0,0 @@
|
||||
from typing import List, Union
|
||||
|
||||
from ..common import BaseStruct
|
||||
|
||||
|
||||
class HandBookInfoTextViewDataInfoTextAudio(BaseStruct):
|
||||
infoText: str
|
||||
audioName: str
|
||||
|
||||
|
||||
class StoryTextAudioInfoListItem(BaseStruct):
|
||||
storyText: Union[str, None]
|
||||
storyTitle: Union[str, None]
|
||||
|
||||
|
||||
class StoryTextAudioItem(BaseStruct):
|
||||
stories: List[StoryTextAudioInfoListItem]
|
||||
unLockorNot: bool
|
||||
unLockType: int
|
||||
unLockParam: str
|
||||
unLockString: str
|
||||
|
||||
|
||||
class HandBookInfoTextViewData(BaseStruct):
|
||||
infoList: List[HandBookInfoTextViewDataInfoTextAudio]
|
||||
unLockorNot: bool
|
||||
unLockType: int
|
||||
unLockParam: str
|
||||
unLockLevel: int
|
||||
unLockLevelAdditive: int
|
||||
unLockString: str
|
||||
|
||||
|
||||
class CharHandbook(BaseStruct):
|
||||
charID: str
|
||||
drawName: str
|
||||
infoName: str
|
||||
infoTextAudio: List[HandBookInfoTextViewData]
|
||||
storyTextAudio: List[StoryTextAudioItem]
|
||||
|
||||
|
||||
class HandbookTable(BaseStruct):
|
||||
__version__ = "24-02-02-10-18-07-831ad8"
|
||||
|
||||
char_102_texas: CharHandbook
|
@ -1,20 +0,0 @@
|
||||
from typing import Dict
|
||||
|
||||
from ..common import BaseStruct
|
||||
|
||||
|
||||
class HandbookTeam(BaseStruct):
|
||||
powerId: str
|
||||
orderNum: int
|
||||
powerLevel: int
|
||||
powerName: str
|
||||
powerCode: str
|
||||
color: str
|
||||
isLimited: bool
|
||||
isRaw: bool
|
||||
|
||||
|
||||
class HandbookTeamTable(BaseStruct):
|
||||
__version__ = "24-02-02-10-18-07-831ad8"
|
||||
|
||||
team: Dict[str, HandbookTeam]
|
@ -1,115 +0,0 @@
|
||||
from typing import ClassVar, Dict, List, Union
|
||||
|
||||
from msgspec import field
|
||||
|
||||
from ..common import BaseStruct
|
||||
|
||||
|
||||
class ItemDataStageDropInfo(BaseStruct):
|
||||
stageId: str
|
||||
occPer: str
|
||||
|
||||
|
||||
class ItemDataBuildingProductInfo(BaseStruct):
|
||||
roomType: str
|
||||
formulaId: str
|
||||
|
||||
|
||||
class ItemBundle(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
count: int
|
||||
type_: str = field(name="type")
|
||||
|
||||
|
||||
class FavorCharacterInfo(BaseStruct):
|
||||
itemId: str
|
||||
charId: str
|
||||
favorAddAmt: int
|
||||
|
||||
|
||||
class ActivityPotentialCharacterInfo(BaseStruct):
|
||||
charId: str
|
||||
|
||||
|
||||
class FullPotentialCharacterInfo(BaseStruct):
|
||||
itemId: str
|
||||
ts: int
|
||||
|
||||
|
||||
class ItemPackInfo(BaseStruct):
|
||||
packId: str
|
||||
content: List[ItemBundle]
|
||||
|
||||
|
||||
class UniCollectionInfo(BaseStruct):
|
||||
uniCollectionItemId: str
|
||||
uniqueItem: List[ItemBundle]
|
||||
|
||||
|
||||
class ApSupplyFeature(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
ap: int
|
||||
hasTs: bool
|
||||
|
||||
|
||||
class ExpItemFeature(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
gainExp: int
|
||||
|
||||
|
||||
class ItemDataVoucherRelateInfo(BaseStruct):
|
||||
voucherId: str
|
||||
voucherItemType: str
|
||||
|
||||
|
||||
class ItemData(BaseStruct):
|
||||
itemId: str
|
||||
name: str
|
||||
rarity: int
|
||||
iconId: str
|
||||
sortId: int
|
||||
classifyType: str
|
||||
itemType: str
|
||||
stageDropList: ClassVar[List[Union[ItemDataStageDropInfo, None]]] = []
|
||||
buildingProductList: ClassVar[List[Union[ItemDataBuildingProductInfo, None]]] = []
|
||||
voucherRelateList: ClassVar[List[Union[ItemDataVoucherRelateInfo, None]]] = []
|
||||
overrideBkg: Union[str, None] = None
|
||||
usage: Union[str, None] = None
|
||||
description: Union[str, None] = None
|
||||
stackIconId: Union[str, None] = None
|
||||
obtainApproach: Union[str, None] = None
|
||||
hideInItemGet: Union[bool, None] = None
|
||||
|
||||
|
||||
class CharVoucherItemFeature(BaseStruct):
|
||||
displayType: int
|
||||
id_: str = field(name="id")
|
||||
|
||||
|
||||
class ServerItemReminderMailData(BaseStruct):
|
||||
content: str
|
||||
sender: str
|
||||
title: str
|
||||
|
||||
|
||||
class ServerItemReminderInfo(BaseStruct):
|
||||
paidItemIdList: List[str]
|
||||
paidReminderMail: ServerItemReminderMailData
|
||||
|
||||
|
||||
class ItemTable(BaseStruct):
|
||||
__version__ = "24-02-02-10-18-07-831ad8"
|
||||
|
||||
activityPotentialCharacters: Dict[str, ActivityPotentialCharacterInfo]
|
||||
apSupplies: Dict[str, ApSupplyFeature]
|
||||
expItems: Dict[str, ExpItemFeature]
|
||||
favorCharacters: Dict[str, FavorCharacterInfo]
|
||||
fullPotentialCharacters: Dict[str, FullPotentialCharacterInfo]
|
||||
itemPackInfos: Dict[str, ItemPackInfo]
|
||||
items: Dict[str, ItemData]
|
||||
itemTimeLimit: Dict[str, int]
|
||||
potentialItems: Dict[str, Dict[str, str]]
|
||||
uniCollectionInfo: Dict[str, UniCollectionInfo]
|
||||
uniqueInfo: Dict[str, int]
|
||||
reminderInfo: Union[ServerItemReminderInfo, None] = None
|
||||
charVoucherItems: Union[Dict[str, CharVoucherItemFeature], None] = None
|
@ -1,67 +0,0 @@
|
||||
from typing import Dict, List, Union
|
||||
|
||||
from msgspec import field
|
||||
|
||||
from ..common import BaseStruct
|
||||
|
||||
|
||||
class MedalExpireTime(BaseStruct):
|
||||
start: int
|
||||
end: int
|
||||
type_: str = field(name="type")
|
||||
|
||||
|
||||
class ItemBundle(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
count: int
|
||||
type_: str = field(name="type")
|
||||
|
||||
|
||||
class MedalGroupData(BaseStruct):
|
||||
groupId: str
|
||||
groupName: str
|
||||
groupDesc: str
|
||||
medalId: List[str]
|
||||
sortId: int
|
||||
groupBackColor: str
|
||||
groupGetTime: int
|
||||
sharedExpireTimes: Union[List[MedalExpireTime], None]
|
||||
|
||||
|
||||
class MedalRewardGroupData(BaseStruct):
|
||||
groupId: str
|
||||
slotId: int
|
||||
itemList: List[ItemBundle]
|
||||
|
||||
|
||||
class MedalTypeData(BaseStruct):
|
||||
medalGroupId: str
|
||||
sortId: int
|
||||
medalName: str
|
||||
groupData: List[MedalGroupData]
|
||||
|
||||
|
||||
class MedalPerData(BaseStruct):
|
||||
medalId: Union[str, None]
|
||||
medalName: Union[str, None]
|
||||
medalType: Union[str, None]
|
||||
slotId: Union[int, None]
|
||||
preMedalIdList: Union[List[str], None]
|
||||
rarity: int
|
||||
template: Union[str, None]
|
||||
unlockParam: List[str]
|
||||
getMethod: Union[str, None]
|
||||
description: Union[str, None]
|
||||
advancedMedal: Union[str, None]
|
||||
originMedal: Union[str, None]
|
||||
displayTime: int
|
||||
expireTimes: List[MedalExpireTime]
|
||||
medalRewardGroup: List[MedalRewardGroupData]
|
||||
isHidden: Union[bool, None] = None
|
||||
|
||||
|
||||
class MedalTable(BaseStruct):
|
||||
__version__ = "24-02-02-10-18-07-831ad8"
|
||||
|
||||
medalList: List[MedalPerData]
|
||||
medalTypeData: Dict[str, MedalTypeData]
|
@ -1,102 +0,0 @@
|
||||
from typing import Dict, List, Union
|
||||
|
||||
from msgspec import field
|
||||
|
||||
from ..common import BaseStruct
|
||||
|
||||
|
||||
class MissionDisplayRewards(BaseStruct):
|
||||
type_: str = field(name="type")
|
||||
id_: str = field(name="id")
|
||||
count: int
|
||||
|
||||
|
||||
class DailyMissionGroupInfoperiodInfo(BaseStruct):
|
||||
missionGroupId: str
|
||||
period: List[int]
|
||||
rewardGroupId: str
|
||||
|
||||
|
||||
class DailyMissionGroupInfo(BaseStruct):
|
||||
endTime: int
|
||||
periodList: List[DailyMissionGroupInfoperiodInfo]
|
||||
startTime: int
|
||||
tagState: Union[str, None]
|
||||
|
||||
|
||||
class MissionWeeklyRewardConf(BaseStruct):
|
||||
beginTime: int
|
||||
endTime: int
|
||||
groupId: str
|
||||
id_: str = field(name="id")
|
||||
periodicalPointCost: int
|
||||
type_: str = field(name="type")
|
||||
sortIndex: int
|
||||
rewards: List[MissionDisplayRewards]
|
||||
|
||||
|
||||
class MissionDailyRewardConf(BaseStruct):
|
||||
groupId: str
|
||||
id_: str = field(name="id")
|
||||
periodicalPointCost: int
|
||||
type_: str = field(name="type")
|
||||
sortIndex: int
|
||||
rewards: List[MissionDisplayRewards]
|
||||
|
||||
|
||||
class MissionGroup(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
title: Union[str, None]
|
||||
type_: str = field(name="type")
|
||||
preMissionGroup: Union[str, None]
|
||||
period: Union[List[int], None]
|
||||
rewards: Union[List[MissionDisplayRewards], None]
|
||||
missionIds: List[str]
|
||||
startTs: int
|
||||
endTs: int
|
||||
|
||||
|
||||
class MissionData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
sortId: int
|
||||
description: str
|
||||
type_: str = field(name="type")
|
||||
itemBgType: str
|
||||
preMissionIds: Union[List[str], None]
|
||||
template: str
|
||||
templateType: str
|
||||
param: List[str]
|
||||
unlockCondition: Union[str, None]
|
||||
unlockParam: Union[List[str], None]
|
||||
missionGroup: str
|
||||
toPage: None
|
||||
periodicalPoint: int
|
||||
rewards: Union[List[MissionDisplayRewards], None]
|
||||
backImagePath: Union[str, None]
|
||||
foldId: Union[str, None]
|
||||
haveSubMissionToUnlock: bool
|
||||
|
||||
|
||||
class CrossAppShareMissions(BaseStruct):
|
||||
shareMissionId: str
|
||||
missionType: str
|
||||
relateActivityId: Union[str, None]
|
||||
startTime: int
|
||||
endTime: int
|
||||
limitCount: int
|
||||
condTemplate: Union[str, None]
|
||||
condParam: List[Union[str, None]]
|
||||
rewardsList: Union[List[str], None]
|
||||
|
||||
|
||||
class MissionTable(BaseStruct):
|
||||
__version__ = "24-02-02-10-18-07-831ad8"
|
||||
|
||||
missions: Dict[str, MissionData]
|
||||
missionGroups: Dict[str, MissionGroup]
|
||||
periodicalRewards: Dict[str, MissionDailyRewardConf]
|
||||
weeklyRewards: Dict[str, MissionWeeklyRewardConf]
|
||||
dailyMissionGroupInfo: Dict[str, DailyMissionGroupInfo]
|
||||
dailyMissionPeriodInfo: List[DailyMissionGroupInfo]
|
||||
crossAppShareMissions: Dict[str, CrossAppShareMissions]
|
||||
crossAppShareMissionConst: Dict[str, str]
|
@ -1,279 +0,0 @@
|
||||
from typing import Dict, List, Union
|
||||
|
||||
from msgspec import field
|
||||
|
||||
from ..common import BaseStruct
|
||||
|
||||
|
||||
class RewardItem(BaseStruct):
|
||||
type_: str = field(name="type")
|
||||
id_: str = field(name="id")
|
||||
count: int
|
||||
sortId: int
|
||||
|
||||
|
||||
class ItemBundle(BaseStruct):
|
||||
type_: str = field(name="type")
|
||||
id_: str = field(name="id")
|
||||
count: int
|
||||
|
||||
|
||||
class MissionDisplayRewards(BaseStruct):
|
||||
type_: str = field(name="type")
|
||||
id_: str = field(name="id")
|
||||
count: int
|
||||
|
||||
|
||||
class OpenServerItemData(BaseStruct):
|
||||
itemId: str
|
||||
itemType: str
|
||||
count: int
|
||||
|
||||
|
||||
class ReturnIntroData(BaseStruct):
|
||||
sort: int
|
||||
pubTime: int
|
||||
image: str
|
||||
|
||||
|
||||
class ReturnCheckinData(BaseStruct):
|
||||
isImportant: bool
|
||||
checkinRewardItems: List[ItemBundle]
|
||||
|
||||
|
||||
class ReturnLongTermTaskData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
sortId: int
|
||||
template: str
|
||||
param: List[str]
|
||||
desc: str
|
||||
rewards: List[MissionDisplayRewards]
|
||||
playPoint: int
|
||||
|
||||
|
||||
class ReturnDailyTaskData(BaseStruct):
|
||||
groupId: str
|
||||
id_: str = field(name="id")
|
||||
groupSortId: int
|
||||
taskSortId: int
|
||||
template: str
|
||||
param: List[str]
|
||||
desc: str
|
||||
rewards: List[MissionDisplayRewards]
|
||||
playPoint: int
|
||||
|
||||
|
||||
class ReturnConst(BaseStruct):
|
||||
startTime: int
|
||||
systemTab_time: int
|
||||
afkDays: int
|
||||
unlockLv: int
|
||||
unlockLevel: str
|
||||
juniorClear: bool
|
||||
ifvisitor: bool
|
||||
permMission_time: int
|
||||
needPoints: int
|
||||
defaultIntro: str
|
||||
pointId: str
|
||||
|
||||
|
||||
class ReturnData(BaseStruct):
|
||||
constData: ReturnConst
|
||||
onceRewards: List[ItemBundle]
|
||||
intro: List[ReturnIntroData]
|
||||
returnDailyTaskDic: Dict[str, List[ReturnDailyTaskData]]
|
||||
returnLongTermTaskList: List[ReturnLongTermTaskData]
|
||||
creditsList: List[ItemBundle]
|
||||
checkinRewardList: List[ReturnCheckinData]
|
||||
|
||||
|
||||
class OpenServerConst(BaseStruct):
|
||||
firstDiamondShardMailCount: int
|
||||
initApMailEndTs: int
|
||||
|
||||
|
||||
class TotalCheckinData(BaseStruct):
|
||||
order: int
|
||||
item: OpenServerItemData
|
||||
colorId: int
|
||||
|
||||
|
||||
class ChainLoginData(BaseStruct):
|
||||
order: int
|
||||
item: OpenServerItemData
|
||||
colorId: int
|
||||
|
||||
|
||||
class MissionData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
sortId: int
|
||||
description: str
|
||||
type_: str = field(name="type")
|
||||
itemBgType: str
|
||||
preMissionIds: None
|
||||
template: str
|
||||
templateType: str
|
||||
param: List[str]
|
||||
unlockCondition: None
|
||||
unlockParam: None
|
||||
missionGroup: str
|
||||
toPage: None
|
||||
periodicalPoint: int
|
||||
rewards: List[ItemBundle]
|
||||
backImagePath: None
|
||||
foldId: None
|
||||
haveSubMissionToUnlock: bool
|
||||
|
||||
|
||||
class MissionGroup(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
title: None
|
||||
type_: str = field(name="type")
|
||||
preMissionGroup: None
|
||||
period: None
|
||||
rewards: None
|
||||
missionIds: List[str]
|
||||
startTs: int
|
||||
endTs: int
|
||||
|
||||
|
||||
class OpenServerData(BaseStruct):
|
||||
openServerMissionGroup: MissionGroup
|
||||
openServerMissionData: List[MissionData]
|
||||
checkInData: List[TotalCheckinData]
|
||||
chainLoginData: List[ChainLoginData]
|
||||
|
||||
|
||||
class OpenServerScheduleItem(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
startTs: int
|
||||
endTs: int
|
||||
totalCheckinDescption: str
|
||||
chainLoginDescription: str
|
||||
charImg: str
|
||||
|
||||
|
||||
class ReturnConstV2(BaseStruct):
|
||||
startTime: int
|
||||
unlockLv: int
|
||||
unlockStage: str
|
||||
permMissionTime: int
|
||||
pointId: str
|
||||
returnPriceDesc: str
|
||||
dailySupplyDesc: str
|
||||
|
||||
|
||||
class onceRewardDataV2(BaseStruct):
|
||||
groupId: str
|
||||
startTime: int
|
||||
endTime: int
|
||||
rewardList: List[RewardItem]
|
||||
|
||||
|
||||
class ReturnCheckinDataV2RewardList(BaseStruct):
|
||||
sortId: int
|
||||
isImportant: bool
|
||||
rewardList: List[ItemBundle]
|
||||
|
||||
|
||||
class CheckInRewardData(BaseStruct):
|
||||
groupId: str
|
||||
startTime: int
|
||||
endTime: int
|
||||
rewardList: List[ReturnCheckinDataV2RewardList]
|
||||
|
||||
|
||||
class PriceRewardDataV2Content(BaseStruct):
|
||||
contentId: str
|
||||
sortId: int
|
||||
pointRequire: int
|
||||
desc: str
|
||||
iconId: str
|
||||
topIconId: str
|
||||
rewardList: List[RewardItem]
|
||||
|
||||
|
||||
class PriceRewardDataV2(BaseStruct):
|
||||
groupId: str
|
||||
startTime: int
|
||||
endTime: int
|
||||
contentList: List[PriceRewardDataV2Content]
|
||||
|
||||
|
||||
class MissionGroupDataV2Mission(BaseStruct):
|
||||
missionId: str
|
||||
groupId: str
|
||||
sortId: int
|
||||
jumpType: str
|
||||
jumpParam: Union[str, None]
|
||||
desc: str
|
||||
rewardList: List[ItemBundle]
|
||||
|
||||
|
||||
class MissionGroupDataV2(BaseStruct):
|
||||
groupId: str
|
||||
sortId: int
|
||||
tabTitle: str
|
||||
title: str
|
||||
desc: str
|
||||
diffMissionCount: int
|
||||
startTime: int
|
||||
endTime: int
|
||||
imageId: str
|
||||
iconId: str
|
||||
missionList: List[MissionGroupDataV2Mission]
|
||||
|
||||
|
||||
class SailySupplyDataV2(BaseStruct):
|
||||
groupId: str
|
||||
startTime: int
|
||||
endTime: int
|
||||
rewardList: List[ItemBundle]
|
||||
|
||||
|
||||
class PackageCheckInRewardDataV2(BaseStruct):
|
||||
groupId: str
|
||||
startTime: int
|
||||
endTime: int
|
||||
getTime: int
|
||||
bindGPGoodId: str
|
||||
totalCheckInDay: int
|
||||
iconId: str
|
||||
rewardDict: Dict[str, List[RewardItem]]
|
||||
|
||||
|
||||
class ReturnDataV2(BaseStruct):
|
||||
constData: ReturnConstV2
|
||||
onceRewardData: List[onceRewardDataV2]
|
||||
checkInRewardData: List[CheckInRewardData]
|
||||
priceRewardData: List[PriceRewardDataV2]
|
||||
missionGroupData: List[MissionGroupDataV2]
|
||||
dailySupplyData: List[SailySupplyDataV2]
|
||||
packageCheckInRewardData: List[PackageCheckInRewardDataV2]
|
||||
|
||||
|
||||
class CheckInRewardItem(BaseStruct):
|
||||
orderNum: int
|
||||
itemBundle: ItemBundle
|
||||
|
||||
|
||||
class OpenServerNewbieCheckInPackage(BaseStruct):
|
||||
groupId: str
|
||||
startTime: int
|
||||
endTime: int
|
||||
bindGPGoodId: str
|
||||
checkInDuration: int
|
||||
totalCheckInDay: int
|
||||
iconId: str
|
||||
checkInRewardDict: Dict[str, List[CheckInRewardItem]]
|
||||
|
||||
|
||||
class OpenServerTable(BaseStruct):
|
||||
__version__ = "24-02-02-10-18-07-831ad8"
|
||||
|
||||
schedule: List[OpenServerScheduleItem]
|
||||
dataMap: Dict[str, OpenServerData]
|
||||
constant: OpenServerConst
|
||||
playerReturn: ReturnData
|
||||
playerReturnV2: ReturnDataV2
|
||||
newbieCheckInPackageList: List[OpenServerNewbieCheckInPackage]
|
@ -1,28 +0,0 @@
|
||||
from typing import Dict, List
|
||||
|
||||
from ..common import BaseStruct
|
||||
|
||||
|
||||
class PlayerAvatarGroupData(BaseStruct):
|
||||
avatarType: str
|
||||
typeName: str
|
||||
avatarIdList: List[str]
|
||||
|
||||
|
||||
class PlayerAvatarPerData(BaseStruct):
|
||||
avatarId: str
|
||||
avatarType: str
|
||||
avatarIdSort: int
|
||||
avatarIdDesc: str
|
||||
avatarItemName: str
|
||||
avatarItemDesc: str
|
||||
avatarItemUsage: str
|
||||
obtainApproach: str
|
||||
|
||||
|
||||
class PlayerAvatarTable(BaseStruct):
|
||||
__version__ = "24-02-02-10-18-07-831ad8"
|
||||
|
||||
avatarList: List[PlayerAvatarPerData]
|
||||
avatarTypeData: Dict[str, PlayerAvatarGroupData]
|
||||
defaultAvatarId: str
|
@ -1,30 +0,0 @@
|
||||
from typing import Dict, List, Union
|
||||
|
||||
from msgspec import field
|
||||
|
||||
from ..common import BaseStruct
|
||||
|
||||
|
||||
class GridPosition(BaseStruct):
|
||||
row: int
|
||||
col: int
|
||||
|
||||
|
||||
class ObscuredRect(BaseStruct):
|
||||
m_xMin: float
|
||||
m_yMin: float
|
||||
m_width: float
|
||||
m_height: float
|
||||
|
||||
|
||||
class Stage(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
direction: int
|
||||
grids: List[GridPosition]
|
||||
boundingBoxes: Union[List[ObscuredRect], None] = None
|
||||
|
||||
|
||||
class RangeTable(BaseStruct):
|
||||
__version__ = "24-02-02-10-18-07-831ad8"
|
||||
|
||||
range_: Dict[str, Stage]
|
@ -1,26 +0,0 @@
|
||||
from typing import Dict, List
|
||||
|
||||
from msgspec import field
|
||||
|
||||
from ..common import BaseStruct
|
||||
|
||||
|
||||
class ItemBundle(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
count: int
|
||||
type_: str = field(name="type")
|
||||
|
||||
|
||||
class ReplicateData(BaseStruct):
|
||||
item: ItemBundle
|
||||
replicateTokenItem: ItemBundle
|
||||
|
||||
|
||||
class ReplicateList(BaseStruct):
|
||||
replicateList: List[ReplicateData]
|
||||
|
||||
|
||||
class ReplicateTable(BaseStruct):
|
||||
__version__ = "24-02-02-10-18-07-831ad8"
|
||||
|
||||
replicate: Dict[str, ReplicateList]
|
@ -1,454 +0,0 @@
|
||||
from typing import Dict, List, Union
|
||||
|
||||
from msgspec import field
|
||||
|
||||
from ..common import BaseStruct
|
||||
|
||||
|
||||
class ItemBundle(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
count: int
|
||||
type_: str = field(name="type")
|
||||
|
||||
|
||||
class StageDataDisplayRewards(BaseStruct):
|
||||
type_: str = field(name="type")
|
||||
id_: str = field(name="id")
|
||||
dropType: int
|
||||
|
||||
|
||||
class Blackboard(BaseStruct):
|
||||
key: str
|
||||
value: Union[float, None] = None
|
||||
valueStr: Union[str, None] = None
|
||||
|
||||
|
||||
class Act17sideDataChoiceNodeOptionData(BaseStruct):
|
||||
canRepeat: bool
|
||||
eventId: str
|
||||
des: str
|
||||
unlockDes: Union[str, None]
|
||||
|
||||
|
||||
class StageDataDisplayDetailRewards(BaseStruct):
|
||||
occPercent: int
|
||||
type_: str = field(name="type")
|
||||
id_: str = field(name="id")
|
||||
dropType: int
|
||||
CannotGetPercent: Union[float, None] = None
|
||||
GetPercent: Union[float, None] = None
|
||||
|
||||
|
||||
class StageDataConditionDesc(BaseStruct):
|
||||
stageId: str
|
||||
completeState: int
|
||||
|
||||
|
||||
class Act17sideDataConstData(BaseStruct):
|
||||
techTreeUnlockEventId: str
|
||||
|
||||
|
||||
class Act17sideDataZoneData(BaseStruct):
|
||||
zoneId: str
|
||||
unlockPlaceId: Union[str, None]
|
||||
unlockText: str
|
||||
|
||||
|
||||
class Act17sideDataMainlineData(BaseStruct):
|
||||
mainlineId: str
|
||||
nodeId: Union[str, None]
|
||||
sortId: int
|
||||
missionSort: str
|
||||
zoneId: str
|
||||
mainlineDes: str
|
||||
focusNodeId: Union[str, None]
|
||||
|
||||
|
||||
class Act17sideDataMainlineChapterData(BaseStruct):
|
||||
chapterId: str
|
||||
chapterDes: str
|
||||
chapterIcon: str
|
||||
unlockDes: str
|
||||
id_: str = field(name="id")
|
||||
|
||||
|
||||
class RunesSelector(BaseStruct):
|
||||
professionMask: int
|
||||
buildableMask: int
|
||||
charIdFilter: Union[List[str], None]
|
||||
enemyIdFilter: Union[List[str], None]
|
||||
enemyIdExcludeFilter: Union[List[str], None]
|
||||
enemyLevelTypeFilter: Union[List[str], None]
|
||||
skillIdFilter: Union[List[str], None]
|
||||
tileKeyFilter: Union[List[str], None]
|
||||
groupTagFilter: Union[List[str], None]
|
||||
filterTagFilter: Union[List[str], None]
|
||||
filterTagExcludeFilter: Union[List[str], None]
|
||||
subProfessionExcludeFilter: Union[List[str], None]
|
||||
mapTagFilter: Union[List[str], None]
|
||||
|
||||
|
||||
class TechTreeBranchRunes(BaseStruct):
|
||||
key: str
|
||||
selector: RunesSelector
|
||||
blackboard: List[Blackboard]
|
||||
|
||||
|
||||
class BranchRuneData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
points: float
|
||||
mutexGroupKey: None
|
||||
description: str
|
||||
runes: List[TechTreeBranchRunes]
|
||||
|
||||
|
||||
class Act17sideDataTechTreeBranchData(BaseStruct):
|
||||
techTreeBranchId: str
|
||||
techTreeId: str
|
||||
techTreeBranchName: str
|
||||
techTreeBranchIcon: str
|
||||
techTreeBranchDesc: str
|
||||
runeData: BranchRuneData
|
||||
|
||||
|
||||
class Act17sideDataTechTreeData(BaseStruct):
|
||||
techTreeId: str
|
||||
sortId: int
|
||||
techTreeName: str
|
||||
defaultBranchId: str
|
||||
lockDes: str
|
||||
|
||||
|
||||
class Act17sideDataArchiveItemUnlockData(BaseStruct):
|
||||
itemId: str
|
||||
itemType: str
|
||||
unlockCondition: str
|
||||
nodeId: Union[str, None]
|
||||
stageParam: str
|
||||
chapterId: Union[str, None]
|
||||
|
||||
|
||||
class Act17sideDataEventData(BaseStruct):
|
||||
eventId: str
|
||||
eventTitle: str
|
||||
eventDesList: List[str]
|
||||
eventPic: Union[str, None] = None
|
||||
eventSpecialPic: Union[str, None] = None
|
||||
|
||||
|
||||
class Act17sideDataChoiceNodeData(BaseStruct):
|
||||
nodeId: str
|
||||
isDisposable: bool
|
||||
choiceName: str
|
||||
choiceDesList: List[str]
|
||||
cancelDes: str
|
||||
choiceNum: int
|
||||
optionList: List[Act17sideDataChoiceNodeOptionData]
|
||||
choicePic: Union[str, None] = None
|
||||
choiceSpecialPic: Union[str, None] = None
|
||||
|
||||
|
||||
class Act17sideDataTechNodeData(BaseStruct):
|
||||
nodeId: str
|
||||
techTreeId: str
|
||||
techTreeName: str
|
||||
techPic: None
|
||||
techSpecialPic: str
|
||||
endEventId: str
|
||||
confirmDes: str
|
||||
techDesList: List[str]
|
||||
missionIdList: List[None]
|
||||
|
||||
|
||||
class Act17sideDataEventNodeData(BaseStruct):
|
||||
nodeId: str
|
||||
eventId: str
|
||||
endEventId: str
|
||||
|
||||
|
||||
class Act17sideDataTreasureNodeData(BaseStruct):
|
||||
nodeId: str
|
||||
treasureId: str
|
||||
treasureName: str
|
||||
treasurePic: Union[str, None]
|
||||
treasureSpecialPic: None
|
||||
endEventId: str
|
||||
confirmDes: str
|
||||
treasureDesList: List[str]
|
||||
missionIdList: List[str]
|
||||
rewardList: List[ItemBundle]
|
||||
treasureType: str
|
||||
|
||||
|
||||
class Act17sideDataBattleNodeData(BaseStruct):
|
||||
nodeId: str
|
||||
stageId: str
|
||||
|
||||
|
||||
class Act17sideDataStoryNodeData(BaseStruct):
|
||||
nodeId: str
|
||||
storyId: str
|
||||
storyKey: str
|
||||
storyName: str
|
||||
storyPic: Union[str, None]
|
||||
confirmDes: str
|
||||
storyDesList: List[str]
|
||||
|
||||
|
||||
class Act17sideDataLandmarkNodeData(BaseStruct):
|
||||
nodeId: str
|
||||
landmarkId: str
|
||||
landmarkName: str
|
||||
landmarkPic: Union[str, None]
|
||||
landmarkSpecialPic: str
|
||||
landmarkDesList: List[str]
|
||||
|
||||
|
||||
class Act17sideDataNodeInfoData(BaseStruct):
|
||||
nodeId: str
|
||||
nodeType: str
|
||||
sortId: int
|
||||
placeId: str
|
||||
isPointPlace: bool
|
||||
chapterId: str
|
||||
trackPointType: str
|
||||
|
||||
|
||||
class Act17sideDataPlaceData(BaseStruct):
|
||||
placeId: str
|
||||
placeDesc: str
|
||||
lockEventId: Union[str, None]
|
||||
zoneId: str
|
||||
|
||||
|
||||
class Act17sideData(BaseStruct):
|
||||
archiveItemUnlockDataMap: Dict[str, Act17sideDataArchiveItemUnlockData]
|
||||
battleNodeDataMap: Dict[str, Act17sideDataBattleNodeData]
|
||||
choiceNodeDataMap: Dict[str, Act17sideDataChoiceNodeData]
|
||||
constData: Act17sideDataConstData
|
||||
eventDataMap: Dict[str, Act17sideDataEventData]
|
||||
eventNodeDataMap: Dict[str, Act17sideDataEventNodeData]
|
||||
landmarkNodeDataMap: Dict[str, Act17sideDataLandmarkNodeData]
|
||||
mainlineChapterDataMap: Dict[str, Act17sideDataMainlineChapterData]
|
||||
mainlineDataMap: Dict[str, Act17sideDataMainlineData]
|
||||
nodeInfoDataMap: Dict[str, Act17sideDataNodeInfoData]
|
||||
placeDataMap: Dict[str, Act17sideDataPlaceData]
|
||||
storyNodeDataMap: Dict[str, Act17sideDataStoryNodeData]
|
||||
techNodeDataMap: Dict[str, Act17sideDataTechNodeData]
|
||||
techTreeBranchDataMap: Dict[str, Act17sideDataTechTreeBranchData]
|
||||
techTreeDataMap: Dict[str, Act17sideDataTechTreeData]
|
||||
treasureNodeDataMap: Dict[str, Act17sideDataTreasureNodeData]
|
||||
zoneDataList: List[Act17sideDataZoneData]
|
||||
|
||||
|
||||
class RuneDataSelector(BaseStruct):
|
||||
buildableMask: int
|
||||
professionMask: int
|
||||
charIdFilter: Union[List[str], None]
|
||||
enemyIdFilter: Union[List[str], None]
|
||||
enemyIdExcludeFilter: Union[List[str], None]
|
||||
enemyLevelTypeFilter: Union[List[str], None]
|
||||
skillIdFilter: Union[List[str], None]
|
||||
tileKeyFilter: Union[List[str], None]
|
||||
groupTagFilter: Union[List[str], None]
|
||||
filterTagFilter: Union[List[str], None]
|
||||
filterTagExcludeFilter: Union[List[str], None]
|
||||
subProfessionExcludeFilter: Union[List[str], None]
|
||||
mapTagFilter: Union[List[str], None]
|
||||
|
||||
|
||||
class RuneData(BaseStruct):
|
||||
blackboard: List[Blackboard]
|
||||
key: str
|
||||
selector: RuneDataSelector
|
||||
m_inited: Union[bool, None] = None
|
||||
|
||||
|
||||
class RuneTablePackedRuneData(BaseStruct):
|
||||
description: str
|
||||
id_: str = field(name="id")
|
||||
points: float
|
||||
runes: List[RuneData]
|
||||
mutexGroupKey: Union[str, None] = None
|
||||
|
||||
|
||||
class Act25SideDataBattlePerformanceData(BaseStruct):
|
||||
itemDesc: str
|
||||
itemId: str
|
||||
itemIcon: str
|
||||
itemName: str
|
||||
itemTechType: str
|
||||
runeData: RuneTablePackedRuneData
|
||||
sortId: int
|
||||
|
||||
|
||||
class ActivityCustomDataAct25sideCustomData(BaseStruct):
|
||||
battlePerformanceData: Dict[str, Act25SideDataBattlePerformanceData]
|
||||
|
||||
|
||||
class ActivityCustomDataAct20sideCustomData(BaseStruct):
|
||||
zoneAdditionDataMap: Dict[str, str]
|
||||
residentCartDatas: Dict[str, Dict[str, str]]
|
||||
|
||||
|
||||
class Act21SideDataZoneAddtionData(BaseStruct):
|
||||
zoneId: str
|
||||
unlockText: str
|
||||
stageUnlockText: Union[str, None]
|
||||
entryId: str
|
||||
|
||||
|
||||
class Act21SideDataConstData(BaseStruct):
|
||||
lineConnectZone: str
|
||||
|
||||
|
||||
class ActivityCustomDataAct21sideCustomData(BaseStruct):
|
||||
zoneAdditionDataMap: Dict[str, Act21SideDataZoneAddtionData]
|
||||
constData: Act21SideDataConstData
|
||||
|
||||
|
||||
class ActivityCustomData(BaseStruct):
|
||||
TYPE_ACT17SIDE: Dict[str, Act17sideData]
|
||||
TYPE_ACT25SIDE: Dict[str, ActivityCustomDataAct25sideCustomData]
|
||||
TYPE_ACT20SIDE: Dict[str, ActivityCustomDataAct20sideCustomData]
|
||||
TYPE_ACT21SIDE: Dict[str, ActivityCustomDataAct21sideCustomData]
|
||||
|
||||
|
||||
class RetroTrailRuleData(BaseStruct):
|
||||
title: List[str]
|
||||
desc: List[str]
|
||||
|
||||
|
||||
class WeightItemBundle(BaseStruct):
|
||||
count: int
|
||||
dropType: str
|
||||
id_: str = field(name="id")
|
||||
type_: str = field(name="type")
|
||||
weight: int
|
||||
|
||||
|
||||
class StageDataStageDropInfo(BaseStruct):
|
||||
displayRewards: List[StageDataDisplayRewards]
|
||||
displayDetailRewards: List[StageDataDisplayDetailRewards]
|
||||
firstPassRewards: Union[List[ItemBundle], None] = None
|
||||
firstCompleteRewards: Union[List[ItemBundle], None] = None
|
||||
passRewards: Union[List[List[WeightItemBundle]], None] = None
|
||||
completeRewards: Union[List[List[WeightItemBundle]], None] = None
|
||||
|
||||
|
||||
class StageData(BaseStruct, kw_only=False):
|
||||
stageType: str
|
||||
difficulty: str
|
||||
performanceStageFlag: str
|
||||
diffGroup: str
|
||||
unlockCondition: List[StageDataConditionDesc]
|
||||
stageId: str
|
||||
levelId: Union[str, None]
|
||||
zoneId: str
|
||||
code: str
|
||||
name: str
|
||||
description: str
|
||||
hardStagedId: Union[str, None]
|
||||
dangerLevel: Union[str, None]
|
||||
dangerPoint: float
|
||||
loadingPicId: str
|
||||
canPractice: bool
|
||||
canBattleReplay: bool
|
||||
apCost: int
|
||||
apFailReturn: int
|
||||
etItemId: str
|
||||
etCost: int
|
||||
etFailReturn: int
|
||||
etButtonStyle: None
|
||||
apProtectTimes: int
|
||||
diamondOnceDrop: int
|
||||
practiceTicketCost: int
|
||||
dailyStageDifficulty: int
|
||||
expGain: int
|
||||
goldGain: int
|
||||
loseExpGain: int
|
||||
loseGoldGain: int
|
||||
passFavor: int
|
||||
completeFavor: int
|
||||
slProgress: int
|
||||
displayMainItem: None
|
||||
hilightMark: bool
|
||||
bossMark: bool
|
||||
isPredefined: bool
|
||||
isHardPredefined: bool
|
||||
isSkillSelectablePredefined: bool
|
||||
isStoryOnly: bool
|
||||
appearanceStyle: int
|
||||
stageDropInfo: StageDataStageDropInfo
|
||||
startButtonOverrideId: None
|
||||
isStagePatch: bool
|
||||
mainStageId: str
|
||||
canUseTech: Union[bool, None] = None
|
||||
canUseCharm: Union[bool, None] = None
|
||||
canUseBattlePerformance: Union[bool, None] = None
|
||||
|
||||
|
||||
class RetroTrailRewardItem(BaseStruct):
|
||||
trailRewardId: str
|
||||
starCount: int
|
||||
rewardItem: ItemBundle
|
||||
|
||||
|
||||
class RetroTrailData(BaseStruct):
|
||||
retroId: str
|
||||
trailStartTime: int
|
||||
trailRewardList: List[RetroTrailRewardItem]
|
||||
stageList: List[str]
|
||||
relatedChar: str
|
||||
relatedFullPotentialItemId: None
|
||||
themeColor: str
|
||||
fullPotentialItemId: str
|
||||
|
||||
|
||||
class RetroActData(BaseStruct):
|
||||
retroId: str
|
||||
type_: int = field(name="type")
|
||||
linkedActId: List[str]
|
||||
startTime: int
|
||||
trailStartTime: int
|
||||
index: int
|
||||
name: str
|
||||
detail: str
|
||||
haveTrail: bool
|
||||
customActId: Union[str, None]
|
||||
customActType: str
|
||||
|
||||
|
||||
class StageValidInfo(BaseStruct):
|
||||
startTs: int
|
||||
endTs: int
|
||||
|
||||
|
||||
class RetroStageOverrideInfo(BaseStruct):
|
||||
apCost: int
|
||||
apFailReturn: int
|
||||
completeFavor: int
|
||||
dropInfo: StageDataStageDropInfo
|
||||
expGain: int
|
||||
goldGain: int
|
||||
passFavor: int
|
||||
zoneId: str
|
||||
|
||||
|
||||
class RetroTable(BaseStruct):
|
||||
__version__ = "24-02-02-10-18-07-831ad8"
|
||||
|
||||
customData: ActivityCustomData
|
||||
initRetroCoin: int
|
||||
retroActList: Dict[str, RetroActData]
|
||||
retroCoinMax: int
|
||||
retroCoinPerWeek: int
|
||||
retroDetail: str
|
||||
retroPreShowTime: int
|
||||
retroTrailList: Dict[str, RetroTrailData]
|
||||
retroUnlockCost: int
|
||||
ruleData: RetroTrailRuleData
|
||||
stageList: Dict[str, StageData]
|
||||
stageValidInfo: Dict[str, StageValidInfo]
|
||||
zoneToRetro: Dict[str, str]
|
||||
stages: Union[Dict[str, RetroStageOverrideInfo], None] = None
|
@ -1,206 +0,0 @@
|
||||
from typing import Dict, List, Union
|
||||
|
||||
from msgspec import field
|
||||
|
||||
from ..common import BaseStruct
|
||||
|
||||
|
||||
class Blackboard(BaseStruct):
|
||||
key: str
|
||||
value: Union[float, None] = None
|
||||
valueStr: Union[str, None] = None
|
||||
|
||||
|
||||
class RoguelikeBuff(BaseStruct):
|
||||
key: str
|
||||
blackboard: List[Blackboard]
|
||||
|
||||
|
||||
class RoguelikeOuterBuff(BaseStruct):
|
||||
level: int
|
||||
name: str
|
||||
iconId: str
|
||||
description: str
|
||||
usage: str
|
||||
key: str
|
||||
blackboard: List[Blackboard]
|
||||
buffId: Union[str, None] = None
|
||||
|
||||
|
||||
class RoguelikeOutBuffData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
buffs: Dict[str, RoguelikeOuterBuff]
|
||||
|
||||
|
||||
class RoguelikeEndingData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
backgroundId: str
|
||||
name: str
|
||||
description: str
|
||||
priority: int
|
||||
unlockItemId: Union[str, None]
|
||||
changeEndingDesc: None
|
||||
|
||||
|
||||
class RoguelikeModeData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
name: str
|
||||
canUnlockItem: int
|
||||
scoreFactor: float
|
||||
itemPools: List[str]
|
||||
difficultyDesc: str
|
||||
ruleDesc: str
|
||||
sortId: int
|
||||
unlockMode: str
|
||||
color: str
|
||||
|
||||
|
||||
class RoguelikeChoiceSceneData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
title: str
|
||||
description: str
|
||||
background: str
|
||||
|
||||
|
||||
class RoguelikeChoiceData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
title: str
|
||||
description: Union[str, None]
|
||||
type_: str = field(name="type")
|
||||
nextSceneId: Union[str, None]
|
||||
icon: Union[str, None]
|
||||
param: Dict[str, object]
|
||||
|
||||
|
||||
class RoguelikeZoneData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
name: str
|
||||
description: str
|
||||
endingDescription: str
|
||||
backgroundId: str
|
||||
subIconId: str
|
||||
|
||||
|
||||
class RoguelikeStageData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
linkedStageId: str
|
||||
levelId: str
|
||||
code: str
|
||||
name: str
|
||||
loadingPicId: str
|
||||
description: str
|
||||
eliteDesc: Union[str, None]
|
||||
isBoss: int
|
||||
isElite: int
|
||||
difficulty: str
|
||||
|
||||
|
||||
class RoguelikeRelicFeature(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
buffs: List[RoguelikeBuff]
|
||||
|
||||
|
||||
class RoguelikeUpgradeTicketFeature(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
profession: int
|
||||
rarity: int
|
||||
professionList: List[str]
|
||||
rarityList: List[int]
|
||||
|
||||
|
||||
class RoguelikeRecruitTicketFeature(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
profession: int
|
||||
rarity: int
|
||||
professionList: List[str]
|
||||
rarityList: List[int]
|
||||
extraEliteNum: int
|
||||
extraFreeRarity: List[Union[int, None]]
|
||||
extraCharIds: List[str]
|
||||
|
||||
|
||||
class RelicStableUnlockParam(BaseStruct):
|
||||
unlockCondDetail: str
|
||||
unlockCnt: int
|
||||
|
||||
|
||||
class RoguelikeItemData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
name: str
|
||||
description: Union[str, None]
|
||||
usage: str
|
||||
obtainApproach: str
|
||||
iconId: str
|
||||
type_: str = field(name="type")
|
||||
rarity: str
|
||||
value: int
|
||||
sortId: int
|
||||
unlockCond: Union[str, None]
|
||||
unlockCondDesc: Union[str, None]
|
||||
unlockCondParams: List[Union[str, None]]
|
||||
stableUnlockCond: Union[RelicStableUnlockParam, None]
|
||||
|
||||
|
||||
class RoguelikeItemTable(BaseStruct):
|
||||
items: Dict[str, RoguelikeItemData]
|
||||
recruitTickets: Dict[str, RoguelikeRecruitTicketFeature]
|
||||
upgradeTickets: Dict[str, RoguelikeUpgradeTicketFeature]
|
||||
relics: Dict[str, RoguelikeRelicFeature]
|
||||
|
||||
|
||||
class RoguelikeConstTableEventTypeData(BaseStruct):
|
||||
name: str
|
||||
description: str
|
||||
|
||||
|
||||
class RoguelikeConstTableCharUpgradeData(BaseStruct):
|
||||
evolvePhase: int
|
||||
skillLevel: int
|
||||
skillSpecializeLevel: int
|
||||
|
||||
|
||||
class RoguelikeConstTableRecruitData(BaseStruct):
|
||||
recruitPopulation: int
|
||||
upgradePopulation: int
|
||||
|
||||
|
||||
class RoguelikeConstTablePlayerLevelData(BaseStruct):
|
||||
exp: int
|
||||
populationUp: int
|
||||
squadCapacityUp: int
|
||||
battleCharLimitUp: int
|
||||
|
||||
|
||||
class RoguelikeConstTable(BaseStruct):
|
||||
playerLevelTable: Dict[str, RoguelikeConstTablePlayerLevelData]
|
||||
recruitPopulationTable: Dict[str, RoguelikeConstTableRecruitData]
|
||||
charUpgradeTable: Dict[str, RoguelikeConstTableCharUpgradeData]
|
||||
eventTypeTable: Dict[str, RoguelikeConstTableEventTypeData]
|
||||
shopDialogs: List[str]
|
||||
shopRelicDialogs: List[str]
|
||||
shopTicketDialogs: List[str]
|
||||
mimicEnemyIds: List[str]
|
||||
clearZoneScores: List[int]
|
||||
moveToNodeScore: int
|
||||
clearNormalBattleScore: int
|
||||
clearEliteBattleScore: int
|
||||
clearBossBattleScore: int
|
||||
gainRelicScore: int
|
||||
gainCharacterScore: int
|
||||
unlockRelicSpecialScore: int
|
||||
squadCapacityMax: int
|
||||
bossIds: List[str]
|
||||
|
||||
|
||||
class RoguelikeTable(BaseStruct):
|
||||
__version__ = "24-02-02-10-18-07-831ad8"
|
||||
|
||||
constTable: RoguelikeConstTable
|
||||
itemTable: RoguelikeItemTable
|
||||
stages: Dict[str, RoguelikeStageData]
|
||||
zones: Dict[str, RoguelikeZoneData]
|
||||
choices: Dict[str, RoguelikeChoiceData]
|
||||
choiceScenes: Dict[str, RoguelikeChoiceSceneData]
|
||||
modes: Dict[str, RoguelikeModeData]
|
||||
endings: Dict[str, RoguelikeEndingData]
|
||||
outBuffs: Dict[str, RoguelikeOutBuffData]
|
File diff suppressed because it is too large
Load Diff
@ -1,880 +0,0 @@
|
||||
from typing import Dict, List, Union
|
||||
|
||||
from ..common import BaseStruct
|
||||
|
||||
|
||||
class HomeEntryDisplayData(BaseStruct):
|
||||
displayId: str
|
||||
topicId: str
|
||||
startTs: int
|
||||
endTs: int
|
||||
|
||||
|
||||
class SandboxPermBasicData(BaseStruct):
|
||||
topicId: str
|
||||
topicTemplate: str
|
||||
topicName: str
|
||||
topicStartTime: int
|
||||
fullStoredTime: int
|
||||
sortId: int
|
||||
priceItemId: str
|
||||
templateShopId: str
|
||||
homeEntryDisplayData: List[HomeEntryDisplayData]
|
||||
webBusType: str
|
||||
medalGroupId: str
|
||||
|
||||
|
||||
class SandboxV2NodeData(BaseStruct):
|
||||
minDistance: float
|
||||
|
||||
|
||||
class UnityEngineVector2(BaseStruct):
|
||||
x: float
|
||||
y: float
|
||||
|
||||
|
||||
class SandboxV2MapZoneData(BaseStruct):
|
||||
zoneId: str
|
||||
hasBorder: bool
|
||||
center: Union[UnityEngineVector2, None] = None
|
||||
vertices: Union[List[UnityEngineVector2], None] = None
|
||||
triangles: Union[List[List[int]], None] = None
|
||||
|
||||
|
||||
class SandboxV2MapConfig(BaseStruct):
|
||||
isRift: bool
|
||||
isGuide: bool
|
||||
cameraBoundMin: UnityEngineVector2
|
||||
cameraBoundMax: UnityEngineVector2
|
||||
cameraMaxNormalizedZoom: float
|
||||
backgroundId: str
|
||||
|
||||
|
||||
class SandboxV2MapData(BaseStruct):
|
||||
nodes: Dict[str, SandboxV2NodeData]
|
||||
zones: Dict[str, SandboxV2MapZoneData]
|
||||
mapConfig: SandboxV2MapConfig
|
||||
centerNodeId: str
|
||||
monthModeNodeId: Union[str, None]
|
||||
|
||||
|
||||
class SandboxV2ItemTrapData(BaseStruct):
|
||||
itemId: str
|
||||
trapId: str
|
||||
trapPhase: int
|
||||
trapLevel: int
|
||||
skillIndex: int
|
||||
skillLevel: int
|
||||
buildingLevel: int
|
||||
updatedItemId: Union[str, None]
|
||||
minLevelItemId: str
|
||||
baseItemName: str
|
||||
itemType: str
|
||||
itemTag: str
|
||||
|
||||
|
||||
class SandboxV2ItemTrapTagData(BaseStruct):
|
||||
tag: str
|
||||
tagName: str
|
||||
tagPic: str
|
||||
sortId: int
|
||||
|
||||
|
||||
class SandboxV2BuildingItemData(BaseStruct):
|
||||
itemId: str
|
||||
itemRarity: int
|
||||
|
||||
|
||||
class SandboxV2CraftItemData(BaseStruct):
|
||||
itemId: str
|
||||
type: int
|
||||
buildingUnlockDesc: str
|
||||
materialItems: Dict[str, int]
|
||||
upgradeItems: Union[Dict[str, int], None]
|
||||
withdrawRatio: int
|
||||
repairCost: int
|
||||
craftGroupId: str
|
||||
recipeLevel: int
|
||||
isHidden: Union[bool, None] = None
|
||||
|
||||
|
||||
class SandboxV2LivestockData(BaseStruct):
|
||||
livestockItemId: str
|
||||
shinyLivestockItemId: str
|
||||
livestockEnemyId: str
|
||||
|
||||
|
||||
class SandboxV2CraftGroupData(BaseStruct):
|
||||
items: List[str]
|
||||
|
||||
|
||||
class SandboxV2AlchemyMaterialData(BaseStruct):
|
||||
itemId: str
|
||||
count: int
|
||||
|
||||
|
||||
class SandboxV2AlchemyRecipeData(BaseStruct):
|
||||
recipeId: str
|
||||
materials: List[SandboxV2AlchemyMaterialData]
|
||||
itemId: str
|
||||
onceAlchemyRatio: int
|
||||
recipeLevel: int
|
||||
unlockDesc: str
|
||||
|
||||
|
||||
class SandboxV2DrinkMatData(BaseStruct):
|
||||
id: str
|
||||
type: str
|
||||
count: int
|
||||
|
||||
|
||||
class SandboxV2FoodMatData(BaseStruct):
|
||||
id: str
|
||||
type: str
|
||||
sortId: int
|
||||
attribute: Union[str, None] = None
|
||||
buffDesc: Union[str, None] = None
|
||||
|
||||
|
||||
class SandboxV2FoodRecipeData(BaseStruct):
|
||||
foodId: str
|
||||
mats: List[str]
|
||||
|
||||
|
||||
class SandboxV2FoodData(BaseStruct):
|
||||
id: str
|
||||
attributes: List[str]
|
||||
duration: int
|
||||
itemName: str
|
||||
itemUsage: str
|
||||
sortId: int
|
||||
enhancedUsage: Union[str, None] = None
|
||||
generalName: Union[str, None] = None
|
||||
enhancedName: Union[str, None] = None
|
||||
recipes: Union[List[SandboxV2FoodRecipeData], None] = None
|
||||
|
||||
|
||||
class SandboxV2NodeTypeData(BaseStruct):
|
||||
nodeType: str
|
||||
name: str
|
||||
iconId: str
|
||||
|
||||
|
||||
class SandboxV2NodeUpgradeData(BaseStruct):
|
||||
nodeUpgradeId: str
|
||||
name: str
|
||||
description: str
|
||||
upgradeDesc: str
|
||||
upgradeTips: str
|
||||
itemType: str
|
||||
itemTag: str
|
||||
itemCnt: int
|
||||
itemRarity: int
|
||||
|
||||
|
||||
class SandboxV2WeatherData(BaseStruct):
|
||||
weatherId: str
|
||||
name: str
|
||||
weatherLevel: int
|
||||
weatherType: str
|
||||
weatherTypeName: str
|
||||
weatherIconId: str
|
||||
functionDesc: str
|
||||
description: str
|
||||
buffId: Union[str, None]
|
||||
|
||||
|
||||
class SandboxV2StageData(BaseStruct):
|
||||
stageId: str
|
||||
levelId: str
|
||||
code: str
|
||||
name: str
|
||||
description: str
|
||||
actionCost: int
|
||||
actionCostEnemyRush: int
|
||||
|
||||
|
||||
class SandboxV2ZoneData(BaseStruct):
|
||||
zoneId: str
|
||||
zoneName: str
|
||||
displayName: bool
|
||||
appellation: Union[str, None]
|
||||
|
||||
|
||||
class SandboxV2NodeBuffData(BaseStruct):
|
||||
runeId: str
|
||||
name: str
|
||||
description: str
|
||||
extra: str
|
||||
iconId: str
|
||||
|
||||
|
||||
class SandboxV2RewardItemConfigData(BaseStruct):
|
||||
rewardItem: str
|
||||
rewardType: str
|
||||
|
||||
|
||||
class SandboxV2RewardData(BaseStruct):
|
||||
rewardList: List[SandboxV2RewardItemConfigData]
|
||||
|
||||
|
||||
class SandboxV2RewardCommonConfig(BaseStruct):
|
||||
rewardItemId: str
|
||||
rewardItemType: str
|
||||
count: int
|
||||
|
||||
|
||||
class SandboxV2RewardConfigGroupData(BaseStruct):
|
||||
stageMapPreviewRewardDict: Dict[str, SandboxV2RewardData]
|
||||
stageDetailPreviewRewardDict: Dict[str, SandboxV2RewardData]
|
||||
trapRewardDict: Dict[str, SandboxV2RewardCommonConfig]
|
||||
enemyRewardDict: Dict[str, SandboxV2RewardCommonConfig]
|
||||
unitPreviewRewardDict: Dict[str, SandboxV2RewardData]
|
||||
stageRewardDict: Dict[str, SandboxV2RewardData]
|
||||
rushPreviewRewardDict: Dict[str, SandboxV2RewardData]
|
||||
|
||||
|
||||
class SandboxV2FloatIconData(BaseStruct):
|
||||
picId: str
|
||||
picName: Union[str, None]
|
||||
|
||||
|
||||
class SandboxV2EnemyRushTypeData(BaseStruct):
|
||||
type: str
|
||||
description: str
|
||||
sortId: int
|
||||
|
||||
|
||||
class SandboxV2BattleRushEnemyConfig(BaseStruct):
|
||||
enemyKey: str
|
||||
branchId: str
|
||||
count: int
|
||||
interval: float
|
||||
preDelay: float
|
||||
|
||||
|
||||
class SandboxV2BattleRushEnemyGroupConfig(BaseStruct):
|
||||
enemyGroupKey: str
|
||||
enemy: List[SandboxV2BattleRushEnemyConfig]
|
||||
dynamicEnemy: List[str]
|
||||
|
||||
|
||||
class RushEnemyDBRef(BaseStruct):
|
||||
id: str
|
||||
level: int
|
||||
|
||||
|
||||
class SandboxV2BattleRushEnemyData(BaseStruct):
|
||||
rushEnemyGroupConfigs: Dict[str, List[SandboxV2BattleRushEnemyGroupConfig]]
|
||||
rushEnemyDbRef: List[RushEnemyDBRef]
|
||||
|
||||
|
||||
class SandboxV2GameConst(BaseStruct):
|
||||
mainMapId: str
|
||||
baseTrapId: str
|
||||
portableTrapId: str
|
||||
doorTrapId: str
|
||||
mineTrapId: str
|
||||
neutralBossEnemyId: List[str]
|
||||
nestTrapId: str
|
||||
shopNpcName: str
|
||||
daysBetweenAssessment: int
|
||||
portableConstructUnlockLevel: int
|
||||
outpostConstructUnlockLevel: int
|
||||
maxEnemyCountSameTimeInRush: int
|
||||
maxSaveCnt: int
|
||||
firstSeasonDuration: int
|
||||
seasonTransitionLoop: List[str]
|
||||
seasonDurationLoop: List[int]
|
||||
firstSeasonStartAngle: float
|
||||
seasonTransitionAngleLoop: List[float]
|
||||
seasonAngle: float
|
||||
battleItemDesc: str
|
||||
foodDesc: str
|
||||
multipleSurvivalDayDesc: str
|
||||
multipleTips: str
|
||||
techProgressScore: int
|
||||
otherEnemyRushName: str
|
||||
surviveDayText: str
|
||||
survivePeriodText: str
|
||||
surviveScoreText: str
|
||||
actionPointScoreText: str
|
||||
nodeExploreDesc: str
|
||||
dungeonExploreDesc: str
|
||||
nodeCompleteDesc: str
|
||||
noRiftDungeonDesc: str
|
||||
baseRushedDesc: str
|
||||
riftBaseDesc: str
|
||||
riftBaseRushedDesc: str
|
||||
dungeonTriggeredGuideQuestList: List[str]
|
||||
|
||||
|
||||
class ItemBundle(BaseStruct):
|
||||
id: str
|
||||
count: int
|
||||
type: str
|
||||
|
||||
|
||||
class SandboxV2BasicConst(BaseStruct):
|
||||
staminaItemId: str
|
||||
goldItemId: str
|
||||
dimensioncoinItemId: str
|
||||
alwaysShowItemIdsConstruct: List[str]
|
||||
alwaysShowItemIds: List[str]
|
||||
bagBottomBarResType: List[str]
|
||||
failedCookFood: str
|
||||
maxFoodDuration: int
|
||||
drinkCostOnce: int
|
||||
drinkMakeLimit: int
|
||||
specialMatWater: str
|
||||
enhancedSubFoodmat: str
|
||||
enhancedDuration: int
|
||||
workbenchMakeLimit: int
|
||||
logisticsPosLimit: int
|
||||
logisticsUnlockLevel: int
|
||||
logisticsDrinkCost: int
|
||||
logisticsEvacuateTips: str
|
||||
logisticsEvacuateWarning: str
|
||||
baseRepairCost: int
|
||||
portRepairCost: int
|
||||
unitFenceLimit: int
|
||||
cageId: str
|
||||
fenceId: str
|
||||
monthlyRushEntryText1: Union[str, None]
|
||||
monthlyEntryUnlockText: str
|
||||
monthlyEntryRiftText: str
|
||||
monthlyRushIntro: str
|
||||
monthlyCoin: ItemBundle
|
||||
charRarityColorList: List[str]
|
||||
squadCharCapacity: int
|
||||
totalSquadCnt: int
|
||||
toolboxCapacity: int
|
||||
toolCntLimitInSquad: int
|
||||
miniSquadCharCapacity: int
|
||||
miniSquadDrinkCost: int
|
||||
normalSquadDrinkCost: int
|
||||
emptySquadDrinkCost: int
|
||||
achieveTypeAll: str
|
||||
constructModeBgmHome: str
|
||||
battleBgmCollect: str
|
||||
battleBgmHunt: str
|
||||
battleBgmEnemyRush: str
|
||||
battleBgmBossRush: str
|
||||
imgLoadingNormalName: str
|
||||
imgLoadingBaseName: str
|
||||
imgUnloadingBaseName: str
|
||||
|
||||
|
||||
class SandboxV2RiftConst(BaseStruct):
|
||||
refreshRate: int
|
||||
randomDungeonId: str
|
||||
subTargetRewardId: str
|
||||
dungeonSeasonId: str
|
||||
fixedDungeonTypeName: str
|
||||
randomDungeonTypeName: str
|
||||
noTeamDescription: str
|
||||
noTeamName: str
|
||||
noTeamBackgroundId: str
|
||||
noTeamSmallIconId: str
|
||||
noTeamBigIconId: str
|
||||
messengerEnemyId: str
|
||||
riftRushEnemyGroupLimit: int
|
||||
riftRushSpawnCd: int
|
||||
|
||||
|
||||
class SandboxV2DevelopmentConst(BaseStruct):
|
||||
techPointsTotal: int
|
||||
|
||||
|
||||
class TipData(BaseStruct):
|
||||
tip: str
|
||||
weight: float
|
||||
category: str
|
||||
|
||||
|
||||
class RuneDataSelector(BaseStruct):
|
||||
professionMask: int
|
||||
buildableMask: int
|
||||
charIdFilter: Union[List[str], None] = None
|
||||
enemyIdFilter: Union[List[str], None] = None
|
||||
enemyIdExcludeFilter: Union[List[str], None] = None
|
||||
enemyLevelTypeFilter: Union[List[str], None] = None
|
||||
skillIdFilter: Union[List[str], None] = None
|
||||
tileKeyFilter: Union[List[str], None] = None
|
||||
groupTagFilter: Union[List[str], None] = None
|
||||
filterTagFilter: Union[List[str], None] = None
|
||||
filterTagExcludeFilter: Union[List[str], None] = None
|
||||
subProfessionExcludeFilter: Union[List[str], None] = None
|
||||
mapTagFilter: Union[List[str], None] = None
|
||||
|
||||
|
||||
class BlackboardDataPair(BaseStruct):
|
||||
key: str
|
||||
value: Union[float, None] = None
|
||||
valueStr: Union[str, None] = None
|
||||
|
||||
|
||||
class RuneData(BaseStruct):
|
||||
key: str
|
||||
selector: RuneDataSelector
|
||||
blackboard: List[BlackboardDataPair]
|
||||
|
||||
|
||||
class PackedRuneData(BaseStruct):
|
||||
id: str
|
||||
points: float
|
||||
mutexGroupKey: Union[str, None]
|
||||
description: str
|
||||
runes: List[RuneData]
|
||||
|
||||
|
||||
class LegacyInLevelRuneData(BaseException):
|
||||
difficultyMask: int
|
||||
key: str
|
||||
professionMask: int
|
||||
buildableMask: int
|
||||
blackboard: List[BlackboardDataPair]
|
||||
|
||||
|
||||
class SandboxV2QuestData(BaseStruct):
|
||||
questId: str
|
||||
questLine: str
|
||||
questTitle: Union[str, None]
|
||||
questDesc: Union[str, None]
|
||||
questTargetDesc: Union[str, None]
|
||||
isDisplay: bool
|
||||
questRouteType: str
|
||||
questLineType: str
|
||||
questRouteParam: Union[str, None]
|
||||
showProgressIndex: int
|
||||
|
||||
|
||||
class SandboxV2NpcData(BaseStruct):
|
||||
npcId: str
|
||||
trapId: str
|
||||
npcType: str
|
||||
dialogIds: Dict[str, str]
|
||||
npcLocation: Union[List[int], None]
|
||||
npcOrientation: int
|
||||
picId: str
|
||||
picName: str
|
||||
showPic: bool
|
||||
reactSkillIndex: int
|
||||
|
||||
|
||||
class SandboxV2DialogData(BaseStruct):
|
||||
dialogId: str
|
||||
avgId: str
|
||||
|
||||
|
||||
class SandboxV2QuestLineData(BaseStruct):
|
||||
questLineId: str
|
||||
questLineTitle: str
|
||||
questLineType: str
|
||||
questLineBadgeType: int
|
||||
questLineDesc: str
|
||||
sortId: int
|
||||
|
||||
|
||||
class SandboxV2GuideQuestData(BaseStruct):
|
||||
questId: str
|
||||
storyId: str
|
||||
triggerKey: str
|
||||
|
||||
|
||||
class SandboxV2DevelopmentData(BaseStruct):
|
||||
techId: str
|
||||
techType: str
|
||||
positionX: int
|
||||
positionY: int
|
||||
frontNodeId: Union[str, None]
|
||||
nextNodeIds: Union[List[str], None]
|
||||
limitBaseLevel: int
|
||||
tokenCost: int
|
||||
techName: str
|
||||
techIconId: str
|
||||
nodeTitle: str
|
||||
rawDesc: str
|
||||
canBuffReserch: bool
|
||||
|
||||
|
||||
class SandboxV2EventData(BaseStruct):
|
||||
eventId: str
|
||||
type: str
|
||||
iconId: str
|
||||
iconName: Union[str, None]
|
||||
enterSceneId: str
|
||||
|
||||
|
||||
class SandboxV2EventSceneData(BaseStruct):
|
||||
eventSceneId: str
|
||||
title: str
|
||||
desc: str
|
||||
choiceIds: List[str]
|
||||
|
||||
|
||||
class SandboxV2EventChoiceData(BaseStruct):
|
||||
choiceId: str
|
||||
type: str
|
||||
costAction: int
|
||||
title: str
|
||||
desc: str
|
||||
expeditionId: Union[str, None]
|
||||
|
||||
|
||||
class SandboxV2ExpeditionData(BaseStruct):
|
||||
expeditionId: str
|
||||
desc: str
|
||||
effectDesc: str
|
||||
costAction: int
|
||||
costDrink: int
|
||||
charCnt: int
|
||||
profession: int
|
||||
professions: List[str]
|
||||
minEliteRank: int
|
||||
duration: int
|
||||
|
||||
|
||||
class SandboxV2EventEffectData(BaseStruct):
|
||||
eventEffectId: str
|
||||
buffId: str
|
||||
duration: int
|
||||
desc: str
|
||||
|
||||
|
||||
class SandboxV2ShopGoodData(BaseStruct):
|
||||
goodId: str
|
||||
itemId: str
|
||||
count: int
|
||||
coinType: str
|
||||
value: int
|
||||
|
||||
|
||||
class SandboxV2ShopDialogData(BaseStruct):
|
||||
seasonDialogs: Dict[str, List[str]]
|
||||
afterBuyDialogs: List[str]
|
||||
shopEmptyDialogs: List[str]
|
||||
|
||||
|
||||
class SandboxV2LogisticsData(BaseStruct):
|
||||
id: str
|
||||
desc: str
|
||||
noBuffDesc: str
|
||||
iconId: str
|
||||
profession: str
|
||||
sortId: int
|
||||
levelParams: List[str]
|
||||
|
||||
|
||||
class SandboxV2LogisticsCharData(BaseStruct):
|
||||
levelUpperLimit: int
|
||||
charUpperLimit: int
|
||||
|
||||
|
||||
class SandboxV2MonthRushData(BaseStruct):
|
||||
monthlyRushId: str
|
||||
startTime: int
|
||||
endTime: int
|
||||
isLast: bool
|
||||
sortId: int
|
||||
rushGroupKey: str
|
||||
monthlyRushName: str
|
||||
monthlyRushDes: str
|
||||
weatherId: str
|
||||
nodeId: str
|
||||
conditionGroup: str
|
||||
conditionDesc: str
|
||||
rewardItemList: List[ItemBundle]
|
||||
|
||||
|
||||
class SandboxV2RiftParamData(BaseStruct):
|
||||
id: str
|
||||
desc: str
|
||||
iconId: str
|
||||
bkColor: str
|
||||
|
||||
|
||||
class SandboxV2RiftSubTargetData(BaseStruct):
|
||||
id: str
|
||||
name: str
|
||||
desc: str
|
||||
|
||||
|
||||
class SandboxV2RiftMainTargetData(BaseStruct):
|
||||
id: str
|
||||
title: str
|
||||
desc: str
|
||||
storyDesc: str
|
||||
targetDayCount: int
|
||||
targetType: str
|
||||
questIconId: Union[str, None]
|
||||
questIconName: Union[str, None]
|
||||
|
||||
|
||||
class SandboxV2RiftGlobalEffectData(BaseStruct):
|
||||
id: str
|
||||
desc: str
|
||||
|
||||
|
||||
class SandboxV2FixedRiftData(BaseStruct):
|
||||
riftId: str
|
||||
riftName: str
|
||||
rewardGroupId: str
|
||||
|
||||
|
||||
class SandboxV2RiftTeamBuffData(BaseStruct):
|
||||
teamId: str
|
||||
teamName: str
|
||||
buffLevel: int
|
||||
buffDesc: str
|
||||
teamSmallIconId: str
|
||||
teamBigIconId: str
|
||||
teamDesc: str
|
||||
teamBgId: str
|
||||
|
||||
|
||||
class SandboxV2RiftDifficultyData(BaseStruct):
|
||||
id: str
|
||||
desc: str
|
||||
difficultyLevel: int
|
||||
rewardGroupId: str
|
||||
|
||||
|
||||
class SandboxV2ArchiveQuestAvgData(BaseStruct):
|
||||
avgId: str
|
||||
avgName: str
|
||||
|
||||
|
||||
class SandboxV2ArchiveQuestCgData(BaseStruct):
|
||||
cgId: str
|
||||
cgTitle: str
|
||||
cgDesc: str
|
||||
cgPath: str
|
||||
|
||||
|
||||
class SandboxV2ArchiveQuestZoneData(BaseStruct):
|
||||
zoneId: str
|
||||
zoneName: str
|
||||
zoneBgPicId: str
|
||||
zoneNameIdEn: str
|
||||
|
||||
|
||||
class SandboxV2ArchiveQuestData(BaseStruct):
|
||||
id: str
|
||||
sortId: int
|
||||
questType: str
|
||||
name: str
|
||||
desc: str
|
||||
avgDataList: List[SandboxV2ArchiveQuestAvgData]
|
||||
cgDataList: List[SandboxV2ArchiveQuestCgData]
|
||||
npcPicIdList: List[str]
|
||||
zoneData: SandboxV2ArchiveQuestZoneData
|
||||
|
||||
|
||||
class SandboxV2ArchiveAchievementData(BaseStruct):
|
||||
id: str
|
||||
achievementType: List[str]
|
||||
raritySortId: int
|
||||
sortId: int
|
||||
name: str
|
||||
desc: str
|
||||
|
||||
|
||||
class SandboxV2ArchiveAchievementTypeData(BaseStruct):
|
||||
achievementType: str
|
||||
name: str
|
||||
sortId: int
|
||||
|
||||
|
||||
class SandboxV2ArchiveQuestTypeData(BaseStruct):
|
||||
type: str
|
||||
name: str
|
||||
iconId: str
|
||||
|
||||
|
||||
class SandboxV2ArchiveMusicUnlockData(BaseStruct):
|
||||
musicId: str
|
||||
unlockCondDesc: Union[str, None]
|
||||
|
||||
|
||||
class SandboxV2BaseUpdateCondition(BaseStruct):
|
||||
desc: str
|
||||
limitCond: str
|
||||
param: List[str]
|
||||
|
||||
|
||||
class SandboxV2BaseUpdateFunctionPreviewDetailData(BaseStruct):
|
||||
funcId: str
|
||||
unlockType: str
|
||||
typeTitle: str
|
||||
desc: str
|
||||
icon: str
|
||||
darkMode: bool
|
||||
sortId: int
|
||||
displayType: str
|
||||
|
||||
|
||||
class SandboxV2BaseFunctionPreviewData(BaseStruct):
|
||||
previewId: str
|
||||
previewValue: int
|
||||
detailData: SandboxV2BaseUpdateFunctionPreviewDetailData
|
||||
|
||||
|
||||
class SandboxV2BaseUpdateData(BaseStruct):
|
||||
baseLevelId: str
|
||||
baseLevel: int
|
||||
conditions: List[SandboxV2BaseUpdateCondition]
|
||||
items: Dict[str, int]
|
||||
previewDatas: List[SandboxV2BaseFunctionPreviewData]
|
||||
scoreFactor: str
|
||||
portableRepairCost: int
|
||||
entryCount: int
|
||||
repairCost: int
|
||||
|
||||
|
||||
class SandboxV2DevelopmentLineSegmentData(BaseStruct):
|
||||
fromNodeId: str
|
||||
passingNodeIds: List[str]
|
||||
fromAxisPosX: int
|
||||
fromAxisPosY: int
|
||||
toAxisPosX: int
|
||||
toAxisPosY: int
|
||||
lineStyle: int
|
||||
unlockBasementLevel: int
|
||||
|
||||
|
||||
class SandboxV2BuildingNodeScoreData(BaseStruct):
|
||||
nodeId: str
|
||||
sortId: int
|
||||
limitScore: int
|
||||
|
||||
|
||||
class SandboxV2SeasonData(BaseStruct):
|
||||
seasonType: str
|
||||
name: str
|
||||
functionDesc: str
|
||||
description: str
|
||||
color: str
|
||||
|
||||
|
||||
class SandboxV2ConfirmIconData(BaseStruct):
|
||||
iconType: str
|
||||
iconPicId: str
|
||||
|
||||
|
||||
class SandboxV2TutorialRepoCharData(BaseStruct):
|
||||
instId: int
|
||||
charId: str
|
||||
evolvePhase: int
|
||||
level: int
|
||||
favorPoint: int
|
||||
potentialRank: int
|
||||
mainSkillLv: int
|
||||
specSkillList: List[int]
|
||||
|
||||
|
||||
class SandboxV2TutorialBasicConst(BaseStruct):
|
||||
trainingQuestList: List[str]
|
||||
|
||||
|
||||
class SandboxV2TutorialData(BaseStruct):
|
||||
charRepoData: Dict[str, SandboxV2TutorialRepoCharData]
|
||||
questData: Dict[str, SandboxV2QuestData]
|
||||
guideQuestData: Dict[str, SandboxV2GuideQuestData]
|
||||
questLineData: Dict[str, SandboxV2QuestLineData]
|
||||
basicConst: SandboxV2TutorialBasicConst
|
||||
|
||||
|
||||
class SandboxV2Data(BaseStruct):
|
||||
mapData: Dict[str, SandboxV2MapData]
|
||||
itemTrapData: Dict[str, SandboxV2ItemTrapData]
|
||||
itemTrapTagData: Dict[str, SandboxV2ItemTrapTagData]
|
||||
buildingItemData: Dict[str, SandboxV2BuildingItemData]
|
||||
craftItemData: Dict[str, SandboxV2CraftItemData]
|
||||
livestockProduceData: Dict[str, SandboxV2LivestockData]
|
||||
craftGroupData: Dict[str, SandboxV2CraftGroupData]
|
||||
alchemyRecipeData: Dict[str, SandboxV2AlchemyRecipeData]
|
||||
drinkMatData: Dict[str, SandboxV2DrinkMatData]
|
||||
foodMatData: Dict[str, SandboxV2FoodMatData]
|
||||
foodData: Dict[str, SandboxV2FoodData]
|
||||
nodeTypeData: Dict[str, SandboxV2NodeTypeData]
|
||||
nodeUpgradeData: Dict[str, SandboxV2NodeUpgradeData]
|
||||
weatherData: Dict[str, SandboxV2WeatherData]
|
||||
stageData: Dict[str, SandboxV2StageData]
|
||||
zoneData: Dict[str, SandboxV2ZoneData]
|
||||
nodeBuffData: Dict[str, SandboxV2NodeBuffData]
|
||||
rewardConfigData: SandboxV2RewardConfigGroupData
|
||||
floatIconData: Dict[str, SandboxV2FloatIconData]
|
||||
enemyRushTypeData: Dict[str, SandboxV2EnemyRushTypeData]
|
||||
rushEnemyData: SandboxV2BattleRushEnemyData
|
||||
gameConst: SandboxV2GameConst
|
||||
basicConst: SandboxV2BasicConst
|
||||
riftConst: SandboxV2RiftConst
|
||||
developmentConst: SandboxV2DevelopmentConst
|
||||
battleLoadingTips: List[TipData]
|
||||
runeDatas: Dict[str, PackedRuneData]
|
||||
itemRuneList: Union[Dict[str, List[LegacyInLevelRuneData]], None]
|
||||
questData: Dict[str, SandboxV2QuestData]
|
||||
npcData: Dict[str, SandboxV2NpcData]
|
||||
dialogData: Dict[str, SandboxV2DialogData]
|
||||
questLineData: Dict[str, SandboxV2QuestLineData]
|
||||
questLineStoryData: Dict[str, str]
|
||||
guideQuestData: Dict[str, SandboxV2GuideQuestData]
|
||||
developmentData: Dict[str, SandboxV2DevelopmentData]
|
||||
eventData: Dict[str, SandboxV2EventData]
|
||||
eventSceneData: Dict[str, SandboxV2EventSceneData]
|
||||
eventChoiceData: Dict[str, SandboxV2EventChoiceData]
|
||||
expeditionData: Dict[str, SandboxV2ExpeditionData]
|
||||
eventEffectData: Dict[str, SandboxV2EventEffectData]
|
||||
shopGoodData: Dict[str, SandboxV2ShopGoodData]
|
||||
shopDialogData: SandboxV2ShopDialogData
|
||||
logisticsData: List[SandboxV2LogisticsData]
|
||||
logisticsCharMapping: Dict[str, Dict[str, List[SandboxV2LogisticsCharData]]]
|
||||
materialKeywordData: Dict[str, str]
|
||||
monthRushData: List[SandboxV2MonthRushData]
|
||||
riftTerrainParamData: Dict[str, SandboxV2RiftParamData]
|
||||
riftClimateParamData: Dict[str, SandboxV2RiftParamData]
|
||||
riftEnemyParamData: Dict[str, SandboxV2RiftParamData]
|
||||
riftSubTargetData: Dict[str, SandboxV2RiftSubTargetData]
|
||||
riftMainTargetData: Dict[str, SandboxV2RiftMainTargetData]
|
||||
riftGlobalEffectData: Dict[str, SandboxV2RiftGlobalEffectData]
|
||||
fixedRiftData: Dict[str, SandboxV2FixedRiftData]
|
||||
riftTeamBuffData: Dict[str, List[SandboxV2RiftTeamBuffData]]
|
||||
riftDifficultyData: Dict[str, SandboxV2RiftDifficultyData]
|
||||
riftRewardDisplayData: Dict[str, List[str]]
|
||||
enemyReplaceData: Dict[str, Dict[str, str]]
|
||||
archiveQuestData: Dict[str, SandboxV2ArchiveQuestData]
|
||||
achievementData: Dict[str, SandboxV2ArchiveAchievementData]
|
||||
achievementTypeData: Dict[str, SandboxV2ArchiveAchievementTypeData]
|
||||
archiveQuestTypeData: Dict[str, SandboxV2ArchiveQuestTypeData]
|
||||
archiveMusicUnlockData: Dict[str, SandboxV2ArchiveMusicUnlockData]
|
||||
baseUpdate: List[SandboxV2BaseUpdateData]
|
||||
developmentLineSegmentDatas: List[SandboxV2DevelopmentLineSegmentData]
|
||||
buildingNodeScoreData: Dict[str, SandboxV2BuildingNodeScoreData]
|
||||
seasonData: Dict[str, SandboxV2SeasonData]
|
||||
confirmIconData: List[SandboxV2ConfirmIconData]
|
||||
shopUpdateTimeData: List[int]
|
||||
tutorialData: SandboxV2TutorialData
|
||||
|
||||
|
||||
class SandboxPermDetailData(BaseStruct):
|
||||
SANDBOX_V2: Dict[str, SandboxV2Data]
|
||||
|
||||
|
||||
class SandboxPermItemData(BaseStruct):
|
||||
itemId: str
|
||||
itemType: str
|
||||
itemName: str
|
||||
itemUsage: str
|
||||
itemDesc: str
|
||||
itemRarity: int
|
||||
sortId: int
|
||||
obtainApproach: str
|
||||
|
||||
|
||||
class SandboxPermTable(BaseStruct):
|
||||
__version__ = "24-02-02-10-18-07-831ad8"
|
||||
|
||||
basicInfo: Dict[str, SandboxPermBasicData]
|
||||
detail: SandboxPermDetailData
|
||||
itemData: Dict[str, SandboxPermItemData]
|
@ -1,404 +0,0 @@
|
||||
from typing import Dict, List, Union
|
||||
|
||||
from msgspec import field
|
||||
|
||||
from ..common import BaseStruct
|
||||
|
||||
|
||||
class SandboxMapConstTable(BaseStruct):
|
||||
directionNames: List[str]
|
||||
homeNodeStageId: str
|
||||
homeRushStageCode: str
|
||||
homeRushStageName: str
|
||||
homeRushDesc: str
|
||||
crazyRevengeRushGroup: str
|
||||
homeBuildModeBGM: str
|
||||
|
||||
|
||||
class SandboxBaseConstTable(BaseStruct):
|
||||
cookRegularCostItemId: str
|
||||
cookRegularCostItemIdCnt: int
|
||||
squadTabNameList: List[str]
|
||||
charRarityColorList: List[str]
|
||||
sumFoodLimitedCount: int
|
||||
sumBuildingLimitedCount: int
|
||||
sumTacticalLimitedCount: int
|
||||
sumFoodMatLimitedCount: int
|
||||
sumBuildingMatLimitedCount: int
|
||||
sumStaminaPotLimitedCount: int
|
||||
sumGoldLimitedCount: int
|
||||
itemLimitedCount: int
|
||||
blackBoxSlotCnt: int
|
||||
scoutNodeUpgradeId: str
|
||||
battleNodeUpgradeId: str
|
||||
staminaPotCostOnce: int
|
||||
staminaPotItemId: str
|
||||
staminapotRedMinCnt: int
|
||||
staminapotYellowMinCnt: int
|
||||
staminapotGreenMinCnt: int
|
||||
staminapotMaxPercentCnt: int
|
||||
staminaPotActionPoint: int
|
||||
goldItemId: str
|
||||
toolboxSlotCapacity: int
|
||||
toolboxSlotCnt: int
|
||||
teamPopulationLimit: int
|
||||
researchInformationDesc: str
|
||||
settleFailDesc: str
|
||||
settleAbortDesc: str
|
||||
settleSucDesc: str
|
||||
|
||||
|
||||
class TipData(BaseStruct):
|
||||
tip: str
|
||||
weight: Union[int, float]
|
||||
category: str
|
||||
|
||||
|
||||
class SandboxFoodProduceData(BaseStruct):
|
||||
itemId: str
|
||||
mainMaterialItems: List[str]
|
||||
buffId: str
|
||||
unlockDesc: str
|
||||
|
||||
|
||||
class SandboxFoodmatBuffData(BaseStruct):
|
||||
itemId: str
|
||||
buffId: Union[str, None]
|
||||
buffDesc: Union[str, None]
|
||||
matType: str
|
||||
sortId: int
|
||||
|
||||
|
||||
class SandboxFoodStaminaData(BaseStruct):
|
||||
itemId: str
|
||||
potCnt: int
|
||||
foodStaminaCnt: int
|
||||
|
||||
|
||||
class SandboxBuildProduceData(BaseStruct):
|
||||
itemProduceId: str
|
||||
itemId: str
|
||||
itemTypeText: str
|
||||
materialItems: Dict[str, int]
|
||||
|
||||
|
||||
class SandboxBuildGoldRatioData(BaseStruct):
|
||||
itemId: str
|
||||
ratio: int
|
||||
effectDesc: str
|
||||
|
||||
|
||||
class SandboxBuildingItemData(BaseStruct):
|
||||
itemId: str
|
||||
itemSubType: str
|
||||
itemRarity: int
|
||||
|
||||
|
||||
class SandboxBuildProduceUnlockData(BaseStruct):
|
||||
itemId: str
|
||||
buildingEffectDesc: str
|
||||
buildingItemDesc: str
|
||||
buildingUnlockDesc: str
|
||||
|
||||
|
||||
class SandboxCraftItemData(BaseStruct):
|
||||
itemId: str
|
||||
sortId: int
|
||||
getFrom: str
|
||||
npcId: Union[str, None]
|
||||
notObtainedDesc: str
|
||||
itemType: str
|
||||
|
||||
|
||||
class SandboxItemTrapData(BaseStruct):
|
||||
itemId: str
|
||||
trapId: str
|
||||
trapPhase: int
|
||||
trapLevel: int
|
||||
skillIndex: int
|
||||
skillLevel: int
|
||||
|
||||
|
||||
class SandboxDevelopmentData(BaseStruct):
|
||||
buffId: str
|
||||
positionX: int
|
||||
positionY: int
|
||||
frontNodeId: Union[str, None]
|
||||
nextNodeIds: Union[List[str], None]
|
||||
buffLimitedId: str
|
||||
tokenCost: int
|
||||
canBuffResearch: bool
|
||||
buffResearchDesc: Union[str, None]
|
||||
buffName: str
|
||||
buffIconId: str
|
||||
nodeTitle: str
|
||||
buffEffectDesc: str
|
||||
|
||||
|
||||
class SandboxDevelopmentLimitData(BaseStruct):
|
||||
buffLimitedId: str
|
||||
positionX: int
|
||||
buffCostLimitedCount: int
|
||||
|
||||
|
||||
class SandboxItemToastData(BaseStruct):
|
||||
itemType: str
|
||||
toastDesc: str
|
||||
color: str
|
||||
|
||||
|
||||
class SandboxDevelopmentLineSegmentData(BaseStruct):
|
||||
fromNodeId: str
|
||||
passingNodeIds: List[str]
|
||||
fromAxisPosX: int
|
||||
fromAxisPosY: int
|
||||
toAxisPosX: int
|
||||
toAxisPosY: int
|
||||
|
||||
|
||||
class SandboxRewardItemConfigData(BaseStruct):
|
||||
rewardItem: str
|
||||
rewardType: str
|
||||
|
||||
|
||||
class SandboxRewardData(BaseStruct):
|
||||
rewardList: List[SandboxRewardItemConfigData]
|
||||
|
||||
|
||||
class SandboxRewardCommonConfig(BaseStruct):
|
||||
rewardItemId: str
|
||||
rewardItemType: str
|
||||
count: int
|
||||
dropType: Union[int, None] = None
|
||||
|
||||
|
||||
class SandboxTrapRewardConfigData(SandboxRewardCommonConfig):
|
||||
dropType: int
|
||||
|
||||
|
||||
class SandboxRewardConfigGroupData(BaseStruct):
|
||||
stagePreviewRewardDict: Dict[str, SandboxRewardData]
|
||||
stageDefaultPreviewRewardDict: Dict[str, SandboxRewardData]
|
||||
rushPreviewRewardDict: Dict[str, SandboxRewardData]
|
||||
stageRewardDict: Dict[str, SandboxRewardData]
|
||||
rushRewardDict: Dict[str, SandboxRewardData]
|
||||
trapRewardDict: Dict[str, SandboxRewardCommonConfig]
|
||||
enemyRewardDict: Dict[str, SandboxRewardCommonConfig]
|
||||
keyWordData: Dict[str, str]
|
||||
|
||||
|
||||
class SandboxStaminaData(BaseStruct):
|
||||
levelUpperLimit: int
|
||||
staminaUpperLimit: int
|
||||
|
||||
|
||||
class SandboxNodeTypeData(BaseStruct):
|
||||
nodeType: str
|
||||
name: str
|
||||
subName: str
|
||||
iconId: str
|
||||
|
||||
|
||||
class SandboxNodeUpgradeData(BaseStruct):
|
||||
nodeUpdradeId: str
|
||||
name: str
|
||||
description: str
|
||||
upgradeDesc: str
|
||||
itemType: str
|
||||
itemSubType: str
|
||||
itemCnt: int
|
||||
itemRarity: int
|
||||
|
||||
|
||||
class SandboxWeatherData(BaseStruct):
|
||||
weatherId: str
|
||||
weatherType: str
|
||||
weatherLevel: int
|
||||
name: str
|
||||
description: str
|
||||
weatherTypeName: str
|
||||
weatherTypeIconId: str
|
||||
functionDesc: str
|
||||
buffId: str
|
||||
|
||||
|
||||
class SandboxStageData(BaseStruct):
|
||||
stageId: str
|
||||
levelId: str
|
||||
code: str
|
||||
name: str
|
||||
loadingPicId: str
|
||||
description: str
|
||||
actionCost: int
|
||||
powerCost: int
|
||||
|
||||
|
||||
class SandboxEventData(BaseStruct):
|
||||
eventSceneId: str
|
||||
hasThumbtack: bool
|
||||
|
||||
|
||||
class SandboxEventSceneData(BaseStruct):
|
||||
choiceSceneId: str
|
||||
type_: str = field(name="type")
|
||||
title: str
|
||||
description: str
|
||||
choices: List[str]
|
||||
|
||||
|
||||
class SandboxEventChoiceData(BaseStruct):
|
||||
choiceId: str
|
||||
type_: str = field(name="type")
|
||||
costAction: int
|
||||
finishScene: bool
|
||||
title: str
|
||||
description: str
|
||||
|
||||
|
||||
class SandboxEventTypeData(BaseStruct):
|
||||
eventType: str
|
||||
iconId: str
|
||||
|
||||
|
||||
class SandboxMissionData(BaseStruct):
|
||||
missionId: str
|
||||
desc: str
|
||||
effectDesc: Union[str, None]
|
||||
costAction: int
|
||||
charCnt: int
|
||||
professionIds: List[str]
|
||||
profession: int
|
||||
costStamina: int
|
||||
|
||||
|
||||
class SandboxUnitData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
name: str
|
||||
|
||||
|
||||
class SandboxDailyDescTemplateData(BaseStruct):
|
||||
type_: str = field(name="type")
|
||||
templateDesc: List[str]
|
||||
|
||||
|
||||
class RushEnemyConfig(BaseStruct):
|
||||
enemyKey: str
|
||||
branchId: str
|
||||
count: int
|
||||
interval: Union[int, float]
|
||||
|
||||
|
||||
class RushEnemyGroupConfig(BaseStruct):
|
||||
enemyGroupKey: str
|
||||
weight: int
|
||||
enemy: List[RushEnemyConfig]
|
||||
dynamicEnemy: List[str]
|
||||
|
||||
|
||||
class RushEnemyGroupRushEnemyDBRef(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
level: int
|
||||
|
||||
|
||||
class RushEnemyGroup(BaseStruct):
|
||||
rushEnemyGroupConfigs: Dict[str, List[RushEnemyGroupConfig]]
|
||||
rushEnemyDbRef: List[RushEnemyGroupRushEnemyDBRef]
|
||||
|
||||
|
||||
class RuneDataSelector(BaseStruct):
|
||||
professionMask: int
|
||||
buildableMask: int
|
||||
charIdFilter: Union[List[str], None]
|
||||
enemyIdFilter: Union[List[str], None]
|
||||
enemyIdExcludeFilter: Union[List[str], None]
|
||||
skillIdFilter: Union[List[str], None]
|
||||
tileKeyFilter: Union[List[str], None]
|
||||
groupTagFilter: Union[List[str], None]
|
||||
filterTagFilter: Union[List[str], None]
|
||||
subProfessionExcludeFilter: Union[List[str], None]
|
||||
|
||||
|
||||
class Blackboard(BaseStruct):
|
||||
key: str
|
||||
value: Union[Union[int, float], None] = None
|
||||
valueStr: Union[str, None] = None
|
||||
|
||||
|
||||
class RuneData(BaseStruct):
|
||||
key: str
|
||||
selector: RuneDataSelector
|
||||
blackboard: List[Blackboard]
|
||||
|
||||
|
||||
class RuneTablePackedRuneData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
points: Union[int, float]
|
||||
mutexGroupKey: Union[str, None]
|
||||
description: str
|
||||
runes: List[RuneData]
|
||||
|
||||
|
||||
class LegacyInLevelRuneData(BaseStruct):
|
||||
difficultyMask: int
|
||||
key: str
|
||||
professionMask: int
|
||||
buildableMask: int
|
||||
blackboard: List[Blackboard]
|
||||
|
||||
|
||||
class SandboxActTable(BaseStruct):
|
||||
mapConstTable: SandboxMapConstTable
|
||||
baseConstTable: SandboxBaseConstTable
|
||||
battleLoadingTips: List[TipData]
|
||||
foodProduceDatas: Dict[str, SandboxFoodProduceData]
|
||||
foodmatDatas: Dict[str, SandboxFoodmatBuffData]
|
||||
foodmatBuffDatas: Dict[str, SandboxFoodmatBuffData]
|
||||
foodStaminaDatas: Dict[str, SandboxFoodStaminaData]
|
||||
buildProduceDatas: Dict[str, SandboxBuildProduceData]
|
||||
buildGoldRatioDatas: List[SandboxBuildGoldRatioData]
|
||||
buildingItemDatas: Dict[str, SandboxBuildingItemData]
|
||||
buildProduceUnlockDatas: Dict[str, SandboxBuildProduceUnlockData]
|
||||
craftItemDatas: Dict[str, SandboxCraftItemData]
|
||||
itemTrapDatas: Dict[str, SandboxItemTrapData]
|
||||
trapDeployLimitDatas: Dict[str, int]
|
||||
developmentDatas: Dict[str, SandboxDevelopmentData]
|
||||
developmentLimitDatas: Dict[str, SandboxDevelopmentLimitData]
|
||||
itemToastDatas: Dict[str, SandboxItemToastData]
|
||||
developmentLineSegmentDatas: List[SandboxDevelopmentLineSegmentData]
|
||||
rewardConfigDatas: SandboxRewardConfigGroupData
|
||||
charStaminaMapping: Dict[str, Dict[str, List[SandboxStaminaData]]]
|
||||
nodeTypeDatas: Dict[str, SandboxNodeTypeData]
|
||||
nodeUpgradeDatas: Dict[str, SandboxNodeUpgradeData]
|
||||
weatherDatas: Dict[str, SandboxWeatherData]
|
||||
stageDatas: Dict[str, SandboxStageData]
|
||||
eventDatas: Dict[str, SandboxEventData]
|
||||
eventSceneDatas: Dict[str, SandboxEventSceneData]
|
||||
eventChoiceDatas: Dict[str, SandboxEventChoiceData]
|
||||
eventTypeDatas: Dict[str, SandboxEventTypeData]
|
||||
missionDatas: Dict[str, SandboxMissionData]
|
||||
unitData: Dict[str, SandboxUnitData]
|
||||
dailyDescTemplateDatas: Dict[str, SandboxDailyDescTemplateData]
|
||||
rushAvgDict: Dict[str, str]
|
||||
rushEnemyGroup: RushEnemyGroup
|
||||
runeDatas: Dict[str, RuneTablePackedRuneData]
|
||||
itemRuneList: Dict[str, List[LegacyInLevelRuneData]]
|
||||
|
||||
|
||||
class SandboxItemData(BaseStruct):
|
||||
itemId: str
|
||||
itemType: str
|
||||
itemName: str
|
||||
itemUsage: str
|
||||
itemDesc: str
|
||||
itemRarity: int
|
||||
sortId: int
|
||||
recommendTypeList: Union[List[str], None]
|
||||
recommendPriority: int
|
||||
obtainApproach: str
|
||||
|
||||
|
||||
class SandboxTable(BaseStruct):
|
||||
__version__ = "24-02-02-10-18-07-831ad8"
|
||||
|
||||
sandboxActTables: Dict[str, SandboxActTable]
|
||||
itemDatas: Dict[str, SandboxItemData]
|
@ -1,161 +0,0 @@
|
||||
from typing import Dict, List, Union
|
||||
|
||||
from msgspec import field
|
||||
|
||||
from ..common import BaseStruct
|
||||
|
||||
|
||||
class ShopRecommendData(BaseStruct):
|
||||
imgId: str
|
||||
slotIndex: int
|
||||
cmd: str
|
||||
param1: Union[str, None]
|
||||
param2: Union[str, None]
|
||||
skinId: Union[str, None]
|
||||
|
||||
|
||||
class ShopRecommendGroup(BaseStruct):
|
||||
recommendGroup: List[int]
|
||||
dataList: List[ShopRecommendData]
|
||||
|
||||
|
||||
class ShopKeeperWord(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
text: str
|
||||
|
||||
|
||||
class ShopRecommendTemplateNormalGiftParam(BaseStruct):
|
||||
showStartTs: int
|
||||
showEndTs: int
|
||||
goodId: str
|
||||
giftPackageName: str
|
||||
price: int
|
||||
logoId: str
|
||||
color: str
|
||||
haveMark: bool
|
||||
availCount: int
|
||||
|
||||
|
||||
class ShopRecommendTemplateNormalSkinParam(BaseStruct):
|
||||
showStartTs: int
|
||||
showEndTs: int
|
||||
skinIds: List[str]
|
||||
skinGroupName: str
|
||||
brandIconId: str
|
||||
colorBack: str
|
||||
colorText: str
|
||||
text: str
|
||||
|
||||
|
||||
class ShopRecommendTemplateNormalFurnParam(BaseStruct):
|
||||
showStartTs: int
|
||||
showEndTs: int
|
||||
furnPackId: str
|
||||
isNew: bool
|
||||
isPackSell: bool
|
||||
count: int
|
||||
colorBack: str
|
||||
colorText: str
|
||||
actId: Union[str, None] = None
|
||||
|
||||
|
||||
class ShopRecommendTemplateReturnSkinParam(BaseStruct):
|
||||
showStartTs: int
|
||||
showEndTs: int
|
||||
|
||||
|
||||
class ShopRecommendTemplateParam(BaseStruct):
|
||||
normalGiftParam: Union[ShopRecommendTemplateNormalGiftParam, None] = None
|
||||
normalSkinParam: Union[ShopRecommendTemplateNormalSkinParam, None] = None
|
||||
normalFurnParam: Union[ShopRecommendTemplateNormalFurnParam, None] = None
|
||||
returnSkinParam: Union[ShopRecommendTemplateReturnSkinParam, None] = None
|
||||
|
||||
|
||||
class ShopRecommendItem(BaseStruct):
|
||||
tagId: str
|
||||
displayType: str
|
||||
tagName: str
|
||||
itemTag: str
|
||||
orderNum: int
|
||||
startDatetime: int
|
||||
endDatetime: int
|
||||
groupList: List[ShopRecommendGroup]
|
||||
tagWord: ShopKeeperWord
|
||||
templateType: str
|
||||
templateParam: Union[ShopRecommendTemplateParam, None]
|
||||
|
||||
|
||||
class ShopCreditUnlockItem(BaseStruct):
|
||||
sortId: int
|
||||
unlockNum: int
|
||||
charId: str
|
||||
|
||||
|
||||
class ShopCreditUnlockGroup(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
index: str
|
||||
startDateTime: int
|
||||
charDict: List[ShopCreditUnlockItem]
|
||||
|
||||
|
||||
class ShopClientDataShopKeeperData(BaseStruct):
|
||||
welcomeWords: List[ShopKeeperWord]
|
||||
clickWords: List[ShopKeeperWord]
|
||||
|
||||
|
||||
class ShopCarouselDataItem(BaseStruct):
|
||||
spriteId: str
|
||||
startTime: int
|
||||
endTime: int
|
||||
cmd: str
|
||||
param1: Union[str, None]
|
||||
skinId: str
|
||||
furniId: str
|
||||
|
||||
|
||||
class ShopCarouselData(BaseStruct):
|
||||
items: List[ShopCarouselDataItem]
|
||||
|
||||
|
||||
class ChooseShopRelation(BaseStruct):
|
||||
goodId: str
|
||||
optionList: List[str]
|
||||
|
||||
|
||||
class ShopClientGPData(BaseStruct):
|
||||
goodId: str
|
||||
displayName: str
|
||||
condTrigPackageType: str
|
||||
|
||||
|
||||
class LMTGSShopSchedule(BaseStruct):
|
||||
gachaPoolId: str
|
||||
LMTGSId: str
|
||||
iconColor: str
|
||||
iconBackColor: str
|
||||
startTime: int
|
||||
endTime: int
|
||||
storeTextColor: Union[str, None] = None
|
||||
|
||||
|
||||
class LMTGSShopOverlaySchedule(BaseStruct):
|
||||
gachaPoolId1: str
|
||||
gachaPoolId2: str
|
||||
picId: str
|
||||
|
||||
|
||||
class ShopClientTable(BaseStruct):
|
||||
__version__ = "24-02-02-10-18-07-831ad8"
|
||||
|
||||
recommendList: List[ShopRecommendItem]
|
||||
creditUnlockGroup: Dict[str, ShopCreditUnlockGroup]
|
||||
shopKeeperData: ShopClientDataShopKeeperData
|
||||
carousels: List[ShopCarouselData]
|
||||
chooseShopRelations: List[ChooseShopRelation]
|
||||
shopUnlockDict: Dict[str, str]
|
||||
extraQCShopRule: List[str]
|
||||
repQCShopRule: List[str]
|
||||
shopGPDataDict: Dict[str, ShopClientGPData]
|
||||
shopMonthlySubGoodId: str
|
||||
ls: List[LMTGSShopSchedule]
|
||||
os: List[LMTGSShopOverlaySchedule]
|
@ -1,51 +0,0 @@
|
||||
from typing import Dict, List, Union
|
||||
|
||||
from msgspec import field
|
||||
|
||||
from ..common import BaseStruct
|
||||
|
||||
|
||||
class ItemBundle(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
count: int
|
||||
type_: str = field(name="type")
|
||||
|
||||
|
||||
class SpData(BaseStruct):
|
||||
spType: int
|
||||
levelUpCost: Union[List[ItemBundle], None]
|
||||
maxChargeTime: int
|
||||
spCost: int
|
||||
initSp: int
|
||||
increment: Union[int, float]
|
||||
|
||||
|
||||
class Blackboard(BaseStruct):
|
||||
key: str
|
||||
value: Union[Union[int, float], None] = None
|
||||
valueStr: Union[str, None] = None
|
||||
|
||||
|
||||
class SkillDataBundleLevelData(BaseStruct):
|
||||
name: str
|
||||
rangeId: Union[str, None]
|
||||
description: Union[str, None]
|
||||
skillType: int
|
||||
durationType: int
|
||||
spData: SpData
|
||||
prefabId: Union[str, None]
|
||||
duration: Union[int, float]
|
||||
blackboard: List[Blackboard]
|
||||
|
||||
|
||||
class SkillDataBundle(BaseStruct):
|
||||
skillId: str
|
||||
iconId: Union[str, None]
|
||||
hidden: bool
|
||||
levels: List[SkillDataBundleLevelData]
|
||||
|
||||
|
||||
class SkillTable(BaseStruct):
|
||||
__version__ = "24-02-02-10-18-07-831ad8"
|
||||
|
||||
skills: Dict[str, SkillDataBundle]
|
@ -1,91 +0,0 @@
|
||||
from typing import Dict, List, Union
|
||||
|
||||
from ..common import BaseStruct
|
||||
|
||||
|
||||
class CharSkinDataTokenSkinInfo(BaseStruct):
|
||||
tokenId: str
|
||||
tokenSkinId: str
|
||||
|
||||
|
||||
class CharSkinDataBattleSkin(BaseStruct):
|
||||
overwritePrefab: bool
|
||||
skinOrPrefabId: Union[str, None]
|
||||
|
||||
|
||||
class CharSkinDataDisplaySkin(BaseStruct):
|
||||
skinName: Union[str, None]
|
||||
colorList: Union[List[str], None]
|
||||
titleList: Union[List[str], None]
|
||||
modelName: Union[str, None]
|
||||
drawerList: Union[List[str], None]
|
||||
designerList: Union[List[str], None]
|
||||
skinGroupId: Union[str, None]
|
||||
skinGroupName: Union[str, None]
|
||||
skinGroupSortIndex: int
|
||||
content: Union[str, None]
|
||||
dialog: Union[str, None]
|
||||
usage: Union[str, None]
|
||||
description: Union[str, None]
|
||||
obtainApproach: Union[str, None]
|
||||
sortId: int
|
||||
displayTagId: Union[str, None]
|
||||
getTime: int
|
||||
onYear: int
|
||||
onPeriod: int
|
||||
|
||||
|
||||
class CharSkinData(BaseStruct):
|
||||
skinId: str
|
||||
charId: str
|
||||
tokenSkinMap: Union[List[CharSkinDataTokenSkinInfo], None]
|
||||
illustId: Union[str, None]
|
||||
dynIllustId: Union[str, None]
|
||||
avatarId: str
|
||||
portraitId: Union[str, None]
|
||||
dynPortraitId: Union[str, None]
|
||||
dynEntranceId: Union[str, None]
|
||||
buildingId: Union[str, None]
|
||||
battleSkin: CharSkinDataBattleSkin
|
||||
isBuySkin: bool
|
||||
tmplId: Union[str, None]
|
||||
voiceId: Union[str, None]
|
||||
voiceType: str
|
||||
displaySkin: CharSkinDataDisplaySkin
|
||||
|
||||
|
||||
class CharSkinGroupInfo(BaseStruct):
|
||||
skinGroupId: str
|
||||
publishTime: int
|
||||
|
||||
|
||||
class CharSkinKvImgInfo(BaseStruct):
|
||||
kvImgId: str
|
||||
linkedSkinGroupId: str
|
||||
|
||||
|
||||
class CharSkinBrandInfo(BaseStruct):
|
||||
brandId: str
|
||||
groupList: List[CharSkinGroupInfo]
|
||||
kvImgIdList: List[CharSkinKvImgInfo]
|
||||
brandName: str
|
||||
brandCapitalName: str
|
||||
description: str
|
||||
publishTime: int
|
||||
sortId: int
|
||||
|
||||
|
||||
class SpecialSkinInfo(BaseStruct):
|
||||
skinId: str
|
||||
startTime: int
|
||||
endTime: int
|
||||
|
||||
|
||||
class SkinTable(BaseStruct):
|
||||
__version__ = "24-02-02-10-18-07-831ad8"
|
||||
|
||||
charSkins: Dict[str, CharSkinData]
|
||||
buildinEvolveMap: Dict[str, Dict[str, str]]
|
||||
buildinPatchMap: Dict[str, Dict[str, str]]
|
||||
brandList: Dict[str, CharSkinBrandInfo]
|
||||
specialSkinInfoList: List[SpecialSkinInfo]
|
@ -1,263 +0,0 @@
|
||||
from typing import Dict, List, Union
|
||||
|
||||
from msgspec import field
|
||||
|
||||
from ..common import BaseStruct
|
||||
|
||||
|
||||
class StageDataConditionDesc(BaseStruct):
|
||||
stageId: str
|
||||
completeState: int
|
||||
|
||||
|
||||
class StageDataDisplayRewards(BaseStruct):
|
||||
type_: str = field(name="type")
|
||||
id_: str = field(name="id")
|
||||
dropType: int
|
||||
|
||||
|
||||
class StageDataDisplayDetailRewards(BaseStruct):
|
||||
occPercent: int
|
||||
type_: str = field(name="type")
|
||||
id_: str = field(name="id")
|
||||
dropType: int
|
||||
|
||||
|
||||
class StageDataStageDropInfo(BaseStruct):
|
||||
firstPassRewards: None
|
||||
firstCompleteRewards: None
|
||||
passRewards: None
|
||||
completeRewards: None
|
||||
displayRewards: List[StageDataDisplayRewards]
|
||||
displayDetailRewards: List[StageDataDisplayDetailRewards]
|
||||
|
||||
|
||||
class ExtraCondition(BaseStruct):
|
||||
index: int
|
||||
template: str
|
||||
unlockParam: List[str]
|
||||
|
||||
|
||||
class ProgressInfo(BaseStruct):
|
||||
progressType: str
|
||||
descList: Union[Dict[str, str], None]
|
||||
|
||||
|
||||
class ItemBundle(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
count: int
|
||||
type_: str = field(name="type")
|
||||
|
||||
|
||||
class ExtraInfo(BaseStruct):
|
||||
stageId: str
|
||||
rewards: List[ItemBundle]
|
||||
progressInfo: ProgressInfo
|
||||
|
||||
|
||||
class StageData(BaseStruct):
|
||||
stageType: str
|
||||
difficulty: str
|
||||
performanceStageFlag: str
|
||||
diffGroup: str
|
||||
unlockCondition: List[StageDataConditionDesc]
|
||||
stageId: str
|
||||
levelId: Union[str, None]
|
||||
zoneId: str
|
||||
code: str
|
||||
name: Union[str, None]
|
||||
description: Union[str, None]
|
||||
hardStagedId: Union[str, None]
|
||||
dangerLevel: Union[str, None]
|
||||
dangerPoint: Union[int, float]
|
||||
loadingPicId: str
|
||||
canPractice: bool
|
||||
canBattleReplay: bool
|
||||
apCost: int
|
||||
apFailReturn: int
|
||||
etItemId: Union[str, None]
|
||||
etCost: int
|
||||
etFailReturn: int
|
||||
etButtonStyle: Union[str, None]
|
||||
apProtectTimes: int
|
||||
diamondOnceDrop: int
|
||||
practiceTicketCost: int
|
||||
dailyStageDifficulty: int
|
||||
expGain: int
|
||||
goldGain: int
|
||||
loseExpGain: int
|
||||
loseGoldGain: int
|
||||
passFavor: int
|
||||
completeFavor: int
|
||||
slProgress: int
|
||||
displayMainItem: Union[str, None]
|
||||
hilightMark: bool
|
||||
bossMark: bool
|
||||
isPredefined: bool
|
||||
isHardPredefined: bool
|
||||
isSkillSelectablePredefined: bool
|
||||
isStoryOnly: bool
|
||||
appearanceStyle: int
|
||||
stageDropInfo: StageDataStageDropInfo
|
||||
startButtonOverrideId: Union[str, None]
|
||||
isStagePatch: bool
|
||||
mainStageId: Union[str, None]
|
||||
canContinuousBattle: Union[bool, None] = None
|
||||
canUseCharm: Union[bool, None] = None
|
||||
canUseTech: Union[bool, None] = None
|
||||
canUseTrapTool: Union[bool, None] = None
|
||||
canUseBattlePerformance: Union[bool, None] = None
|
||||
extraCondition: Union[List[ExtraCondition], None] = None
|
||||
extraInfo: Union[List[ExtraInfo], None] = None
|
||||
|
||||
|
||||
class RuneStageGroupDataRuneStageInst(BaseStruct):
|
||||
stageId: str
|
||||
activePackedRuneIds: List[str]
|
||||
|
||||
|
||||
class RuneStageGroupData(BaseStruct):
|
||||
groupId: str
|
||||
activeRuneStages: List[RuneStageGroupDataRuneStageInst]
|
||||
startTs: int
|
||||
endTs: int
|
||||
|
||||
|
||||
class MapThemeData(BaseStruct):
|
||||
themeId: str
|
||||
unitColor: str
|
||||
buildableColor: Union[str, None]
|
||||
themeType: Union[str, None]
|
||||
trapTintColor: Union[str, None]
|
||||
|
||||
|
||||
class TileAppendInfo(BaseStruct):
|
||||
tileKey: str
|
||||
name: str
|
||||
description: str
|
||||
isFunctional: bool
|
||||
|
||||
|
||||
class WeeklyForceOpenTable(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
startTime: int
|
||||
endTime: int
|
||||
forceOpenList: List[str]
|
||||
|
||||
|
||||
class TimelyDropTimeInfo(BaseStruct):
|
||||
startTs: int
|
||||
endTs: int
|
||||
stagePic: Union[str, None]
|
||||
dropPicId: Union[str, None]
|
||||
stageUnlock: str
|
||||
entranceDownPicId: Union[str, None]
|
||||
entranceUpPicId: Union[str, None]
|
||||
timelyGroupId: str
|
||||
weeklyPicId: Union[str, None]
|
||||
apSupplyOutOfDateDict: Dict[str, int]
|
||||
|
||||
|
||||
class OverrideDropInfo(BaseStruct):
|
||||
itemId: str
|
||||
startTs: int
|
||||
endTs: int
|
||||
zoneRange: str
|
||||
times: int
|
||||
name: str
|
||||
egName: str
|
||||
desc1: str
|
||||
desc2: str
|
||||
desc3: str
|
||||
dropTag: str
|
||||
dropTypeDesc: str
|
||||
dropInfo: Dict[str, StageDataStageDropInfo]
|
||||
|
||||
|
||||
class TimelyDropInfo(BaseStruct):
|
||||
dropInfo: Dict[str, StageDataStageDropInfo]
|
||||
|
||||
|
||||
class StageValidInfo(BaseStruct):
|
||||
startTs: int
|
||||
endTs: int
|
||||
|
||||
|
||||
class StageFogInfo(BaseStruct):
|
||||
lockId: str
|
||||
fogType: str
|
||||
stageId: str
|
||||
lockName: str
|
||||
lockDesc: str
|
||||
unlockItemId: str
|
||||
unlockItemType: str
|
||||
unlockItemNum: int
|
||||
preposedStageId: str
|
||||
preposedLockId: Union[str, None]
|
||||
|
||||
|
||||
class StageStartCondRequireChar(BaseStruct):
|
||||
charId: str
|
||||
evolvePhase: int
|
||||
|
||||
|
||||
class StageStartCond(BaseStruct):
|
||||
requireChars: List[StageStartCondRequireChar]
|
||||
excludeAssists: List[str]
|
||||
isNotPass: bool
|
||||
|
||||
|
||||
class StageDiffGroupTable(BaseStruct):
|
||||
normalId: str
|
||||
toughId: Union[str, None]
|
||||
easyId: str
|
||||
|
||||
|
||||
class StoryStageShowGroup(BaseStruct):
|
||||
displayRecordId: str
|
||||
stageId: str
|
||||
accordingStageId: Union[str, None]
|
||||
diffGroup: int
|
||||
|
||||
|
||||
class SpecialBattleFinishStageData(BaseStruct):
|
||||
stageId: str
|
||||
skipAccomplishPerform: bool
|
||||
|
||||
|
||||
class RecordRewardServerData(BaseStruct):
|
||||
stageId: str
|
||||
rewards: List[ItemBundle]
|
||||
|
||||
|
||||
class ApProtectZoneInfoTimeRange(BaseStruct):
|
||||
startTs: int
|
||||
endTs: int
|
||||
|
||||
|
||||
class ApProtectZoneInfo(BaseStruct):
|
||||
zoneId: str
|
||||
timeRanges: List[ApProtectZoneInfoTimeRange]
|
||||
|
||||
|
||||
class StageTable(BaseStruct):
|
||||
__version__ = "24-02-02-10-18-07-831ad8"
|
||||
|
||||
stages: Dict[str, StageData]
|
||||
runeStageGroups: Dict[str, RuneStageGroupData]
|
||||
mapThemes: Dict[str, MapThemeData]
|
||||
tileInfo: Dict[str, TileAppendInfo]
|
||||
forceOpenTable: Dict[str, WeeklyForceOpenTable]
|
||||
timelyStageDropInfo: Dict[str, TimelyDropTimeInfo]
|
||||
overrideDropInfo: Dict[str, OverrideDropInfo]
|
||||
timelyTable: Dict[str, TimelyDropInfo]
|
||||
stageValidInfo: Dict[str, StageValidInfo]
|
||||
stageFogInfo: Dict[str, StageFogInfo]
|
||||
stageStartConds: Dict[str, StageStartCond]
|
||||
diffGroupTable: Dict[str, StageDiffGroupTable]
|
||||
storyStageShowGroup: Dict[str, Dict[str, StoryStageShowGroup]]
|
||||
specialBattleFinishStageData: Dict[str, SpecialBattleFinishStageData]
|
||||
recordRewardData: Union[Dict[str, RecordRewardServerData], None]
|
||||
apProtectZoneInfo: Dict[str, ApProtectZoneInfo]
|
||||
actCustomStageDatas: Dict[str, Dict[str, str]]
|
||||
spNormalStageIdFor4StarList: List[str]
|
@ -1,236 +0,0 @@
|
||||
from typing import Dict, List, Union
|
||||
|
||||
from msgspec import field
|
||||
|
||||
from ..common import BaseStruct
|
||||
|
||||
|
||||
class MiniActTrialDataRuleData(BaseStruct):
|
||||
ruleType: str
|
||||
ruleText: str
|
||||
|
||||
|
||||
class ItemBundle(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
count: int
|
||||
type_: str = field(name="type")
|
||||
|
||||
|
||||
class MiniActTrialDataMiniActTrialRewardData(BaseStruct):
|
||||
trialRewardId: str
|
||||
orderId: int
|
||||
actId: str
|
||||
targetStoryCount: int
|
||||
item: ItemBundle
|
||||
|
||||
|
||||
class MiniActTrialDataMiniActTrialSingleData(BaseStruct):
|
||||
actId: str
|
||||
rewardStartTime: int
|
||||
themeColor: str
|
||||
rewardList: List[MiniActTrialDataMiniActTrialRewardData]
|
||||
|
||||
|
||||
class MiniActTrialData(BaseStruct):
|
||||
preShowDays: int
|
||||
ruleDataList: List[MiniActTrialDataRuleData]
|
||||
miniActTrialDataMap: Dict[str, MiniActTrialDataMiniActTrialSingleData]
|
||||
|
||||
|
||||
class ActArchiveResDataPicArchiveResItemData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
desc: str
|
||||
assetPath: str
|
||||
type_: str = field(name="type")
|
||||
subType: Union[str, None]
|
||||
picDescription: str
|
||||
kvId: Union[str, None]
|
||||
|
||||
|
||||
class ActArchiveResDataAudioArchiveResItemData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
desc: str
|
||||
name: str
|
||||
|
||||
|
||||
class ActArchiveResDataAvgArchiveResItemData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
desc: str
|
||||
breifPath: Union[str, None]
|
||||
contentPath: str
|
||||
imagePath: str
|
||||
rawBrief: Union[str, None]
|
||||
titleIconPath: Union[str, None]
|
||||
|
||||
|
||||
class ActArchiveResDataStoryArchiveResItemData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
desc: str
|
||||
date: Union[str, None]
|
||||
pic: str
|
||||
text: str
|
||||
titlePic: Union[str, None]
|
||||
|
||||
|
||||
class ActArchiveResDataNewsFormatData(BaseStruct):
|
||||
typeId: str
|
||||
typeName: str
|
||||
typeLogo: str
|
||||
typeMainLogo: str
|
||||
typeMainSealing: str
|
||||
|
||||
|
||||
class ActArchiveResDataActivityNewsLine(BaseStruct):
|
||||
lineType: int
|
||||
content: str
|
||||
|
||||
|
||||
class ActArchiveResDataNewsArchiveResItemData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
desc: str
|
||||
newsType: str
|
||||
newsFormat: ActArchiveResDataNewsFormatData
|
||||
newsText: str
|
||||
newsAuthor: str
|
||||
paramP0: int
|
||||
paramK: int
|
||||
paramR: float
|
||||
newsLines: List[ActArchiveResDataActivityNewsLine]
|
||||
|
||||
|
||||
class ActArchiveResDataLandmarkArchiveResItemData(BaseStruct):
|
||||
landmarkId: str
|
||||
landmarkName: str
|
||||
landmarkPic: str
|
||||
landmarkDesc: str
|
||||
landmarkEngName: str
|
||||
|
||||
|
||||
class ActArchiveResDataLogArchiveResItemData(BaseStruct):
|
||||
logId: str
|
||||
logDesc: str
|
||||
|
||||
|
||||
class ActArchiveResDataChallengeBookArchiveResItemData(BaseStruct):
|
||||
storyId: str
|
||||
titleName: str
|
||||
storyName: str
|
||||
textId: str
|
||||
|
||||
|
||||
class ActArchiveResData(BaseStruct):
|
||||
pics: Dict[str, ActArchiveResDataPicArchiveResItemData]
|
||||
audios: Dict[str, ActArchiveResDataAudioArchiveResItemData]
|
||||
avgs: Dict[str, ActArchiveResDataAvgArchiveResItemData]
|
||||
stories: Dict[str, ActArchiveResDataStoryArchiveResItemData]
|
||||
news: Dict[str, ActArchiveResDataNewsArchiveResItemData]
|
||||
landmarks: Dict[str, ActArchiveResDataLandmarkArchiveResItemData]
|
||||
logs: Dict[str, ActArchiveResDataLogArchiveResItemData]
|
||||
challengeBooks: Dict[str, ActArchiveResDataChallengeBookArchiveResItemData]
|
||||
|
||||
|
||||
class ActArchiveTimelineItemData(BaseStruct):
|
||||
timelineId: str
|
||||
timelineSortId: int
|
||||
timelineTitle: str
|
||||
timelineDes: str
|
||||
picIdList: Union[List[str], None] = None
|
||||
audioIdList: Union[List[str], None] = None
|
||||
avgIdList: Union[List[str], None] = None
|
||||
storyIdList: Union[List[str], None] = None
|
||||
newsIdList: Union[List[str], None] = None
|
||||
|
||||
|
||||
class ActArchiveTimelineData(BaseStruct):
|
||||
timelineList: List[ActArchiveTimelineItemData]
|
||||
|
||||
|
||||
class ActArchiveMusicItemData(BaseStruct):
|
||||
musicId: str
|
||||
musicSortId: int
|
||||
|
||||
|
||||
class ActArchiveMusicData(BaseStruct):
|
||||
musics: Dict[str, ActArchiveMusicItemData]
|
||||
|
||||
|
||||
class ActArchivePicItemData(BaseStruct):
|
||||
picId: str
|
||||
picSortId: int
|
||||
|
||||
|
||||
class ActArchivePicData(BaseStruct):
|
||||
pics: Dict[str, ActArchivePicItemData]
|
||||
|
||||
|
||||
class ActArchiveStoryItemData(BaseStruct):
|
||||
storyId: str
|
||||
storySortId: int
|
||||
|
||||
|
||||
class ActArchiveStoryData(BaseStruct):
|
||||
stories: Dict[str, ActArchiveStoryItemData]
|
||||
|
||||
|
||||
class ActArchiveAvgItemData(BaseStruct):
|
||||
avgId: str
|
||||
avgSortId: int
|
||||
|
||||
|
||||
class ActArchiveAvgData(BaseStruct):
|
||||
avgs: Dict[str, ActArchiveAvgItemData]
|
||||
|
||||
|
||||
class ActArchiveNewsItemData(BaseStruct):
|
||||
newsId: str
|
||||
newsSortId: int
|
||||
|
||||
|
||||
class ActArchiveNewsData(BaseStruct):
|
||||
news: Dict[str, ActArchiveNewsItemData]
|
||||
|
||||
|
||||
class ActArchiveLandmarkItemData(BaseStruct):
|
||||
landmarkId: str
|
||||
landmarkSortId: int
|
||||
|
||||
|
||||
class ActArchiveChapterLogData(BaseStruct):
|
||||
chapterName: str
|
||||
displayId: str
|
||||
unlockDes: str
|
||||
logs: List[str]
|
||||
chapterIcon: str
|
||||
|
||||
|
||||
class ActArchiveChallengeBookItemData(BaseStruct):
|
||||
storyId: str
|
||||
sortId: int
|
||||
|
||||
|
||||
class ActArchiveChallengeBookData(BaseStruct):
|
||||
stories: Dict[str, ActArchiveChallengeBookItemData]
|
||||
|
||||
|
||||
class ActArchiveComponentData(BaseStruct):
|
||||
pic: Union[ActArchivePicData, None] = None
|
||||
timeline: Union[ActArchiveTimelineData, None] = None
|
||||
music: Union[ActArchiveMusicData, None] = None
|
||||
story: Union[ActArchiveStoryData, None] = None
|
||||
avg: Union[ActArchiveAvgData, None] = None
|
||||
news: Union[ActArchiveNewsData, None] = None
|
||||
landmark: Union[Dict[str, ActArchiveLandmarkItemData], None] = None
|
||||
log: Union[Dict[str, ActArchiveChapterLogData], None] = None
|
||||
challengeBook: Union[ActArchiveChallengeBookData, None] = None
|
||||
|
||||
|
||||
class ActArchiveComponentTable(BaseStruct):
|
||||
components: Dict[str, ActArchiveComponentData]
|
||||
|
||||
|
||||
class StoryReviewMetaTable(BaseStruct):
|
||||
__version__ = "24-02-02-10-18-07-831ad8"
|
||||
|
||||
miniActTrialData: MiniActTrialData
|
||||
actArchiveResData: ActArchiveResData
|
||||
actArchiveData: ActArchiveComponentTable
|
@ -1,65 +0,0 @@
|
||||
from typing import Dict, List, Union
|
||||
|
||||
from msgspec import field
|
||||
|
||||
from ..common import BaseStruct
|
||||
|
||||
|
||||
class ItemBundle(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
count: int
|
||||
type_: str = field(name="type")
|
||||
|
||||
|
||||
class StoryDataConditionStageCondition(BaseStruct):
|
||||
stageId: str
|
||||
minState: int
|
||||
maxState: int
|
||||
|
||||
|
||||
class StoryReviewInfoClientData(BaseStruct):
|
||||
storyReviewType: int
|
||||
storyId: str
|
||||
storyGroup: str
|
||||
storySort: int
|
||||
storyDependence: Union[str, None]
|
||||
storyCanShow: int
|
||||
storyCode: Union[str, None]
|
||||
storyName: str
|
||||
storyPic: Union[str, None]
|
||||
storyInfo: str
|
||||
storyCanEnter: int
|
||||
storyTxt: str
|
||||
avgTag: str
|
||||
unLockType: str
|
||||
costItemType: str
|
||||
costItemId: Union[str, None]
|
||||
costItemCount: int
|
||||
stageCount: int
|
||||
requiredStages: Union[List[StoryDataConditionStageCondition], None]
|
||||
|
||||
|
||||
class StoryReviewGroupClientData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
name: str
|
||||
entryType: str
|
||||
actType: str
|
||||
startTime: int
|
||||
endTime: int
|
||||
startShowTime: int
|
||||
endShowTime: int
|
||||
remakeStartTime: int
|
||||
remakeEndTime: int
|
||||
storyEntryPicId: Union[str, None]
|
||||
storyPicId: Union[str, None]
|
||||
storyMainColor: Union[str, None]
|
||||
customType: int
|
||||
storyCompleteMedalId: Union[str, None]
|
||||
rewards: Union[List[ItemBundle], None]
|
||||
infoUnlockDatas: List[StoryReviewInfoClientData]
|
||||
|
||||
|
||||
class StoryReviewTable(BaseStruct):
|
||||
__version__ = "24-02-02-10-18-07-831ad8"
|
||||
|
||||
storyreviewtable: Dict[str, StoryReviewGroupClientData]
|
@ -1,51 +0,0 @@
|
||||
from typing import Dict, List, Union
|
||||
|
||||
from msgspec import field
|
||||
|
||||
from ..common import BaseStruct
|
||||
|
||||
|
||||
class StoryDataTrigger(BaseStruct):
|
||||
type_: str = field(name="type")
|
||||
key: Union[str, None]
|
||||
useRegex: bool
|
||||
|
||||
|
||||
class StoryDataConditionStageCondition(BaseStruct):
|
||||
stageId: str
|
||||
minState: int
|
||||
maxState: int
|
||||
|
||||
|
||||
class StoryDataCondition(BaseStruct):
|
||||
minProgress: int
|
||||
maxProgress: int
|
||||
minPlayerLevel: int
|
||||
requiredFlags: List[str]
|
||||
excludedFlags: List[str]
|
||||
requiredStages: List[StoryDataConditionStageCondition]
|
||||
|
||||
|
||||
class ItemBundle(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
count: int
|
||||
type_: str = field(name="type")
|
||||
|
||||
|
||||
class StoryData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
needCommit: bool
|
||||
repeatable: bool
|
||||
disabled: bool
|
||||
videoResource: bool
|
||||
trigger: StoryDataTrigger
|
||||
condition: Union[StoryDataCondition, None]
|
||||
setProgress: int
|
||||
setFlags: Union[List[str], None]
|
||||
completedRewards: Union[List[ItemBundle], None]
|
||||
|
||||
|
||||
class StoryTable(BaseStruct):
|
||||
__version__ = "24-02-02-10-18-07-831ad8"
|
||||
|
||||
stories: Dict[str, StoryData]
|
@ -1,40 +0,0 @@
|
||||
from typing import List, Union
|
||||
|
||||
from msgspec import field
|
||||
|
||||
from ..common import BaseStruct
|
||||
|
||||
|
||||
class RuneDataSelector(BaseStruct):
|
||||
professionMask: int
|
||||
buildableMask: int
|
||||
charIdFilter: Union[List[str], None]
|
||||
enemyIdFilter: Union[List[str], None]
|
||||
skillIdFilter: Union[List[str], None]
|
||||
tileKeyFilter: Union[List[str], None]
|
||||
|
||||
|
||||
class Blackboard(BaseStruct):
|
||||
key: str
|
||||
value: Union[float, None] = None
|
||||
valueStr: Union[str, None] = None
|
||||
|
||||
|
||||
class RuneData(BaseStruct):
|
||||
key: str
|
||||
selector: RuneDataSelector
|
||||
blackboard: List[Blackboard]
|
||||
|
||||
|
||||
class PackedRuneData(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
points: float
|
||||
mutexGroupKey: Union[str, None]
|
||||
description: str
|
||||
runes: List[RuneData]
|
||||
|
||||
|
||||
class TechBuffTable(BaseStruct):
|
||||
__version__ = "24-02-02-10-18-07-831ad8"
|
||||
|
||||
runes: List[PackedRuneData]
|
@ -1,23 +0,0 @@
|
||||
from typing import List
|
||||
|
||||
from ..common import BaseStruct
|
||||
|
||||
|
||||
class TipData(BaseStruct):
|
||||
tip: str
|
||||
weight: float
|
||||
category: str
|
||||
|
||||
|
||||
class WorldViewTip(BaseStruct):
|
||||
title: str
|
||||
description: str
|
||||
backgroundPicId: str
|
||||
weight: float
|
||||
|
||||
|
||||
class TipTable(BaseStruct):
|
||||
__version__ = "24-02-02-10-18-07-831ad8"
|
||||
|
||||
tips: List[TipData]
|
||||
worldViewTips: List[WorldViewTip]
|
@ -1,176 +0,0 @@
|
||||
from typing import Dict, List, Union
|
||||
|
||||
from msgspec import field
|
||||
|
||||
from ..common import BaseStruct
|
||||
|
||||
|
||||
class CharacterDataUnlockCondition(BaseStruct):
|
||||
phase: int
|
||||
level: int
|
||||
|
||||
|
||||
class Blackboard(BaseStruct):
|
||||
key: str
|
||||
value: Union[float, None] = None
|
||||
valueStr: Union[str, None] = None
|
||||
|
||||
|
||||
class CharacterDataTraitData(BaseStruct):
|
||||
unlockCondition: CharacterDataUnlockCondition
|
||||
requiredPotentialRank: int
|
||||
blackboard: List[Blackboard]
|
||||
overrideDescripton: Union[str, None]
|
||||
prefabKey: Union[str, None]
|
||||
rangeId: Union[str, None]
|
||||
|
||||
|
||||
class CharacterDataTraitDataBundle(BaseStruct):
|
||||
candidates: List[CharacterDataTraitData]
|
||||
|
||||
|
||||
class AttributesData(BaseStruct):
|
||||
maxHp: int
|
||||
atk: int
|
||||
def_: int = field(name="def")
|
||||
magicResistance: float
|
||||
cost: int
|
||||
blockCnt: int
|
||||
moveSpeed: float
|
||||
attackSpeed: float
|
||||
baseAttackTime: float
|
||||
respawnTime: int
|
||||
hpRecoveryPerSec: float
|
||||
spRecoveryPerSec: float
|
||||
maxDeployCount: int
|
||||
maxDeckStackCnt: int
|
||||
tauntLevel: int
|
||||
massLevel: int
|
||||
baseForceLevel: int
|
||||
stunImmune: bool
|
||||
silenceImmune: bool
|
||||
sleepImmune: bool
|
||||
frozenImmune: bool
|
||||
levitateImmune: bool
|
||||
disarmedCombatImmune: bool
|
||||
|
||||
|
||||
class CharacterDataAttributesKeyFrame(BaseStruct):
|
||||
level: int
|
||||
data: AttributesData
|
||||
|
||||
|
||||
class ItemBundle(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
count: int
|
||||
type_: str = field(name="type")
|
||||
|
||||
|
||||
class CharacterDataPhaseData(BaseStruct):
|
||||
characterPrefabKey: str
|
||||
rangeId: Union[str, None]
|
||||
maxLevel: int
|
||||
attributesKeyFrames: List[CharacterDataAttributesKeyFrame]
|
||||
evolveCost: Union[List[ItemBundle], None]
|
||||
|
||||
|
||||
class CharacterDataMainSkillSpecializeLevelData(BaseStruct):
|
||||
unlockCond: CharacterDataUnlockCondition
|
||||
lvlUpTime: int
|
||||
levelUpCost: Union[List[ItemBundle], None]
|
||||
|
||||
|
||||
class CharacterDataMainSkill(BaseStruct):
|
||||
skillId: Union[str, None]
|
||||
overridePrefabKey: Union[str, None]
|
||||
overrideTokenKey: Union[str, None]
|
||||
levelUpCostCond: List[CharacterDataMainSkillSpecializeLevelData]
|
||||
unlockCond: CharacterDataUnlockCondition
|
||||
|
||||
|
||||
class TalentData(BaseStruct):
|
||||
unlockCondition: CharacterDataUnlockCondition
|
||||
requiredPotentialRank: int
|
||||
prefabKey: str
|
||||
name: Union[str, None]
|
||||
description: Union[str, None]
|
||||
rangeId: Union[str, None]
|
||||
blackboard: List[Blackboard]
|
||||
|
||||
|
||||
class CharacterDataTalentDataBundle(BaseStruct):
|
||||
candidates: Union[List[TalentData], None]
|
||||
|
||||
|
||||
class AttributeModifierDataAttributeModifier(BaseStruct):
|
||||
attributeType: int
|
||||
formulaItem: int
|
||||
value: float
|
||||
loadFromBlackboard: bool
|
||||
fetchBaseValueFromSourceEntity: bool
|
||||
|
||||
|
||||
class AttributeModifierData(BaseStruct):
|
||||
abnormalFlags: Union[List[str], None]
|
||||
abnormalImmunes: Union[List[str], None]
|
||||
abnormalAntis: Union[List[str], None]
|
||||
abnormalCombos: Union[List[str], None]
|
||||
abnormalComboImmunes: Union[List[str], None]
|
||||
attributeModifiers: List[AttributeModifierDataAttributeModifier]
|
||||
|
||||
|
||||
class ExternalBuff(BaseStruct):
|
||||
attributes: AttributeModifierData
|
||||
|
||||
|
||||
class CharacterDataPotentialRank(BaseStruct):
|
||||
type_: int = field(name="type")
|
||||
description: str
|
||||
buff: Union[ExternalBuff, None]
|
||||
equivalentCost: Union[ItemBundle, None]
|
||||
|
||||
|
||||
class CharacterDataSkillLevelCost(BaseStruct):
|
||||
unlockCond: CharacterDataUnlockCondition
|
||||
lvlUpCost: Union[List[ItemBundle], None]
|
||||
|
||||
|
||||
class TokenCharacterData(BaseStruct):
|
||||
name: str
|
||||
description: Union[str, None]
|
||||
canUseGeneralPotentialItem: bool
|
||||
canUseActivityPotentialItem: bool
|
||||
potentialItemId: Union[str, None]
|
||||
activityPotentialItemId: Union[str, None]
|
||||
nationId: Union[str, None]
|
||||
groupId: Union[str, None]
|
||||
teamId: Union[str, None]
|
||||
displayNumber: Union[str, None]
|
||||
appellation: str
|
||||
position: str
|
||||
tagList: Union[List[str], None]
|
||||
itemUsage: Union[str, None]
|
||||
itemDesc: Union[str, None]
|
||||
itemObtainApproach: Union[str, None]
|
||||
isNotObtainable: bool
|
||||
isSpChar: bool
|
||||
maxPotentialLevel: int
|
||||
rarity: int
|
||||
profession: str
|
||||
subProfessionId: str
|
||||
trait: Union[CharacterDataTraitDataBundle, None]
|
||||
phases: List[CharacterDataPhaseData]
|
||||
skills: Union[List[CharacterDataMainSkill], None]
|
||||
talents: Union[List[CharacterDataTalentDataBundle], None]
|
||||
potentialRanks: Union[List[CharacterDataPotentialRank], None]
|
||||
favorKeyFrames: Union[List[CharacterDataAttributesKeyFrame], None]
|
||||
allSkillLvlup: Union[List[CharacterDataSkillLevelCost], None]
|
||||
minPowerId: str
|
||||
maxPowerId: str
|
||||
tokenKey: Union[str, None] = None
|
||||
|
||||
|
||||
class TokenTable(BaseStruct):
|
||||
__version__ = "24-02-02-10-18-07-831ad8"
|
||||
|
||||
tokens: Dict[str, TokenCharacterData]
|
@ -1,67 +0,0 @@
|
||||
from typing import Dict, List, Union
|
||||
|
||||
from msgspec import field
|
||||
|
||||
from ..common import BaseStruct
|
||||
|
||||
|
||||
class ItemBundle(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
count: int
|
||||
type_: str = field(name="type")
|
||||
|
||||
|
||||
class UnlockCondition(BaseStruct):
|
||||
phase: int
|
||||
level: int
|
||||
|
||||
|
||||
class TraitDescBundle(BaseStruct):
|
||||
unlockCondition: UnlockCondition
|
||||
requiredPotentialRank: int
|
||||
overrideDescription: None
|
||||
additiveDescription: str
|
||||
|
||||
|
||||
class UniEquipData(BaseStruct):
|
||||
uniEquipId: str
|
||||
uniEquipName: str
|
||||
uniEquipIcon: str
|
||||
uniEquipDesc: str
|
||||
typeIcon: str
|
||||
typeName: str
|
||||
showEvolvePhase: int
|
||||
unlockEvolvePhase: int
|
||||
charId: str
|
||||
tmplId: None
|
||||
showLevel: int
|
||||
unlockLevel: int
|
||||
unlockFavorPercent: int
|
||||
missionList: List[str]
|
||||
itemCost: Union[List[ItemBundle], None]
|
||||
type_: str = field(name="type")
|
||||
traitDescBundle: List[TraitDescBundle]
|
||||
|
||||
|
||||
class UniEquipMissionData(BaseStruct):
|
||||
template: Union[str, None]
|
||||
desc: Union[str, None]
|
||||
paramList: List[str]
|
||||
uniEquipMissionId: str
|
||||
uniEquipMissionSort: int
|
||||
uniEquipId: str
|
||||
|
||||
|
||||
class SubProfessionData(BaseStruct):
|
||||
subProfessionId: str
|
||||
subProfessionName: str
|
||||
subProfessionCatagory: int
|
||||
|
||||
|
||||
class UniequipData(BaseStruct):
|
||||
__version__ = "24-02-02-10-18-07-831ad8"
|
||||
|
||||
equipDict: Dict[str, UniEquipData]
|
||||
missionList: Dict[str, UniEquipMissionData]
|
||||
subProfDict: Dict[str, SubProfessionData]
|
||||
charEquip: Dict[str, List[str]]
|
@ -1,70 +0,0 @@
|
||||
from typing import Dict, List, Union
|
||||
|
||||
from msgspec import field
|
||||
|
||||
from ..common import BaseStruct
|
||||
|
||||
|
||||
class ItemBundle(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
count: int
|
||||
type_: str = field(name="type")
|
||||
|
||||
|
||||
class UniEquipData(BaseStruct):
|
||||
uniEquipId: str
|
||||
uniEquipName: str
|
||||
uniEquipIcon: str
|
||||
uniEquipDesc: str
|
||||
typeIcon: str
|
||||
typeName1: str
|
||||
typeName2: Union[str, None]
|
||||
equipShiningColor: str
|
||||
showEvolvePhase: int
|
||||
unlockEvolvePhase: int
|
||||
charId: str
|
||||
tmplId: Union[str, None]
|
||||
showLevel: int
|
||||
unlockLevel: int
|
||||
unlockFavorPoint: int
|
||||
missionList: List[str]
|
||||
itemCost: Union[Dict[str, List[ItemBundle]], None]
|
||||
type_: str = field(name="type")
|
||||
uniEquipGetTime: int
|
||||
charEquipOrder: int
|
||||
|
||||
|
||||
class UniEquipMissionData(BaseStruct):
|
||||
template: str
|
||||
desc: str
|
||||
paramList: List[str]
|
||||
uniEquipMissionId: str
|
||||
uniEquipMissionSort: int
|
||||
uniEquipId: str
|
||||
jumpStageId: Union[str, None]
|
||||
|
||||
|
||||
class SubProfessionData(BaseStruct):
|
||||
subProfessionId: str
|
||||
subProfessionName: str
|
||||
subProfessionCatagory: int
|
||||
|
||||
|
||||
class UniEquipTrack(BaseStruct):
|
||||
charId: str
|
||||
equipId: str
|
||||
|
||||
|
||||
class UniEquipTimeInfo(BaseStruct):
|
||||
timeStamp: int
|
||||
trackList: List[UniEquipTrack]
|
||||
|
||||
|
||||
class UniEquipTable(BaseStruct):
|
||||
__version__ = "24-02-02-10-18-07-831ad8"
|
||||
|
||||
equipDict: Dict[str, UniEquipData]
|
||||
missionList: Dict[str, UniEquipMissionData]
|
||||
subProfDict: Dict[str, SubProfessionData]
|
||||
charEquip: Dict[str, List[str]]
|
||||
equipTrackDict: List[UniEquipTimeInfo]
|
@ -1,112 +0,0 @@
|
||||
from typing import Dict, List, Union
|
||||
|
||||
from msgspec import field
|
||||
|
||||
from ..common import BaseStruct
|
||||
|
||||
|
||||
class ZoneData(BaseStruct):
|
||||
zoneID: str
|
||||
zoneIndex: int
|
||||
type_: str = field(name="type")
|
||||
zoneNameFirst: Union[str, None]
|
||||
zoneNameSecond: Union[str, None]
|
||||
zoneNameTitleCurrent: Union[str, None]
|
||||
zoneNameTitleUnCurrent: Union[str, None]
|
||||
zoneNameTitleEx: Union[str, None]
|
||||
zoneNameThird: Union[str, None]
|
||||
lockedText: Union[str, None]
|
||||
canPreview: bool
|
||||
|
||||
|
||||
class WeeklyZoneData(BaseStruct):
|
||||
daysOfWeek: List[int]
|
||||
type_: str = field(name="type")
|
||||
|
||||
|
||||
class ZoneValidInfo(BaseStruct):
|
||||
startTs: int
|
||||
endTs: int
|
||||
|
||||
|
||||
class MainlineZoneData(BaseStruct):
|
||||
zoneId: str
|
||||
chapterId: str
|
||||
preposedZoneId: Union[str, None]
|
||||
zoneIndex: int
|
||||
startStageId: str
|
||||
endStageId: str
|
||||
mainlneBgName: str
|
||||
recapId: str
|
||||
recapPreStageId: str
|
||||
buttonName: str
|
||||
buttonStyle: str
|
||||
spoilAlert: bool
|
||||
zoneOpenTime: int
|
||||
diffGroup: List[int]
|
||||
|
||||
|
||||
class ItemBundle(BaseStruct):
|
||||
id_: str = field(name="id")
|
||||
count: int
|
||||
type_: str = field(name="type")
|
||||
|
||||
|
||||
class RecordRewardInfo(BaseStruct):
|
||||
bindStageId: str
|
||||
stageDiff1: int
|
||||
stageDiff: int
|
||||
picRes: Union[str, None]
|
||||
textPath: Union[str, None]
|
||||
textDesc: Union[str, None]
|
||||
recordReward: Union[List[ItemBundle], None]
|
||||
|
||||
|
||||
class ZoneRecordData(BaseStruct):
|
||||
recordId: str
|
||||
zoneId: str
|
||||
recordTitleName: str
|
||||
preRecordId: Union[str, None]
|
||||
nodeTitle1: Union[str, None]
|
||||
nodeTitle2: Union[str, None]
|
||||
rewards: List[RecordRewardInfo]
|
||||
|
||||
|
||||
class ZoneRecordUnlockData(BaseStruct):
|
||||
noteId: str
|
||||
zoneId: str
|
||||
initialName: str
|
||||
finalName: Union[str, None]
|
||||
accordingExposeId: Union[str, None]
|
||||
initialDes: str
|
||||
finalDes: Union[str, None]
|
||||
remindDes: Union[str, None]
|
||||
|
||||
|
||||
class ZoneRecordGroupData(BaseStruct):
|
||||
zoneId: str
|
||||
records: List[ZoneRecordData]
|
||||
unlockData: ZoneRecordUnlockData
|
||||
|
||||
|
||||
class ZoneRecordMissionData(BaseStruct):
|
||||
missionId: str
|
||||
recordStageId: str
|
||||
templateDesc: str
|
||||
desc: str
|
||||
|
||||
|
||||
class ZoneMetaData(BaseStruct):
|
||||
ZoneRecordMissionData: Dict[str, ZoneRecordMissionData]
|
||||
|
||||
|
||||
class ZoneTable(BaseStruct):
|
||||
__version__ = "24-02-02-10-18-07-831ad8"
|
||||
|
||||
zones: Dict[str, ZoneData]
|
||||
weeklyAdditionInfo: Dict[str, WeeklyZoneData]
|
||||
zoneValidInfo: Dict[str, ZoneValidInfo]
|
||||
mainlineAdditionInfo: Dict[str, MainlineZoneData]
|
||||
zoneRecordGroupedData: Dict[str, ZoneRecordGroupData]
|
||||
zoneRecordRewardData: Dict[str, List[str]]
|
||||
zoneMetaData: ZoneMetaData
|
@ -1,5 +1,3 @@
|
||||
from typing import Dict, List, Union
|
||||
|
||||
from msgspec import Struct, field
|
||||
|
||||
|
||||
@ -37,17 +35,17 @@ class ArknightsAttendanceAwardResource(Struct):
|
||||
name: str
|
||||
rarity: int
|
||||
sortId: int
|
||||
otherSource: List[str]
|
||||
otherSource: list[str]
|
||||
classifyType: str
|
||||
stageDropList: List[ArknightsAttendanceStageDropListItem]
|
||||
buildingProductList: List[ArknightsAttendanceBuildingProductListItem]
|
||||
stageDropList: list[ArknightsAttendanceStageDropListItem]
|
||||
buildingProductList: list[ArknightsAttendanceBuildingProductListItem]
|
||||
|
||||
|
||||
class ArknightsAttendanceCalendarModel(Struct):
|
||||
currentTs: str
|
||||
calendar: List[ArknightsAttendanceCalendar]
|
||||
records: List[Union[ArknightsAttendanceRecord, None]]
|
||||
resourceInfoMap: Dict[str, ArknightsAttendanceAwardResource]
|
||||
calendar: list[ArknightsAttendanceCalendar]
|
||||
records: list[ArknightsAttendanceRecord | None]
|
||||
resourceInfoMap: dict[str, ArknightsAttendanceAwardResource]
|
||||
|
||||
|
||||
################
|
||||
@ -61,7 +59,7 @@ class ArknightsAttendanceAward(Struct):
|
||||
|
||||
class ArknightsAttendanceModel(Struct):
|
||||
ts: str
|
||||
awards: List[ArknightsAttendanceAward]
|
||||
awards: list[ArknightsAttendanceAward]
|
||||
resourceInfoMap: dict
|
||||
|
||||
|
||||
@ -116,7 +114,7 @@ class UserGameStatus(Struct):
|
||||
charCnt: int
|
||||
furnitureCnt: int
|
||||
skinCnt: int
|
||||
avatar: Union[UserGameStatusAvatar, None] = None
|
||||
avatar: UserGameStatusAvatar | None = None
|
||||
|
||||
|
||||
class UserMeInfoRts(Struct):
|
||||
@ -137,7 +135,7 @@ class UserMeInfo(Struct):
|
||||
avatar: str
|
||||
backgroundCode: int
|
||||
isCreator: bool
|
||||
creatorIdentifiers: List[str]
|
||||
creatorIdentifiers: list[str]
|
||||
status: int
|
||||
operationStatus: int
|
||||
identity: int
|
||||
@ -152,7 +150,7 @@ class UserMeInfo(Struct):
|
||||
class ArknightsUserMeModel(Struct, omit_defaults=True):
|
||||
user: UserMeInfo
|
||||
userRts: UserMeInfoRts
|
||||
userSanctionList: List[str]
|
||||
userSanctionList: list[str]
|
||||
gameStatus: UserGameStatus
|
||||
moderator: UserMeModerator
|
||||
userInfoApply: UserMeInfoApply
|
||||
@ -180,7 +178,7 @@ class PlayerManufactureFormulaInfo(Struct):
|
||||
count: int
|
||||
weight: int
|
||||
costPoint: int
|
||||
costs: Union[List[PlayerManufactureFormulaCostsInfo], None] = None
|
||||
costs: list[PlayerManufactureFormulaCostsInfo] | None = None
|
||||
|
||||
|
||||
class PlayerEquipmentInfo(Struct):
|
||||
@ -188,9 +186,9 @@ class PlayerEquipmentInfo(Struct):
|
||||
name: str
|
||||
typeIcon: str
|
||||
shiningColor: str
|
||||
desc: Union[str, None] = None
|
||||
typeName1: Union[str, None] = None
|
||||
typeName2: Union[str, None] = None
|
||||
desc: str | None = None
|
||||
typeName1: str | None = None
|
||||
typeName2: str | None = None
|
||||
|
||||
|
||||
class PlayerCampaignZoneInfo(Struct):
|
||||
@ -221,8 +219,8 @@ class PlayerTowerInfo(Struct):
|
||||
name: str
|
||||
subName: str
|
||||
picUrl: str
|
||||
hasHard: Union[bool, None] = None
|
||||
stageNum: Union[int, None] = None
|
||||
hasHard: bool | None = None
|
||||
stageNum: int | None = None
|
||||
|
||||
|
||||
class PlayerZoneInfo(Struct):
|
||||
@ -238,9 +236,9 @@ class PlayerActivityInfo(Struct):
|
||||
rewardEndTime: int
|
||||
isReplicate: bool
|
||||
type_: str = field(name="type")
|
||||
dropItemIds: List[str]
|
||||
shopGoodItemIds: List[str]
|
||||
favorUpList: List[str]
|
||||
dropItemIds: list[str]
|
||||
shopGoodItemIds: list[str]
|
||||
favorUpList: list[str]
|
||||
picUrl: str
|
||||
|
||||
|
||||
@ -257,13 +255,13 @@ class PlayerSkinInfo(Struct):
|
||||
displayTagId: str
|
||||
name: str
|
||||
charId: str
|
||||
brandName: Union[str, None] = None
|
||||
brandCapitalName: Union[str, None] = None
|
||||
illustId: Union[str, None] = None
|
||||
dynIllustId: Union[str, None] = None
|
||||
avatarId: Union[str, None] = None
|
||||
portraitId: Union[str, None] = None
|
||||
skinGroupId: Union[str, None] = None
|
||||
brandName: str | None = None
|
||||
brandCapitalName: str | None = None
|
||||
illustId: str | None = None
|
||||
dynIllustId: str | None = None
|
||||
avatarId: str | None = None
|
||||
portraitId: str | None = None
|
||||
skinGroupId: str | None = None
|
||||
|
||||
|
||||
class PlayerCharInfo(Struct):
|
||||
@ -287,14 +285,14 @@ class ActivityZone(Struct):
|
||||
zoneReplicaId: str
|
||||
clearedStage: int
|
||||
totalStage: int
|
||||
stageStatus: Union[List[ActivityZoneStageStatus], None] = None
|
||||
stageStatus: list[ActivityZoneStageStatus] | None = None
|
||||
|
||||
|
||||
class PlayerActivity(Struct):
|
||||
actId: str
|
||||
actReplicaId: str
|
||||
zones: List[ActivityZone]
|
||||
type_: Union[str, None] = field(name="type", default=None)
|
||||
zones: list[ActivityZone]
|
||||
type_: str | None = field(name="type", default=None)
|
||||
|
||||
|
||||
class RewoardItem(Struct):
|
||||
@ -316,12 +314,12 @@ class RogueRecord(Struct):
|
||||
rogueId: str
|
||||
relicCnt: int
|
||||
bank: BankItem
|
||||
mission: Union[RewoardItem, None] = None
|
||||
clearTime: Union[int, None] = None
|
||||
mission: RewoardItem | None = None
|
||||
clearTime: int | None = None
|
||||
|
||||
|
||||
class PlayerRogue(Struct):
|
||||
records: List[RogueRecord]
|
||||
records: list[RogueRecord]
|
||||
|
||||
|
||||
class TowerReward(Struct):
|
||||
@ -333,14 +331,14 @@ class TowerReward(Struct):
|
||||
class TowerRecord(Struct):
|
||||
towerId: str
|
||||
best: int
|
||||
hasHard: Union[bool, None] = None
|
||||
stageNum: Union[int, None] = None
|
||||
unlockHard: Union[bool, None] = None
|
||||
hardBest: Union[int, None] = None
|
||||
hasHard: bool | None = None
|
||||
stageNum: int | None = None
|
||||
unlockHard: bool | None = None
|
||||
hardBest: int | None = None
|
||||
|
||||
|
||||
class PlayerTower(Struct):
|
||||
records: List[TowerRecord]
|
||||
records: list[TowerRecord]
|
||||
reward: TowerReward
|
||||
|
||||
|
||||
@ -355,7 +353,7 @@ class CampaignRecord(Struct):
|
||||
|
||||
|
||||
class PlayerCampaign(Struct):
|
||||
records: List[CampaignRecord]
|
||||
records: list[CampaignRecord]
|
||||
reward: CampaignReward
|
||||
|
||||
|
||||
@ -368,8 +366,8 @@ class PlayerRecruit(Struct):
|
||||
startTs: int
|
||||
finishTs: int
|
||||
state: int
|
||||
duration: Union[int, None] = None
|
||||
selectTags: Union[List[RecruitTag], None] = None
|
||||
duration: int | None = None
|
||||
selectTags: list[RecruitTag] | None = None
|
||||
|
||||
|
||||
class BuildingTrainingTrainee(Struct):
|
||||
@ -390,7 +388,7 @@ class BuildingClue(Struct):
|
||||
received: int
|
||||
dailyReward: bool
|
||||
needReceive: int
|
||||
board: List[str]
|
||||
board: list[str]
|
||||
sharing: bool
|
||||
shareCompleteTime: int
|
||||
|
||||
@ -418,7 +416,7 @@ class BuildingControl(Struct):
|
||||
slotId: str
|
||||
slotState: int
|
||||
level: int
|
||||
chars: List[BuildingChar]
|
||||
chars: list[BuildingChar]
|
||||
|
||||
|
||||
class BuildingCorridor(Struct):
|
||||
@ -452,14 +450,14 @@ class BuildingTraining(Struct):
|
||||
lastUpdateTime: int
|
||||
remainSecs: int
|
||||
slotState: int
|
||||
trainee: Union[BuildingTrainingTrainee, None]
|
||||
trainer: Union[BuildingTrainingTrainer, None]
|
||||
trainee: BuildingTrainingTrainee | None
|
||||
trainer: BuildingTrainingTrainer | None
|
||||
|
||||
|
||||
class BuildingHire(Struct):
|
||||
slotId: str
|
||||
level: int
|
||||
chars: List[BuildingChar]
|
||||
chars: list[BuildingChar]
|
||||
state: int
|
||||
refreshCount: int
|
||||
completeWorkTime: int
|
||||
@ -469,7 +467,7 @@ class BuildingHire(Struct):
|
||||
class BuildingMeeting(Struct):
|
||||
slotId: str
|
||||
level: int
|
||||
chars: List[BuildingChar]
|
||||
chars: list[BuildingChar]
|
||||
clue: BuildingClue
|
||||
lastUpdateTime: int
|
||||
completeWorkTime: int
|
||||
@ -478,7 +476,7 @@ class BuildingMeeting(Struct):
|
||||
class BuildingDormitories(Struct):
|
||||
slotId: str
|
||||
level: int
|
||||
chars: List[BuildingChar]
|
||||
chars: list[BuildingChar]
|
||||
comfort: int
|
||||
|
||||
|
||||
@ -491,7 +489,7 @@ class BuildingStockDelivery(Struct):
|
||||
class BuildingStock(Struct):
|
||||
instId: int
|
||||
type_: str = field(name="type")
|
||||
delivery: List[BuildingStockDelivery]
|
||||
delivery: list[BuildingStockDelivery]
|
||||
gain: BuildingStockDelivery
|
||||
isViolated: bool
|
||||
|
||||
@ -499,18 +497,18 @@ class BuildingStock(Struct):
|
||||
class BuildingTradings(Struct):
|
||||
slotId: str
|
||||
level: int
|
||||
chars: List[BuildingChar]
|
||||
chars: list[BuildingChar]
|
||||
completeWorkTime: int
|
||||
lastUpdateTime: int
|
||||
strategy: str
|
||||
stock: List[BuildingStock]
|
||||
stock: list[BuildingStock]
|
||||
stockLimit: int
|
||||
|
||||
|
||||
class BuildingManufactures(Struct):
|
||||
slotId: str
|
||||
level: int
|
||||
chars: List[BuildingChar]
|
||||
chars: list[BuildingChar]
|
||||
completeWorkTime: int
|
||||
lastUpdateTime: int
|
||||
formulaId: str
|
||||
@ -524,7 +522,7 @@ class BuildingManufactures(Struct):
|
||||
class BuildingPower(Struct):
|
||||
slotId: str
|
||||
level: int
|
||||
chars: List[BuildingChar]
|
||||
chars: list[BuildingChar]
|
||||
|
||||
|
||||
class BuildingTiredChar(Struct):
|
||||
@ -538,19 +536,19 @@ class BuildingTiredChar(Struct):
|
||||
|
||||
|
||||
class PlayerBuilding(Struct):
|
||||
tiredChars: Union[List[BuildingTiredChar], None]
|
||||
powers: Union[List[BuildingPower], None]
|
||||
manufactures: Union[List[BuildingManufactures], None]
|
||||
tradings: Union[List[BuildingTradings], None]
|
||||
dormitories: Union[List[BuildingDormitories], None]
|
||||
meeting: Union[BuildingMeeting, None]
|
||||
hire: Union[BuildingHire, None]
|
||||
tiredChars: list[BuildingTiredChar] | None
|
||||
powers: list[BuildingPower] | None
|
||||
manufactures: list[BuildingManufactures] | None
|
||||
tradings: list[BuildingTradings] | None
|
||||
dormitories: list[BuildingDormitories] | None
|
||||
meeting: BuildingMeeting | None
|
||||
hire: BuildingHire | None
|
||||
labor: BuildingLabor
|
||||
furniture: BuildingFurniture
|
||||
elevators: List[BuildingElevator]
|
||||
corridors: Union[List[BuildingCorridor], None]
|
||||
elevators: list[BuildingElevator]
|
||||
corridors: list[BuildingCorridor] | None
|
||||
control: BuildingControl
|
||||
training: Union[BuildingTraining, None] = None
|
||||
training: BuildingTraining | None = None
|
||||
|
||||
|
||||
class PlayerInfoSkin(Struct):
|
||||
@ -576,8 +574,8 @@ class PlayerInfoChar(Struct):
|
||||
evolvePhase: int
|
||||
potentialRank: int
|
||||
mainSkillLvl: int
|
||||
skills: Union[List[PlayerInfoCharSkill], None]
|
||||
equip: Union[List[PlayerInfoCharEquip], None]
|
||||
skills: list[PlayerInfoCharSkill] | None
|
||||
equip: list[PlayerInfoCharEquip] | None
|
||||
favorPercent: int
|
||||
defaultSkillId: str
|
||||
gainTime: int
|
||||
@ -599,14 +597,14 @@ class PlayerAssistChar(Struct):
|
||||
skillId: str
|
||||
mainSkillLvl: int
|
||||
specializeLevel: int
|
||||
equip: Union[PlayerAssistCharEquip, None]
|
||||
equip: PlayerAssistCharEquip | None
|
||||
|
||||
|
||||
class PlayerMedal(Struct):
|
||||
type_: str = field(name="type")
|
||||
template: str
|
||||
templateMedalList: List[str]
|
||||
customMedalLayout: List[Union[str, None]]
|
||||
templateMedalList: list[str]
|
||||
customMedalLayout: list[str | None]
|
||||
total: int
|
||||
|
||||
|
||||
@ -649,7 +647,7 @@ class PlayerStatus(Struct):
|
||||
furnitureCnt: int
|
||||
skinCnt: int
|
||||
exp: PlayerStatusExp
|
||||
avatar: Union[PlayerStatusAvatar, None] = None
|
||||
avatar: PlayerStatusAvatar | None = None
|
||||
|
||||
|
||||
class DisplayShowConfig(Struct):
|
||||
@ -702,12 +700,12 @@ class PlayerSandboxList(Struct):
|
||||
maxDay: int
|
||||
maxDayChallenge: int
|
||||
mainQuest: int
|
||||
subQuest: List[Union[PlayerSandboxSubQuest, None]]
|
||||
subQuest: list[PlayerSandboxSubQuest | None]
|
||||
baseLv: int
|
||||
unlockNode: int
|
||||
enemyKill: int
|
||||
createRift: int
|
||||
fixRift: List[int]
|
||||
fixRift: list[int]
|
||||
picUrl: str
|
||||
|
||||
|
||||
@ -715,35 +713,35 @@ class ArknightsPlayerInfoModel(Struct, omit_defaults=True, gc=False):
|
||||
currentTs: int
|
||||
showConfig: DisplayShowConfig
|
||||
status: PlayerStatus
|
||||
assistChars: List[PlayerAssistChar]
|
||||
chars: List[PlayerInfoChar]
|
||||
skins: List[PlayerInfoSkin]
|
||||
assistChars: list[PlayerAssistChar]
|
||||
chars: list[PlayerInfoChar]
|
||||
skins: list[PlayerInfoSkin]
|
||||
building: PlayerBuilding
|
||||
recruit: List[PlayerRecruit]
|
||||
recruit: list[PlayerRecruit]
|
||||
campaign: PlayerCampaign
|
||||
tower: PlayerTower
|
||||
rogue: PlayerRogue
|
||||
routine: PlayerRoutine
|
||||
activity: List[PlayerActivity]
|
||||
charInfoMap: Dict[str, PlayerCharInfo]
|
||||
skinInfoMap: Dict[str, PlayerSkinInfo]
|
||||
stageInfoMap: Dict[str, PlayerStageInfo]
|
||||
activityInfoMap: Dict[str, PlayerActivityInfo]
|
||||
towerInfoMap: Dict[str, PlayerTowerInfo]
|
||||
rogueInfoMap: Dict[str, PlayerRogueInfo]
|
||||
campaignInfoMap: Dict[str, PlayerCampaignInfo]
|
||||
campaignZoneInfoMap: Dict[str, PlayerCampaignZoneInfo]
|
||||
equipmentInfoMap: Dict[str, PlayerEquipmentInfo]
|
||||
manufactureFormulaInfoMap: Dict[str, PlayerManufactureFormulaInfo]
|
||||
charAssets: List[Union[str, None]]
|
||||
skinAssets: List[Union[str, None]]
|
||||
activityBannerList: Dict[str, List[PlayerActivityBannerList]]
|
||||
bossRush: List[Union[PlayerBossRustList, None]]
|
||||
bannerList: List[Union[PlayerBannerList, None]]
|
||||
sandbox: List[Union[PlayerSandboxList, None]]
|
||||
medal: Union[PlayerMedal, None] = None
|
||||
zoneInfoMap: Union[Dict[str, PlayerZoneInfo], None] = None
|
||||
medalInfoMap: Union[Dict[str, PlayerMedalInfo], None] = None
|
||||
activity: list[PlayerActivity]
|
||||
charInfoMap: dict[str, PlayerCharInfo]
|
||||
skinInfoMap: dict[str, PlayerSkinInfo]
|
||||
stageInfoMap: dict[str, PlayerStageInfo]
|
||||
activityInfoMap: dict[str, PlayerActivityInfo]
|
||||
towerInfoMap: dict[str, PlayerTowerInfo]
|
||||
rogueInfoMap: dict[str, PlayerRogueInfo]
|
||||
campaignInfoMap: dict[str, PlayerCampaignInfo]
|
||||
campaignZoneInfoMap: dict[str, PlayerCampaignZoneInfo]
|
||||
equipmentInfoMap: dict[str, PlayerEquipmentInfo]
|
||||
manufactureFormulaInfoMap: dict[str, PlayerManufactureFormulaInfo]
|
||||
charAssets: list[str | None]
|
||||
skinAssets: list[str | None]
|
||||
activityBannerList: dict[str, list[PlayerActivityBannerList]]
|
||||
bossRush: list[PlayerBossRustList | None]
|
||||
bannerList: list[PlayerBannerList | None]
|
||||
sandbox: list[PlayerSandboxList | None]
|
||||
medal: PlayerMedal | None = None
|
||||
zoneInfoMap: dict[str, PlayerZoneInfo] | None = None
|
||||
medalInfoMap: dict[str, PlayerMedalInfo] | None = None
|
||||
|
||||
|
||||
################
|
||||
|
215
pdm.lock
generated
215
pdm.lock
generated
@ -5,10 +5,10 @@
|
||||
groups = ["default", "dev"]
|
||||
strategy = []
|
||||
lock_version = "4.5.0"
|
||||
content_hash = "sha256:9d184cabd7da10f30ef3d9a026d1c594ded6b1ae21ef3a31b7278becd87cdb3f"
|
||||
content_hash = "sha256:e7ff881ba70a1db89bad753a0cdfd1074e5c9bb4f1f618cab54b67656af27a9d"
|
||||
|
||||
[[metadata.targets]]
|
||||
requires_python = "~=3.10"
|
||||
requires_python = "~=3.11"
|
||||
|
||||
[[package]]
|
||||
name = "annotated-types"
|
||||
@ -25,18 +25,18 @@ files = [
|
||||
|
||||
[[package]]
|
||||
name = "anyio"
|
||||
version = "3.7.1"
|
||||
requires_python = ">=3.7"
|
||||
version = "4.8.0"
|
||||
requires_python = ">=3.9"
|
||||
summary = "High level compatibility layer for multiple asynchronous event loop implementations"
|
||||
dependencies = [
|
||||
"exceptiongroup; python_version < \"3.11\"",
|
||||
"exceptiongroup>=1.0.2; python_version < \"3.11\"",
|
||||
"idna>=2.8",
|
||||
"sniffio>=1.1",
|
||||
"typing-extensions; python_version < \"3.8\"",
|
||||
"typing-extensions>=4.5; python_version < \"3.13\"",
|
||||
]
|
||||
files = [
|
||||
{file = "anyio-3.7.1-py3-none-any.whl", hash = "sha256:91dee416e570e92c64041bd18b900d1d6fa78dff7048769ce5ac5ddad004fbb5"},
|
||||
{file = "anyio-3.7.1.tar.gz", hash = "sha256:44a3c9aba0f5defa43261a8b3efb97891f2bd7d804e0e1f56419befa1adfc780"},
|
||||
{file = "anyio-4.8.0-py3-none-any.whl", hash = "sha256:b5011f270ab5eb0abf13385f851315585cc37ef330dd88e27ec3d34d651fd47a"},
|
||||
{file = "anyio-4.8.0.tar.gz", hash = "sha256:1d9fe889df5212298c0c0723fa20479d1b94883a2df44bd3897aa91083316f7a"},
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -48,18 +48,6 @@ dependencies = [
|
||||
"pycparser",
|
||||
]
|
||||
files = [
|
||||
{file = "cffi-1.17.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:df8b1c11f177bc2313ec4b2d46baec87a5f3e71fc8b45dab2ee7cae86d9aba14"},
|
||||
{file = "cffi-1.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f2cdc858323644ab277e9bb925ad72ae0e67f69e804f4898c070998d50b1a67"},
|
||||
{file = "cffi-1.17.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:edae79245293e15384b51f88b00613ba9f7198016a5948b5dddf4917d4d26382"},
|
||||
{file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45398b671ac6d70e67da8e4224a065cec6a93541bb7aebe1b198a61b58c7b702"},
|
||||
{file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ad9413ccdeda48c5afdae7e4fa2192157e991ff761e7ab8fdd8926f40b160cc3"},
|
||||
{file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5da5719280082ac6bd9aa7becb3938dc9f9cbd57fac7d2871717b1feb0902ab6"},
|
||||
{file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bb1a08b8008b281856e5971307cc386a8e9c5b625ac297e853d36da6efe9c17"},
|
||||
{file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:045d61c734659cc045141be4bae381a41d89b741f795af1dd018bfb532fd0df8"},
|
||||
{file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6883e737d7d9e4899a8a695e00ec36bd4e5e4f18fabe0aca0efe0a4b44cdb13e"},
|
||||
{file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6b8b4a92e1c65048ff98cfe1f735ef8f1ceb72e3d5f0c25fdb12087a23da22be"},
|
||||
{file = "cffi-1.17.1-cp310-cp310-win32.whl", hash = "sha256:c9c3d058ebabb74db66e431095118094d06abf53284d9c81f27300d0e0d8bc7c"},
|
||||
{file = "cffi-1.17.1-cp310-cp310-win_amd64.whl", hash = "sha256:0f048dcf80db46f0098ccac01132761580d28e28bc0f78ae0d58048063317e15"},
|
||||
{file = "cffi-1.17.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a45e3c6913c5b87b3ff120dcdc03f6131fa0065027d0ed7ee6190736a74cd401"},
|
||||
{file = "cffi-1.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30c5e0cb5ae493c04c8b42916e52ca38079f1b235c2f8ae5f4527b963c401caf"},
|
||||
{file = "cffi-1.17.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f75c7ab1f9e4aca5414ed4d8e5c0e303a34f4421f8a0d47a4d019ceff0ab6af4"},
|
||||
@ -99,75 +87,67 @@ files = [
|
||||
|
||||
[[package]]
|
||||
name = "cryptography"
|
||||
version = "44.0.0"
|
||||
version = "44.0.2"
|
||||
requires_python = "!=3.9.0,!=3.9.1,>=3.7"
|
||||
summary = "cryptography is a package which provides cryptographic recipes and primitives to Python developers."
|
||||
dependencies = [
|
||||
"cffi>=1.12; platform_python_implementation != \"PyPy\"",
|
||||
]
|
||||
files = [
|
||||
{file = "cryptography-44.0.0-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:84111ad4ff3f6253820e6d3e58be2cc2a00adb29335d4cacb5ab4d4d34f2a123"},
|
||||
{file = "cryptography-44.0.0-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b15492a11f9e1b62ba9d73c210e2416724633167de94607ec6069ef724fad092"},
|
||||
{file = "cryptography-44.0.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:831c3c4d0774e488fdc83a1923b49b9957d33287de923d58ebd3cec47a0ae43f"},
|
||||
{file = "cryptography-44.0.0-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:761817a3377ef15ac23cd7834715081791d4ec77f9297ee694ca1ee9c2c7e5eb"},
|
||||
{file = "cryptography-44.0.0-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:3c672a53c0fb4725a29c303be906d3c1fa99c32f58abe008a82705f9ee96f40b"},
|
||||
{file = "cryptography-44.0.0-cp37-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:4ac4c9f37eba52cb6fbeaf5b59c152ea976726b865bd4cf87883a7e7006cc543"},
|
||||
{file = "cryptography-44.0.0-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:ed3534eb1090483c96178fcb0f8893719d96d5274dfde98aa6add34614e97c8e"},
|
||||
{file = "cryptography-44.0.0-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:f3f6fdfa89ee2d9d496e2c087cebef9d4fcbb0ad63c40e821b39f74bf48d9c5e"},
|
||||
{file = "cryptography-44.0.0-cp37-abi3-win32.whl", hash = "sha256:eb33480f1bad5b78233b0ad3e1b0be21e8ef1da745d8d2aecbb20671658b9053"},
|
||||
{file = "cryptography-44.0.0-cp37-abi3-win_amd64.whl", hash = "sha256:abc998e0c0eee3c8a1904221d3f67dcfa76422b23620173e28c11d3e626c21bd"},
|
||||
{file = "cryptography-44.0.0-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:660cb7312a08bc38be15b696462fa7cc7cd85c3ed9c576e81f4dc4d8b2b31591"},
|
||||
{file = "cryptography-44.0.0-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1923cb251c04be85eec9fda837661c67c1049063305d6be5721643c22dd4e2b7"},
|
||||
{file = "cryptography-44.0.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:404fdc66ee5f83a1388be54300ae978b2efd538018de18556dde92575e05defc"},
|
||||
{file = "cryptography-44.0.0-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:c5eb858beed7835e5ad1faba59e865109f3e52b3783b9ac21e7e47dc5554e289"},
|
||||
{file = "cryptography-44.0.0-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:f53c2c87e0fb4b0c00fa9571082a057e37690a8f12233306161c8f4b819960b7"},
|
||||
{file = "cryptography-44.0.0-cp39-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:9e6fc8a08e116fb7c7dd1f040074c9d7b51d74a8ea40d4df2fc7aa08b76b9e6c"},
|
||||
{file = "cryptography-44.0.0-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:d2436114e46b36d00f8b72ff57e598978b37399d2786fd39793c36c6d5cb1c64"},
|
||||
{file = "cryptography-44.0.0-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:a01956ddfa0a6790d594f5b34fc1bfa6098aca434696a03cfdbe469b8ed79285"},
|
||||
{file = "cryptography-44.0.0-cp39-abi3-win32.whl", hash = "sha256:eca27345e1214d1b9f9490d200f9db5a874479be914199194e746c893788d417"},
|
||||
{file = "cryptography-44.0.0-cp39-abi3-win_amd64.whl", hash = "sha256:708ee5f1bafe76d041b53a4f95eb28cdeb8d18da17e597d46d7833ee59b97ede"},
|
||||
{file = "cryptography-44.0.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:37d76e6863da3774cd9db5b409a9ecfd2c71c981c38788d3fcfaf177f447b731"},
|
||||
{file = "cryptography-44.0.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:f677e1268c4e23420c3acade68fac427fffcb8d19d7df95ed7ad17cdef8404f4"},
|
||||
{file = "cryptography-44.0.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:f5e7cb1e5e56ca0933b4873c0220a78b773b24d40d186b6738080b73d3d0a756"},
|
||||
{file = "cryptography-44.0.0-pp310-pypy310_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:8b3e6eae66cf54701ee7d9c83c30ac0a1e3fa17be486033000f2a73a12ab507c"},
|
||||
{file = "cryptography-44.0.0-pp310-pypy310_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:be4ce505894d15d5c5037167ffb7f0ae90b7be6f2a98f9a5c3442395501c32fa"},
|
||||
{file = "cryptography-44.0.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:62901fb618f74d7d81bf408c8719e9ec14d863086efe4185afd07c352aee1d2c"},
|
||||
{file = "cryptography-44.0.0.tar.gz", hash = "sha256:cd4e834f340b4293430701e772ec543b0fbe6c2dea510a5286fe0acabe153a02"},
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "exceptiongroup"
|
||||
version = "1.1.3"
|
||||
requires_python = ">=3.7"
|
||||
summary = "Backport of PEP 654 (exception groups)"
|
||||
files = [
|
||||
{file = "exceptiongroup-1.1.3-py3-none-any.whl", hash = "sha256:343280667a4585d195ca1cf9cef84a4e178c4b6cf2274caef9859782b567d5e3"},
|
||||
{file = "exceptiongroup-1.1.3.tar.gz", hash = "sha256:097acd85d473d75af5bb98e41b61ff7fe35efe6675e4f9370ec6ec5126d160e9"},
|
||||
{file = "cryptography-44.0.2-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:efcfe97d1b3c79e486554efddeb8f6f53a4cdd4cf6086642784fa31fc384e1d7"},
|
||||
{file = "cryptography-44.0.2-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:29ecec49f3ba3f3849362854b7253a9f59799e3763b0c9d0826259a88efa02f1"},
|
||||
{file = "cryptography-44.0.2-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc821e161ae88bfe8088d11bb39caf2916562e0a2dc7b6d56714a48b784ef0bb"},
|
||||
{file = "cryptography-44.0.2-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:3c00b6b757b32ce0f62c574b78b939afab9eecaf597c4d624caca4f9e71e7843"},
|
||||
{file = "cryptography-44.0.2-cp37-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:7bdcd82189759aba3816d1f729ce42ffded1ac304c151d0a8e89b9996ab863d5"},
|
||||
{file = "cryptography-44.0.2-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:4973da6ca3db4405c54cd0b26d328be54c7747e89e284fcff166132eb7bccc9c"},
|
||||
{file = "cryptography-44.0.2-cp37-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:4e389622b6927d8133f314949a9812972711a111d577a5d1f4bee5e58736b80a"},
|
||||
{file = "cryptography-44.0.2-cp37-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:f514ef4cd14bb6fb484b4a60203e912cfcb64f2ab139e88c2274511514bf7308"},
|
||||
{file = "cryptography-44.0.2-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:1bc312dfb7a6e5d66082c87c34c8a62176e684b6fe3d90fcfe1568de675e6688"},
|
||||
{file = "cryptography-44.0.2-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:3b721b8b4d948b218c88cb8c45a01793483821e709afe5f622861fc6182b20a7"},
|
||||
{file = "cryptography-44.0.2-cp37-abi3-win32.whl", hash = "sha256:51e4de3af4ec3899d6d178a8c005226491c27c4ba84101bfb59c901e10ca9f79"},
|
||||
{file = "cryptography-44.0.2-cp37-abi3-win_amd64.whl", hash = "sha256:c505d61b6176aaf982c5717ce04e87da5abc9a36a5b39ac03905c4aafe8de7aa"},
|
||||
{file = "cryptography-44.0.2-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:8e0ddd63e6bf1161800592c71ac794d3fb8001f2caebe0966e77c5234fa9efc3"},
|
||||
{file = "cryptography-44.0.2-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:81276f0ea79a208d961c433a947029e1a15948966658cf6710bbabb60fcc2639"},
|
||||
{file = "cryptography-44.0.2-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9a1e657c0f4ea2a23304ee3f964db058c9e9e635cc7019c4aa21c330755ef6fd"},
|
||||
{file = "cryptography-44.0.2-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:6210c05941994290f3f7f175a4a57dbbb2afd9273657614c506d5976db061181"},
|
||||
{file = "cryptography-44.0.2-cp39-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:d1c3572526997b36f245a96a2b1713bf79ce99b271bbcf084beb6b9b075f29ea"},
|
||||
{file = "cryptography-44.0.2-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:b042d2a275c8cee83a4b7ae30c45a15e6a4baa65a179a0ec2d78ebb90e4f6699"},
|
||||
{file = "cryptography-44.0.2-cp39-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:d03806036b4f89e3b13b6218fefea8d5312e450935b1a2d55f0524e2ed7c59d9"},
|
||||
{file = "cryptography-44.0.2-cp39-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:c7362add18b416b69d58c910caa217f980c5ef39b23a38a0880dfd87bdf8cd23"},
|
||||
{file = "cryptography-44.0.2-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:8cadc6e3b5a1f144a039ea08a0bdb03a2a92e19c46be3285123d32029f40a922"},
|
||||
{file = "cryptography-44.0.2-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:6f101b1f780f7fc613d040ca4bdf835c6ef3b00e9bd7125a4255ec574c7916e4"},
|
||||
{file = "cryptography-44.0.2-cp39-abi3-win32.whl", hash = "sha256:3dc62975e31617badc19a906481deacdeb80b4bb454394b4098e3f2525a488c5"},
|
||||
{file = "cryptography-44.0.2-cp39-abi3-win_amd64.whl", hash = "sha256:5f6f90b72d8ccadb9c6e311c775c8305381db88374c65fa1a68250aa8a9cb3a6"},
|
||||
{file = "cryptography-44.0.2-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:909c97ab43a9c0c0b0ada7a1281430e4e5ec0458e6d9244c0e821bbf152f061d"},
|
||||
{file = "cryptography-44.0.2-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:96e7a5e9d6e71f9f4fca8eebfd603f8e86c5225bb18eb621b2c1e50b290a9471"},
|
||||
{file = "cryptography-44.0.2-pp311-pypy311_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:d1b3031093a366ac767b3feb8bcddb596671b3aaff82d4050f984da0c248b615"},
|
||||
{file = "cryptography-44.0.2-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:04abd71114848aa25edb28e225ab5f268096f44cf0127f3d36975bdf1bdf3390"},
|
||||
{file = "cryptography-44.0.2.tar.gz", hash = "sha256:c63454aa261a0cf0c5b4718349629793e9e634993538db841165b3df74f37ec0"},
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "fastapi"
|
||||
version = "0.115.6"
|
||||
version = "0.115.11"
|
||||
requires_python = ">=3.8"
|
||||
summary = "FastAPI framework, high performance, easy to learn, fast to code, ready for production"
|
||||
dependencies = [
|
||||
"pydantic!=1.8,!=1.8.1,!=2.0.0,!=2.0.1,!=2.1.0,<3.0.0,>=1.7.4",
|
||||
"starlette<0.42.0,>=0.40.0",
|
||||
"starlette<0.47.0,>=0.40.0",
|
||||
"typing-extensions>=4.8.0",
|
||||
]
|
||||
files = [
|
||||
{file = "fastapi-0.115.6-py3-none-any.whl", hash = "sha256:e9240b29e36fa8f4bb7290316988e90c381e5092e0cbe84e7818cc3713bcf305"},
|
||||
{file = "fastapi-0.115.6.tar.gz", hash = "sha256:9ec46f7addc14ea472958a96aae5b5de65f39721a46aaf5705c480d9a8b76654"},
|
||||
{file = "fastapi-0.115.11-py3-none-any.whl", hash = "sha256:32e1541b7b74602e4ef4a0260ecaf3aadf9d4f19590bba3e1bf2ac4666aa2c64"},
|
||||
{file = "fastapi-0.115.11.tar.gz", hash = "sha256:cc81f03f688678b92600a65a5e618b93592c65005db37157147204d8924bf94f"},
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "idna"
|
||||
version = "3.4"
|
||||
requires_python = ">=3.5"
|
||||
version = "3.10"
|
||||
requires_python = ">=3.6"
|
||||
summary = "Internationalized Domain Names in Applications (IDNA)"
|
||||
files = [
|
||||
{file = "idna-3.4-py3-none-any.whl", hash = "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"},
|
||||
{file = "idna-3.4.tar.gz", hash = "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4"},
|
||||
{file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"},
|
||||
{file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"},
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -176,13 +156,6 @@ version = "0.19.0"
|
||||
requires_python = ">=3.9"
|
||||
summary = "A fast serialization and validation library, with builtin support for JSON, MessagePack, YAML, and TOML."
|
||||
files = [
|
||||
{file = "msgspec-0.19.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d8dd848ee7ca7c8153462557655570156c2be94e79acec3561cf379581343259"},
|
||||
{file = "msgspec-0.19.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0553bbc77662e5708fe66aa75e7bd3e4b0f209709c48b299afd791d711a93c36"},
|
||||
{file = "msgspec-0.19.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fe2c4bf29bf4e89790b3117470dea2c20b59932772483082c468b990d45fb947"},
|
||||
{file = "msgspec-0.19.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:00e87ecfa9795ee5214861eab8326b0e75475c2e68a384002aa135ea2a27d909"},
|
||||
{file = "msgspec-0.19.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:3c4ec642689da44618f68c90855a10edbc6ac3ff7c1d94395446c65a776e712a"},
|
||||
{file = "msgspec-0.19.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:2719647625320b60e2d8af06b35f5b12d4f4d281db30a15a1df22adb2295f633"},
|
||||
{file = "msgspec-0.19.0-cp310-cp310-win_amd64.whl", hash = "sha256:695b832d0091edd86eeb535cd39e45f3919f48d997685f7ac31acb15e0a2ed90"},
|
||||
{file = "msgspec-0.19.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:aa77046904db764b0462036bc63ef71f02b75b8f72e9c9dd4c447d6da1ed8f8e"},
|
||||
{file = "msgspec-0.19.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:047cfa8675eb3bad68722cfe95c60e7afabf84d1bd8938979dd2b92e9e4a9551"},
|
||||
{file = "msgspec-0.19.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e78f46ff39a427e10b4a61614a2777ad69559cc8d603a7c05681f5a595ea98f7"},
|
||||
@ -219,7 +192,7 @@ files = [
|
||||
|
||||
[[package]]
|
||||
name = "pydantic"
|
||||
version = "2.10.4"
|
||||
version = "2.10.6"
|
||||
requires_python = ">=3.8"
|
||||
summary = "Data validation using Python type hints"
|
||||
dependencies = [
|
||||
@ -228,8 +201,8 @@ dependencies = [
|
||||
"typing-extensions>=4.12.2",
|
||||
]
|
||||
files = [
|
||||
{file = "pydantic-2.10.4-py3-none-any.whl", hash = "sha256:597e135ea68be3a37552fb524bc7d0d66dcf93d395acd93a00682f1efcb8ee3d"},
|
||||
{file = "pydantic-2.10.4.tar.gz", hash = "sha256:82f12e9723da6de4fe2ba888b5971157b3be7ad914267dea8f05f82b28254f06"},
|
||||
{file = "pydantic-2.10.6-py3-none-any.whl", hash = "sha256:427d664bf0b8a2b34ff5dd0f5a18df00591adcee7198fbd71981054cef37b584"},
|
||||
{file = "pydantic-2.10.6.tar.gz", hash = "sha256:ca5daa827cce33de7a42be142548b0096bf05a7e7b365aebfa5f8eeec7128236"},
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -241,19 +214,6 @@ dependencies = [
|
||||
"typing-extensions!=4.7.0,>=4.6.0",
|
||||
]
|
||||
files = [
|
||||
{file = "pydantic_core-2.27.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2d367ca20b2f14095a8f4fa1210f5a7b78b8a20009ecced6b12818f455b1e9fa"},
|
||||
{file = "pydantic_core-2.27.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:491a2b73db93fab69731eaee494f320faa4e093dbed776be1a829c2eb222c34c"},
|
||||
{file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7969e133a6f183be60e9f6f56bfae753585680f3b7307a8e555a948d443cc05a"},
|
||||
{file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3de9961f2a346257caf0aa508a4da705467f53778e9ef6fe744c038119737ef5"},
|
||||
{file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e2bb4d3e5873c37bb3dd58714d4cd0b0e6238cebc4177ac8fe878f8b3aa8e74c"},
|
||||
{file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:280d219beebb0752699480fe8f1dc61ab6615c2046d76b7ab7ee38858de0a4e7"},
|
||||
{file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47956ae78b6422cbd46f772f1746799cbb862de838fd8d1fbd34a82e05b0983a"},
|
||||
{file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:14d4a5c49d2f009d62a2a7140d3064f686d17a5d1a268bc641954ba181880236"},
|
||||
{file = "pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:337b443af21d488716f8d0b6164de833e788aa6bd7e3a39c005febc1284f4962"},
|
||||
{file = "pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:03d0f86ea3184a12f41a2d23f7ccb79cdb5a18e06993f8a45baa8dfec746f0e9"},
|
||||
{file = "pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7041c36f5680c6e0f08d922aed302e98b3745d97fe1589db0a3eebf6624523af"},
|
||||
{file = "pydantic_core-2.27.2-cp310-cp310-win32.whl", hash = "sha256:50a68f3e3819077be2c98110c1f9dcb3817e93f267ba80a2c05bb4f8799e2ff4"},
|
||||
{file = "pydantic_core-2.27.2-cp310-cp310-win_amd64.whl", hash = "sha256:e0fd26b16394ead34a424eecf8a31a1f5137094cabe84a1bcb10fa6ba39d3d31"},
|
||||
{file = "pydantic_core-2.27.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:8e10c99ef58cfdf2a66fc15d66b16c4a04f62bca39db589ae8cba08bc55331bc"},
|
||||
{file = "pydantic_core-2.27.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:26f32e0adf166a84d0cb63be85c562ca8a6fa8de28e5f0d92250c6b7e9e2aff7"},
|
||||
{file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c19d1ea0673cd13cc2f872f6c9ab42acc4e4f492a7ca9d3795ce2b112dd7e15"},
|
||||
@ -296,66 +256,71 @@ files = [
|
||||
{file = "pydantic_core-2.27.2-cp313-cp313-win32.whl", hash = "sha256:1ebaf1d0481914d004a573394f4be3a7616334be70261007e47c2a6fe7e50130"},
|
||||
{file = "pydantic_core-2.27.2-cp313-cp313-win_amd64.whl", hash = "sha256:953101387ecf2f5652883208769a79e48db18c6df442568a0b5ccd8c2723abee"},
|
||||
{file = "pydantic_core-2.27.2-cp313-cp313-win_arm64.whl", hash = "sha256:ac4dbfd1691affb8f48c2c13241a2e3b60ff23247cbcf981759c768b6633cf8b"},
|
||||
{file = "pydantic_core-2.27.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:2bf14caea37e91198329b828eae1618c068dfb8ef17bb33287a7ad4b61ac314e"},
|
||||
{file = "pydantic_core-2.27.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:b0cb791f5b45307caae8810c2023a184c74605ec3bcbb67d13846c28ff731ff8"},
|
||||
{file = "pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:688d3fd9fcb71f41c4c015c023d12a79d1c4c0732ec9eb35d96e3388a120dcf3"},
|
||||
{file = "pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d591580c34f4d731592f0e9fe40f9cc1b430d297eecc70b962e93c5c668f15f"},
|
||||
{file = "pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:82f986faf4e644ffc189a7f1aafc86e46ef70372bb153e7001e8afccc6e54133"},
|
||||
{file = "pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:bec317a27290e2537f922639cafd54990551725fc844249e64c523301d0822fc"},
|
||||
{file = "pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:0296abcb83a797db256b773f45773da397da75a08f5fcaef41f2044adec05f50"},
|
||||
{file = "pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:0d75070718e369e452075a6017fbf187f788e17ed67a3abd47fa934d001863d9"},
|
||||
{file = "pydantic_core-2.27.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:7e17b560be3c98a8e3aa66ce828bdebb9e9ac6ad5466fba92eb74c4c95cb1151"},
|
||||
{file = "pydantic_core-2.27.2.tar.gz", hash = "sha256:eb026e5a4c1fee05726072337ff51d1efb6f59090b7da90d30ea58625b1ffb39"},
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "ruff"
|
||||
version = "0.8.4"
|
||||
version = "0.9.9"
|
||||
requires_python = ">=3.7"
|
||||
summary = "An extremely fast Python linter and code formatter, written in Rust."
|
||||
files = [
|
||||
{file = "ruff-0.8.4-py3-none-linux_armv6l.whl", hash = "sha256:58072f0c06080276804c6a4e21a9045a706584a958e644353603d36ca1eb8a60"},
|
||||
{file = "ruff-0.8.4-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:ffb60904651c00a1e0b8df594591770018a0f04587f7deeb3838344fe3adabac"},
|
||||
{file = "ruff-0.8.4-py3-none-macosx_11_0_arm64.whl", hash = "sha256:6ddf5d654ac0d44389f6bf05cee4caeefc3132a64b58ea46738111d687352296"},
|
||||
{file = "ruff-0.8.4-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e248b1f0fa2749edd3350a2a342b67b43a2627434c059a063418e3d375cfe643"},
|
||||
{file = "ruff-0.8.4-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bf197b98ed86e417412ee3b6c893f44c8864f816451441483253d5ff22c0e81e"},
|
||||
{file = "ruff-0.8.4-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c41319b85faa3aadd4d30cb1cffdd9ac6b89704ff79f7664b853785b48eccdf3"},
|
||||
{file = "ruff-0.8.4-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:9f8402b7c4f96463f135e936d9ab77b65711fcd5d72e5d67597b543bbb43cf3f"},
|
||||
{file = "ruff-0.8.4-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e4e56b3baa9c23d324ead112a4fdf20db9a3f8f29eeabff1355114dd96014604"},
|
||||
{file = "ruff-0.8.4-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:736272574e97157f7edbbb43b1d046125fce9e7d8d583d5d65d0c9bf2c15addf"},
|
||||
{file = "ruff-0.8.4-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e5fe710ab6061592521f902fca7ebcb9fabd27bc7c57c764298b1c1f15fff720"},
|
||||
{file = "ruff-0.8.4-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:13e9ec6d6b55f6da412d59953d65d66e760d583dd3c1c72bf1f26435b5bfdbae"},
|
||||
{file = "ruff-0.8.4-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:97d9aefef725348ad77d6db98b726cfdb075a40b936c7984088804dfd38268a7"},
|
||||
{file = "ruff-0.8.4-py3-none-musllinux_1_2_i686.whl", hash = "sha256:ab78e33325a6f5374e04c2ab924a3367d69a0da36f8c9cb6b894a62017506111"},
|
||||
{file = "ruff-0.8.4-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:8ef06f66f4a05c3ddbc9121a8b0cecccd92c5bf3dd43b5472ffe40b8ca10f0f8"},
|
||||
{file = "ruff-0.8.4-py3-none-win32.whl", hash = "sha256:552fb6d861320958ca5e15f28b20a3d071aa83b93caee33a87b471f99a6c0835"},
|
||||
{file = "ruff-0.8.4-py3-none-win_amd64.whl", hash = "sha256:f21a1143776f8656d7f364bd264a9d60f01b7f52243fbe90e7670c0dfe0cf65d"},
|
||||
{file = "ruff-0.8.4-py3-none-win_arm64.whl", hash = "sha256:9183dd615d8df50defa8b1d9a074053891ba39025cf5ae88e8bcb52edcc4bf08"},
|
||||
{file = "ruff-0.8.4.tar.gz", hash = "sha256:0d5f89f254836799af1615798caa5f80b7f935d7a670fad66c5007928e57ace8"},
|
||||
{file = "ruff-0.9.9-py3-none-linux_armv6l.whl", hash = "sha256:628abb5ea10345e53dff55b167595a159d3e174d6720bf19761f5e467e68d367"},
|
||||
{file = "ruff-0.9.9-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:b6cd1428e834b35d7493354723543b28cc11dc14d1ce19b685f6e68e07c05ec7"},
|
||||
{file = "ruff-0.9.9-py3-none-macosx_11_0_arm64.whl", hash = "sha256:5ee162652869120ad260670706f3cd36cd3f32b0c651f02b6da142652c54941d"},
|
||||
{file = "ruff-0.9.9-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3aa0f6b75082c9be1ec5a1db78c6d4b02e2375c3068438241dc19c7c306cc61a"},
|
||||
{file = "ruff-0.9.9-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:584cc66e89fb5f80f84b05133dd677a17cdd86901d6479712c96597a3f28e7fe"},
|
||||
{file = "ruff-0.9.9-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:abf3369325761a35aba75cd5c55ba1b5eb17d772f12ab168fbfac54be85cf18c"},
|
||||
{file = "ruff-0.9.9-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:3403a53a32a90ce929aa2f758542aca9234befa133e29f4933dcef28a24317be"},
|
||||
{file = "ruff-0.9.9-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:18454e7fa4e4d72cffe28a37cf6a73cb2594f81ec9f4eca31a0aaa9ccdfb1590"},
|
||||
{file = "ruff-0.9.9-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0fadfe2c88724c9617339f62319ed40dcdadadf2888d5afb88bf3adee7b35bfb"},
|
||||
{file = "ruff-0.9.9-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6df104d08c442a1aabcfd254279b8cc1e2cbf41a605aa3e26610ba1ec4acf0b0"},
|
||||
{file = "ruff-0.9.9-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:d7c62939daf5b2a15af48abbd23bea1efdd38c312d6e7c4cedf5a24e03207e17"},
|
||||
{file = "ruff-0.9.9-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:9494ba82a37a4b81b6a798076e4a3251c13243fc37967e998efe4cce58c8a8d1"},
|
||||
{file = "ruff-0.9.9-py3-none-musllinux_1_2_i686.whl", hash = "sha256:4efd7a96ed6d36ef011ae798bf794c5501a514be369296c672dab7921087fa57"},
|
||||
{file = "ruff-0.9.9-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:ab90a7944c5a1296f3ecb08d1cbf8c2da34c7e68114b1271a431a3ad30cb660e"},
|
||||
{file = "ruff-0.9.9-py3-none-win32.whl", hash = "sha256:6b4c376d929c25ecd6d87e182a230fa4377b8e5125a4ff52d506ee8c087153c1"},
|
||||
{file = "ruff-0.9.9-py3-none-win_amd64.whl", hash = "sha256:837982ea24091d4c1700ddb2f63b7070e5baec508e43b01de013dc7eff974ff1"},
|
||||
{file = "ruff-0.9.9-py3-none-win_arm64.whl", hash = "sha256:3ac78f127517209fe6d96ab00f3ba97cafe38718b23b1db3e96d8b2d39e37ddf"},
|
||||
{file = "ruff-0.9.9.tar.gz", hash = "sha256:0062ed13f22173e85f8f7056f9a24016e692efeea8704d1a5e8011b8aa850933"},
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "sniffio"
|
||||
version = "1.3.0"
|
||||
version = "1.3.1"
|
||||
requires_python = ">=3.7"
|
||||
summary = "Sniff out which async library your code is running under"
|
||||
files = [
|
||||
{file = "sniffio-1.3.0-py3-none-any.whl", hash = "sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384"},
|
||||
{file = "sniffio-1.3.0.tar.gz", hash = "sha256:e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101"},
|
||||
{file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"},
|
||||
{file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"},
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "starlette"
|
||||
version = "0.41.3"
|
||||
requires_python = ">=3.8"
|
||||
version = "0.46.0"
|
||||
requires_python = ">=3.9"
|
||||
summary = "The little ASGI library that shines."
|
||||
dependencies = [
|
||||
"anyio<5,>=3.4.0",
|
||||
"anyio<5,>=3.6.2",
|
||||
"typing-extensions>=3.10.0; python_version < \"3.10\"",
|
||||
]
|
||||
files = [
|
||||
{file = "starlette-0.41.3-py3-none-any.whl", hash = "sha256:44cedb2b7c77a9de33a8b74b2b90e9f50d11fcf25d8270ea525ad71a25374ff7"},
|
||||
{file = "starlette-0.41.3.tar.gz", hash = "sha256:0e4ab3d16522a255be6b28260b938eae2482f98ce5cc934cb08dce8dc3ba5835"},
|
||||
{file = "starlette-0.46.0-py3-none-any.whl", hash = "sha256:913f0798bd90ba90a9156383bcf1350a17d6259451d0d8ee27fc0cf2db609038"},
|
||||
{file = "starlette-0.46.0.tar.gz", hash = "sha256:b359e4567456b28d473d0193f34c0de0ed49710d75ef183a74a5ce0499324f50"},
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "torappu-excel"
|
||||
version = "0.1.1"
|
||||
requires_python = ">=3.11"
|
||||
summary = "Torappu Client Excel Model Library"
|
||||
dependencies = [
|
||||
"msgspec>=0.19.0",
|
||||
"typing-extensions>=4.12.2",
|
||||
]
|
||||
files = [
|
||||
{file = "torappu_excel-0.1.1-py3-none-any.whl", hash = "sha256:42f017c2ebfe50c8b659ab379679287321dacd0ecd69fad98ecb0f90231fd7f2"},
|
||||
{file = "torappu_excel-0.1.1.tar.gz", hash = "sha256:abc0ce55f0bd46862281773523f8f5111e40180d0ad9b7f5c1c48cfda7d23475"},
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -7,17 +7,19 @@ authors = [
|
||||
]
|
||||
dependencies = [
|
||||
"msgspec>=0.19.0",
|
||||
"pydantic>=2.10.4",
|
||||
"fastapi>=0.115.6",
|
||||
"cryptography>=44.0.0",
|
||||
"pydantic>=2.10.6",
|
||||
"fastapi>=0.115.11",
|
||||
"cryptography>=44.0.2",
|
||||
"torappu-excel>=0.1.1"
|
||||
]
|
||||
requires-python = ">=3.10,<4.0"
|
||||
requires-python = ">=3.11,<4.0"
|
||||
readme = "README.md"
|
||||
license = {text = "GPL-3.0-or-later"}
|
||||
gscore_auto_update_dep = ["torappu-excel>=0.1.1"]
|
||||
|
||||
[tool.pdm.dev-dependencies]
|
||||
dev = [
|
||||
"ruff>=0.8.4",
|
||||
"ruff>=0.9.9",
|
||||
]
|
||||
|
||||
[build-system]
|
||||
@ -25,8 +27,8 @@ requires = ["pdm-backend"]
|
||||
build-backend = "pdm.backend"
|
||||
|
||||
[tool.ruff]
|
||||
line-length = 98
|
||||
target-version = "py38"
|
||||
line-length = 120
|
||||
target-version = "py311"
|
||||
|
||||
[tool.ruff.lint]
|
||||
select = [
|
||||
|
Loading…
x
Reference in New Issue
Block a user