diff --git a/ArknightsUID/arknightsuid_ann/__init__.py b/ArknightsUID/arknightsuid_ann/__init__.py index 4fabe1f..fe7cb50 100644 --- a/ArknightsUID/arknightsuid_ann/__init__.py +++ b/ArknightsUID/arknightsuid_ann/__init__.py @@ -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("请在群聊中取消订阅") diff --git a/ArknightsUID/arknightsuid_ann/draw_img.py b/ArknightsUID/arknightsuid_ann/draw_img.py index 9b4c8bd..4992988 100644 --- a/ArknightsUID/arknightsuid_ann/draw_img.py +++ b/ArknightsUID/arknightsuid_ann/draw_img.py @@ -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 diff --git a/ArknightsUID/arknightsuid_ann/get_data.py b/ArknightsUID/arknightsuid_ann/get_data.py index 50faf60..389f950 100644 --- a/ArknightsUID/arknightsuid_ann/get_data.py +++ b/ArknightsUID/arknightsuid_ann/get_data.py @@ -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: diff --git a/ArknightsUID/arknightsuid_ap/draw_ap_card.py b/ArknightsUID/arknightsuid_ap/draw_ap_card.py index 6bc8860..b0c4ce1 100644 --- a/ArknightsUID/arknightsuid_ap/draw_ap_card.py +++ b/ArknightsUID/arknightsuid_ap/draw_ap_card.py @@ -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( diff --git a/ArknightsUID/arknightsuid_ap/notice.py b/ArknightsUID/arknightsuid_ap/notice.py index d323d29..3db8427 100644 --- a/ArknightsUID/arknightsuid_ap/notice.py +++ b/ArknightsUID/arknightsuid_ap/notice.py @@ -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: diff --git a/ArknightsUID/arknightsuid_charsnapshot/get_char_snapshot.py b/ArknightsUID/arknightsuid_charsnapshot/get_char_snapshot.py index 80ff68a..ed404e6 100644 --- a/ArknightsUID/arknightsuid_charsnapshot/get_char_snapshot.py +++ b/ArknightsUID/arknightsuid_charsnapshot/get_char_snapshot.py @@ -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) diff --git a/ArknightsUID/arknightsuid_config/config_default.py b/ArknightsUID/arknightsuid_config/config_default.py index 53cee63..5109fa3 100644 --- a/ArknightsUID/arknightsuid_config/config_default.py +++ b/ArknightsUID/arknightsuid_config/config_default.py @@ -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), } diff --git a/ArknightsUID/arknightsuid_config/set_config.py b/ArknightsUID/arknightsuid_config/set_config.py index 9a99167..03d7028 100644 --- a/ArknightsUID/arknightsuid_config/set_config.py +++ b/ArknightsUID/arknightsuid_config/set_config.py @@ -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: diff --git a/ArknightsUID/arknightsuid_gacha/draw_gacha_image.py b/ArknightsUID/arknightsuid_gacha/draw_gacha_image.py index fd94a8f..c97456f 100644 --- a/ArknightsUID/arknightsuid_gacha/draw_gacha_image.py +++ b/ArknightsUID/arknightsuid_gacha/draw_gacha_image.py @@ -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), diff --git a/ArknightsUID/arknightsuid_gacha/gacha.py b/ArknightsUID/arknightsuid_gacha/gacha.py index 045ed11..785c7de 100644 --- a/ArknightsUID/arknightsuid_gacha/gacha.py +++ b/ArknightsUID/arknightsuid_gacha/gacha.py @@ -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 diff --git a/ArknightsUID/arknightsuid_gacha/service/gachaLogic.py b/ArknightsUID/arknightsuid_gacha/service/gachaLogic.py index 82a3000..700b3b8 100644 --- a/ArknightsUID/arknightsuid_gacha/service/gachaLogic.py +++ b/ArknightsUID/arknightsuid_gacha/service/gachaLogic.py @@ -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) diff --git a/ArknightsUID/arknightsuid_gacha/service/gachaTrigger.py b/ArknightsUID/arknightsuid_gacha/service/gachaTrigger.py index 27e00b2..d329ad0 100644 --- a/ArknightsUID/arknightsuid_gacha/service/gachaTrigger.py +++ b/ArknightsUID/arknightsuid_gacha/service/gachaTrigger.py @@ -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] diff --git a/ArknightsUID/arknightsuid_gacha/service/models.py b/ArknightsUID/arknightsuid_gacha/service/models.py index 65d347f..569773f 100644 --- a/ArknightsUID/arknightsuid_gacha/service/models.py +++ b/ArknightsUID/arknightsuid_gacha/service/models.py @@ -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): diff --git a/ArknightsUID/arknightsuid_gacha/service/poolGenerator.py b/ArknightsUID/arknightsuid_gacha/service/poolGenerator.py index 232010e..8308d5f 100644 --- a/ArknightsUID/arknightsuid_gacha/service/poolGenerator.py +++ b/ArknightsUID/arknightsuid_gacha/service/poolGenerator.py @@ -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)) diff --git a/ArknightsUID/arknightsuid_help/get_help.py b/ArknightsUID/arknightsuid_help/get_help.py index 24f8fd4..62f72db 100644 --- a/ArknightsUID/arknightsuid_help/get_help.py +++ b/ArknightsUID/arknightsuid_help/get_help.py @@ -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 diff --git a/ArknightsUID/arknightsuid_login/login.py b/ArknightsUID/arknightsuid_login/login.py index c828ea0..7cc9070 100644 --- a/ArknightsUID/arknightsuid_login/login.py +++ b/ArknightsUID/arknightsuid_login/login.py @@ -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( diff --git a/ArknightsUID/arknightsuid_login/model.py b/ArknightsUID/arknightsuid_login/model.py index 2c977c7..0afe467 100644 --- a/ArknightsUID/arknightsuid_login/model.py +++ b/ArknightsUID/arknightsuid_login/model.py @@ -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): diff --git a/ArknightsUID/arknightsuid_resource/constants.py b/ArknightsUID/arknightsuid_resource/constants.py index 0cc99ea..3c9f811 100644 --- a/ArknightsUID/arknightsuid_resource/constants.py +++ b/ArknightsUID/arknightsuid_resource/constants.py @@ -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() diff --git a/ArknightsUID/arknightsuid_roleinfo/draw_roleinfo_card.py b/ArknightsUID/arknightsuid_roleinfo/draw_roleinfo_card.py index c9822e6..d38c2b0 100644 --- a/ArknightsUID/arknightsuid_roleinfo/draw_roleinfo_card.py +++ b/ArknightsUID/arknightsuid_roleinfo/draw_roleinfo_card.py @@ -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) # 放基础信息 diff --git a/ArknightsUID/arknightsuid_server_update_check/__init__.py b/ArknightsUID/arknightsuid_server_update_check/__init__.py index 8fcd9cb..ac2b16e 100644 --- a/ArknightsUID/arknightsuid_server_update_check/__init__.py +++ b/ArknightsUID/arknightsuid_server_update_check/__init__.py @@ -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}订阅版本更新") diff --git a/ArknightsUID/arknightsuid_signin/__init__.py b/ArknightsUID/arknightsuid_signin/__init__.py index e16ca90..6f26802 100644 --- a/ArknightsUID/arknightsuid_signin/__init__.py +++ b/ArknightsUID/arknightsuid_signin/__init__.py @@ -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) diff --git a/ArknightsUID/arknightsuid_signin/sign.py b/ArknightsUID/arknightsuid_signin/sign.py index e2b45f2..ebd6854 100644 --- a/ArknightsUID/arknightsuid_signin/sign.py +++ b/ArknightsUID/arknightsuid_signin/sign.py @@ -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 diff --git a/ArknightsUID/arknightsuid_user/__init__.py b/ArknightsUID/arknightsuid_user/__init__.py index e54b773..532dc58 100644 --- a/ArknightsUID/arknightsuid_user/__init__.py +++ b/ArknightsUID/arknightsuid_user/__init__.py @@ -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}") diff --git a/ArknightsUID/arknightsuid_user/deal_skd_cred.py b/ArknightsUID/arknightsuid_user/deal_skd_cred.py index fbbd850..27f4900 100644 --- a/ArknightsUID/arknightsuid_user/deal_skd_cred.py +++ b/ArknightsUID/arknightsuid_user/deal_skd_cred.py @@ -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" diff --git a/ArknightsUID/arknightsuid_wiki/__init__.py b/ArknightsUID/arknightsuid_wiki/__init__.py index d5c2ff8..91b969d 100644 --- a/ArknightsUID/arknightsuid_wiki/__init__.py +++ b/ArknightsUID/arknightsuid_wiki/__init__.py @@ -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 diff --git a/ArknightsUID/arknightsuid_wiki/draw_wiki_img.py b/ArknightsUID/arknightsuid_wiki/draw_wiki_img.py index 4526f1e..8543793 100644 --- a/ArknightsUID/arknightsuid_wiki/draw_wiki_img.py +++ b/ArknightsUID/arknightsuid_wiki/draw_wiki_img.py @@ -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 diff --git a/ArknightsUID/utils/api/skd/request.py b/ArknightsUID/utils/api/skd/request.py index 7f55f44..870aa05 100644 --- a/ArknightsUID/utils/api/skd/request.py +++ b/ArknightsUID/utils/api/skd/request.py @@ -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: diff --git a/ArknightsUID/utils/database/models.py b/ArknightsUID/utils/database/models.py index 36d2b5a..cd320e2 100644 --- a/ArknightsUID/utils/database/models.py +++ b/ArknightsUID/utils/database/models.py @@ -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 diff --git a/ArknightsUID/utils/error_reply.py b/ArknightsUID/utils/error_reply.py index 99dfbcf..0ff3a08 100644 --- a/ArknightsUID/utils/error_reply.py +++ b/ArknightsUID/utils/error_reply.py @@ -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: diff --git a/ArknightsUID/utils/file.py b/ArknightsUID/utils/file.py index 3f962d3..22c52e3 100644 --- a/ArknightsUID/utils/file.py +++ b/ArknightsUID/utils/file.py @@ -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. """ diff --git a/ArknightsUID/utils/image/image_tools.py b/ArknightsUID/utils/image/image_tools.py index d40ed2d..f7509cf 100644 --- a/ArknightsUID/utils/image/image_tools.py +++ b/ArknightsUID/utils/image/image_tools.py @@ -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) diff --git a/ArknightsUID/utils/message.py b/ArknightsUID/utils/message.py index 1bac5c0..a02db3d 100644 --- a/ArknightsUID/utils/message.py +++ b/ArknightsUID/utils/message.py @@ -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成功!", diff --git a/ArknightsUID/utils/models/common.py b/ArknightsUID/utils/models/common.py deleted file mode 100644 index 84f4829..0000000 --- a/ArknightsUID/utils/models/common.py +++ /dev/null @@ -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) diff --git a/ArknightsUID/utils/models/gamedata/ActivityTable.py b/ArknightsUID/utils/models/gamedata/ActivityTable.py deleted file mode 100644 index ff95d0d..0000000 --- a/ArknightsUID/utils/models/gamedata/ActivityTable.py +++ /dev/null @@ -1,2632 +0,0 @@ -from enum import Enum -from typing import Any, Dict, List, Union - -from msgspec import field - -from ..common import BaseStruct - - -class ActivityTableBasicData(BaseStruct): - id_: str = field(name="id") - type_: str = field(name="type") - name: str - startTime: int - endTime: int - rewardEndTime: int - displayOnHome: bool - hasStage: bool - templateShopId: Union[str, None] - medalGroupId: Union[str, None] - isReplicate: bool - needFixedSync: bool - displayType: Union[str, None] = None - ungroupedMedalIds: Union[List[str], None] = None - - -class ActivityTableHomeActivityConfig(BaseStruct): - actId: str - isPopupAfterCheckin: bool - showTopBarMenu: bool - actTopBarColor: Union[str, None] - actTopBarText: Union[str, None] - - -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 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 DefaultZoneData(BaseStruct): - zoneId: str - zoneIndex: str - zoneName: str - zoneDesc: str - itemDropList: List[str] - - -class ItemBundle(BaseStruct): - id_: str = field(name="id") - count: int - type_: str = field(name="type") - - -class DefaultShopData(BaseStruct): - goodId: str - slotId: int - price: int - availCount: int - overrideName: str - item: ItemBundle - - -class DefaultFirstData(BaseStruct): - zoneList: List[DefaultZoneData] - shopList: Union[List[DefaultShopData], None] - - -class DefaultCheckInDataCheckInDailyInfo(BaseStruct): - itemList: List[ItemBundle] - order: int - color: int - keyItem: int - showItemOrder: int - isDynItem: bool - - -class DefaultCheckInDataDynCheckInDailyInfo(BaseStruct): - questionDesc: str - preOption: str - optionList: List[str] - showDay: int - spOrderIconId: str - spOrderDesc: str - spOrderCompleteDesc: str - - -class DefaultCheckInDataOptionInfo(BaseStruct): - optionDesc: Union[str, None] - showImageId1: Union[str, None] - showImageId2: Union[str, None] - optionCompleteDesc: Union[str, None] - isStart: bool - - -class DefaultCheckInDataDynamicCheckInConsts(BaseStruct): - firstQuestionDesc: str - firstQuestionTipsDesc: str - expirationDesc: str - firstQuestionConfirmDesc: str - - -class DefaultCheckInDataDynamicCheckInData(BaseStruct): - dynCheckInDict: Dict[str, DefaultCheckInDataDynCheckInDailyInfo] - dynOptionDict: Dict[str, DefaultCheckInDataOptionInfo] - dynItemDict: Dict[str, List[ItemBundle]] - constData: DefaultCheckInDataDynamicCheckInConsts - initOption: str - - -class DefaultCheckInDataExtraCheckinDailyInfo(BaseStruct): - order: int - blessing: str - absolutData: int - adTip: str - relativeData: int - itemList: List[ItemBundle] - - -class DefaultCheckInData(BaseStruct): - checkInList: Dict[str, DefaultCheckInDataCheckInDailyInfo] - apSupplyOutOfDateDict: Dict[str, int] - extraCheckinList: Union[ - List[DefaultCheckInDataExtraCheckinDailyInfo], - None, - ] - dynCheckInData: Union[DefaultCheckInDataDynamicCheckInData, None] = None - - -class AllPlayerCheckinDataDailyInfo(BaseStruct): - itemList: List[ItemBundle] - order: int - keyItem: bool - showItemOrder: int - - -class AllPlayerCheckinDataPublicBehaviour(BaseStruct): - sortId: int - allBehaviorId: str - displayOrder: int - allBehaviorDesc: str - requiringValue: int - requireRepeatCompletion: bool - rewardReceivedDesc: str - rewards: List[ItemBundle] - - -class AllPlayerCheckinDataPersonalBehaviour(BaseStruct): - sortId: int - personalBehaviorId: str - displayOrder: int - requireRepeatCompletion: bool - desc: str - - -class AllPlayerCheckinDataConstData(BaseStruct): - characterName: str - skinName: str - - -class AllPlayerCheckinData(BaseStruct): - checkInList: Dict[str, AllPlayerCheckinDataDailyInfo] - apSupplyOutOfDateDict: Dict[str, int] - pubBhvs: Dict[str, AllPlayerCheckinDataPublicBehaviour] - personalBhvs: Dict[str, AllPlayerCheckinDataPersonalBehaviour] - constData: AllPlayerCheckinDataConstData - - -class VersusCheckInDataDailyInfo(BaseStruct): - rewardList: List[ItemBundle] - order: int - - -class VersusCheckInDataVoteData(BaseStruct): - plSweetNum: int - plSaltyNum: int - plTaste: int - - -class VersusCheckInDataTasteInfoData(BaseStruct): - plTaste: int - tasteType: str - tasteText: str - - -class VersusCheckInDataTasteRewardData(BaseStruct): - tasteType: str - rewardItem: ItemBundle - - -class VersusCheckInData(BaseStruct): - checkInDict: Dict[str, VersusCheckInDataDailyInfo] - voteTasteList: List[VersusCheckInDataVoteData] - tasteInfoDict: Dict[str, VersusCheckInDataTasteInfoData] - tasteRewardDict: Dict[str, VersusCheckInDataTasteRewardData] - apSupplyOutOfDateDict: Dict[str, int] - versusTotalDays: int - ruleText: str - - -class Act3D0DataCampBasicInfo(BaseStruct): - campId: str - campName: str - campDesc: str - rewardDesc: Union[str, None] - - -class Act3D0DataLimitedPoolDetailInfoPoolItemInfo(BaseStruct): - goodId: str - itemInfo: Union[ItemBundle, None] - goodType: str - perCount: int - totalCount: int - weight: int - type_: str = field(name="type") - orderId: int - - -class Act3D0DataLimitedPoolDetailInfo(BaseStruct): - poolId: str - poolItemInfo: List[Act3D0DataLimitedPoolDetailInfoPoolItemInfo] - - -class Act3D0DataInfinitePoolDetailInfoPoolItemInfo(BaseStruct): - goodId: str - itemInfo: ItemBundle - goodType: str - perCount: int - weight: int - type_: str = field(name="type") - orderId: int - - -class Act3D0DataInfinitePoolDetailInfo(BaseStruct): - poolId: str - poolItemInfo: List[Act3D0DataInfinitePoolDetailInfoPoolItemInfo] - - -class Act3D0DataInfinitePoolPercent(BaseStruct): - percentDict: Dict[str, int] - - -class Act3D0DataCampItemMapInfo(BaseStruct): - goodId: str - itemDict: Dict[str, ItemBundle] - - -class Act3D0DataClueInfo(BaseStruct): - itemId: str - campId: str - orderId: int - imageId: str - - -class Act3D0DataMileStoneInfo(BaseStruct): - mileStoneId: str - orderId: int - mileStoneType: int - normalItem: Union[ItemBundle, None] - specialItemDict: Dict[str, ItemBundle] - tokenNum: int - - -class Act3D0DataGachaBoxInfo(BaseStruct): - gachaBoxId: str - boxType: str - keyGoodId: Union[str, None] - tokenId: ItemBundle - tokenNumOnce: int - unlockImg: Union[str, None] - nextGachaBoxInfoId: Union[str, None] - - -class Act3D0DataCampInfo(BaseStruct): - campId: str - campChineseName: str - - -class Act3D0DataZoneDescInfo(BaseStruct): - zoneId: str - lockedText: Union[str, None] - - -class CommonFavorUpInfo(BaseStruct): - charId: str - displayStartTime: int - displayEndTime: int - - -class Act3D0Data(BaseStruct): - campBasicInfo: Dict[str, Act3D0DataCampBasicInfo] - limitedPoolList: Dict[str, Act3D0DataLimitedPoolDetailInfo] - infinitePoolList: Dict[str, Act3D0DataInfinitePoolDetailInfo] - infinitePercent: Union[Dict[str, Act3D0DataInfinitePoolPercent], None] - campItemMapInfo: Dict[str, Act3D0DataCampItemMapInfo] - clueInfo: Dict[str, Act3D0DataClueInfo] - mileStoneInfo: List[Act3D0DataMileStoneInfo] - mileStoneTokenId: str - coinTokenId: str - etTokenId: str - gachaBoxInfo: List[Act3D0DataGachaBoxInfo] - campInfo: Union[Dict[str, Act3D0DataCampInfo], None] - zoneDesc: Dict[str, Act3D0DataZoneDescInfo] - favorUpList: Union[Dict[str, CommonFavorUpInfo], None] - - -class Act4D0DataMileStoneItemInfo(BaseStruct): - mileStoneId: str - orderId: int - tokenNum: int - item: ItemBundle - - -class Act4D0DataMileStoneStoryInfo(BaseStruct): - mileStoneId: str - orderId: int - tokenNum: int - storyKey: str - desc: str - - -class Act4D0DataStoryInfo(BaseStruct): - storyKey: str - storyId: str - storySort: str - storyName: str - lockDesc: str - storyDesc: str - - -class Act4D0DataStageJumpInfo(BaseStruct): - stageKey: str - zoneId: str - stageId: str - unlockDesc: str - lockDesc: str - - -class Act4D0Data(BaseStruct): - mileStoneItemList: List[Act4D0DataMileStoneItemInfo] - mileStoneStoryList: List[Act4D0DataMileStoneStoryInfo] - storyInfoList: List[Act4D0DataStoryInfo] - stageInfo: List[Act4D0DataStageJumpInfo] - tokenItem: ItemBundle - charStoneId: str - apSupplyOutOfDateDict: Dict[str, int] - extraDropZones: List[str] - - -class MileStoneInfo(BaseStruct): - mileStoneId: str - orderId: int - tokenNum: int - mileStoneType: int - normalItem: ItemBundle - IsBonus: int - - -class Act5D0DataZoneDescInfo(BaseStruct): - zoneId: str - lockedText: Union[str, None] - - -class Act5D0DataMissionExtraInfo(BaseStruct): - difficultLevel: int - levelDesc: str - sortId: int - - -class Act5D0Data(BaseStruct): - mileStoneInfo: List[MileStoneInfo] - mileStoneTokenId: str - zoneDesc: Dict[str, Act5D0DataZoneDescInfo] - missionExtraList: Dict[str, Act5D0DataMissionExtraInfo] - spReward: str - - -class Act5D1DataRuneStageData(BaseStruct): - stageId: str - levelId: str - code: str - name: str - loadingPicId: str - description: str - picId: str - - -class Act5D1DataRuneRecurrentStateData(BaseStruct): - runeReId: str - stageId: str - slotId: int - startTime: int - endTime: int - runeList: List[str] - isAvail: bool - warningPoint: int - - -class Act5D1DataRuneUnlockData(BaseStruct): - runeId: str - priceItem: ItemBundle - runeName: str - bgPic: str - runeDesc: str - sortId: int - iconId: str - - -class Act5D1DataRuneReleaseData(BaseStruct): - runeId: str - stageId: str - releaseTime: int - - -class Act5D1DataShopGood(BaseStruct): - goodId: str - slotId: int - price: int - availCount: int - item: ItemBundle - progressGoodId: str - goodType: str - - -class Act5D1DataProgessGoodItem(BaseStruct): - order: int - price: int - displayName: str - item: ItemBundle - - -class Act5D1DataShopData(BaseStruct): - shopGoods: Dict[str, Act5D1DataShopGood] - progressGoods: Dict[str, List[Act5D1DataProgessGoodItem]] - - -class RuneDataSelector(BaseStruct): - professionMask: Union[int, str] - buildableMask: int - charIdFilter: Union[List[str], None] - enemyIdFilter: Union[List[str], None] - enemyLevelTypeFilter: 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] - 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: Union[str, None] - runes: List[RuneData] - - -class RuneTableRuneStageExtraData(BaseStruct): - stageId: str - runes: List[RuneTablePackedRuneData] - - -class Act5D1Data(BaseStruct): - stageCommonData: List[Act5D1DataRuneStageData] - runeStageData: List[Act5D1DataRuneRecurrentStateData] - runeUnlockDict: Dict[str, List[Act5D1DataRuneUnlockData]] - runeReleaseData: List[Act5D1DataRuneReleaseData] - missionData: List[MissionData] - missionGroup: List[MissionGroup] - useBenefitMissionDict: Dict[str, bool] - shopData: Act5D1DataShopData - coinItemId: str - ptItemId: str - stageRune: List[RuneTableRuneStageExtraData] - showRuneMissionList: List[str] - - -class ActivityCollectionDataCollectionInfo(BaseStruct): - id_: int = field(name="id") - itemType: str - itemId: str - itemCnt: int - pointId: str - pointCnt: int - isBonus: bool - pngName: Union[str, None] - pngSort: int - isShow: bool - showInList: bool - showIconBG: bool - - -class ActivityCollectionData(BaseStruct): - collections: List[ActivityCollectionDataCollectionInfo] - apSupplyOutOfDateDict: Dict[str, int] - - -class Act9D0DataZoneDescInfo(BaseStruct): - zoneId: str - unlockText: str - displayStartTime: int - - -class Act9D0DataFavorUpInfo(BaseStruct): - charId: str - displayStartTime: int - displayEndTime: int - - -class Act9D0DataSubMissionInfo(BaseStruct): - missionId: str - missionTitle: str - sortId: int - missionIndex: str - - -class Act9D0DataActivityNewsStyleInfo(BaseStruct): - typeId: str - typeName: str - typeLogo: str - typeMainLogo: str - - -class Act9D0DataActivityNewsLine(BaseStruct): - lineType: int - content: str - - -class Act9D0DataActivityNewsInfo(BaseStruct): - newsId: str - newsSortId: int - styleInfo: Act9D0DataActivityNewsStyleInfo - preposedStage: Union[str, None] - titlePic: str - newsTitle: str - newsInfShow: int - newsFrom: str - newsText: str - newsParam1: int - newsParam2: int - newsParam3: float - newsLines: List[Act9D0DataActivityNewsLine] - - -class Act9D0DataActivityNewsServerInfo(BaseStruct): - newsId: str - preposedStage: str - - -class Act9D0Data(BaseStruct): - tokenItemId: str - zoneDescList: Dict[str, Act9D0DataZoneDescInfo] - favorUpList: Dict[str, Act9D0DataFavorUpInfo] - subMissionInfo: Union[Dict[str, Act9D0DataSubMissionInfo], None] - hasSubMission: bool - apSupplyOutOfDateDict: Dict[str, int] - newsInfoList: Union[Dict[str, Act9D0DataActivityNewsInfo], None] - newsServerInfoList: Union[ - Dict[str, Act9D0DataActivityNewsServerInfo], - None, - ] - miscHub: Dict[str, str] - - -class Act12SideDataConstData(BaseStruct): - recycleRewardThreshold: int - charmRepoUnlockStageId: str - recycleLowThreshold: int - recycleMediumThreshold: int - recycleHighThreshold: int - autoGetCharmId: str - fogStageId: str - fogUnlockStageId: str - fogUnlockTs: int - fogUnlockDesc: str - - -class Act12SideDataZoneAdditionData(BaseStruct): - zoneId: str - unlockText: str - zoneClass: str - - -class Act12SideDataMissionDescInfo(BaseStruct): - zoneClass: str - specialMissionDesc: str - needLock: bool - unlockHint: Union[str, None] - unlockStage: Union[str, None] - - -class Act12SideDataMileStoneInfo(BaseStruct): - mileStoneId: str - orderId: int - tokenNum: int - item: ItemBundle - isPrecious: bool - mileStoneStage: int - - -class Act12SideDataPhotoInfo(BaseStruct): - picId: str - picName: str - mileStoneId: str - picDesc: str - jumpStageId: Union[str, None] - - -class Act12SideDataRecycleDialogData(BaseStruct): - dialogType: str - dialog: str - dialogExpress: str - - -class Act12SideData(BaseStruct): - constData: Act12SideDataConstData - zoneAdditionDataList: List[Act12SideDataZoneAdditionData] - missionDescList: Dict[str, Act12SideDataMissionDescInfo] - mileStoneInfoList: List[Act12SideDataMileStoneInfo] - photoList: Dict[str, Act12SideDataPhotoInfo] - recycleDialogDict: Dict[str, List[Act12SideDataRecycleDialogData]] - - -class Act13SideDataConstData(BaseStruct): - prestigeDescList: List[str] - dailyRandomCount: Union[List[List[int]], None] - dailyWeightInitial: int - dailyWeightComplete: int - agendaRecover: int - agendaMax: int - agendaHint: int - missionPoolMax: int - missionBoardMax: int - itemRandomList: List[ItemBundle] - unlockPrestigeCond: str - hotSpotShowFlag: int - - -class Act13SideDataPrestigeData(BaseStruct): - rank: str - threshold: int - reward: Union[ItemBundle, None] - newsCount: int - archiveCount: int - avgCount: int - - -class Act13SideDataLongTermMissionGroupData(BaseStruct): - groupId: str - groupName: str - orgId: str - missionList: List[str] - - -class Act13SideDataOrgSectionData(BaseStruct): - sectionName: str - sortId: int - groupData: Act13SideDataLongTermMissionGroupData - - -class Act13SideDataOrgData(BaseStruct): - orgId: str - orgName: str - orgEnName: str - openTime: int - principalIdList: List[str] - prestigeList: List[Act13SideDataPrestigeData] - agendaCount2PrestigeItemMap: Dict[str, ItemBundle] - orgSectionList: List[Act13SideDataOrgSectionData] - prestigeItem: ItemBundle - - -class Act13SideDataPrincipalData(BaseStruct): - principalId: str - principalName: str - principalEnName: str - avgCharId: str - principalDescList: List[str] - - -class Act13SideDataLongTermMissionData(BaseStruct): - missionName: str - groupId: str - principalId: str - finishedDesc: str - sectionSortId: int - haveStageBtn: bool - jumpStageId: Union[str, None] - - -class Act13SideDataDailyMissionData(BaseStruct): - id_: str = field(name="id") - sortId: int - description: str - missionName: str - template: str - templateType: str - param: List[str] - rewards: Union[List[MissionDisplayRewards], None] - orgPool: Union[List[str], None] - rewardPool: Union[List[str], None] - jumpStageId: str - agendaCount: int - - -class Act13SideDataDailyMissionRewardGroupData(BaseStruct): - groupId: str - rewards: List[ItemBundle] - - -class Act13SideDataArchiveItemUnlockData(BaseStruct): - itemId: str - itemType: str - unlockCondition: str - param1: Union[str, None] - param2: Union[str, None] - - -class ActivityTableActHiddenAreaPreposeStageData(BaseStruct): - stageId: str - unlockRank: int - - -class ActivityTableActivityHiddenAreaData(BaseStruct): - name: str - desc: str - preposedStage: List[ActivityTableActHiddenAreaPreposeStageData] - preposedTime: int - - -class Act13SideDataZoneAdditionData(BaseStruct): - unlockText: str - zoneClass: str - - -class Act13SideData(BaseStruct): - constData: Act13SideDataConstData - orgDataMap: Dict[str, Act13SideDataOrgData] - principalDataMap: Dict[str, Act13SideDataPrincipalData] - longTermMissionDataMap: Dict[str, Act13SideDataLongTermMissionData] - dailyMissionDataList: List[Act13SideDataDailyMissionData] - dailyRewardGroupDataMap: Dict[ - str, - Act13SideDataDailyMissionRewardGroupData, - ] - archiveItemUnlockData: Dict[str, Act13SideDataArchiveItemUnlockData] - hiddenAreaData: Dict[str, ActivityTableActivityHiddenAreaData] - zoneAddtionDataMap: Dict[str, Act13SideDataZoneAdditionData] - - -class Act17sideDataPlaceData(BaseStruct): - placeId: str - placeDesc: str - lockEventId: Union[str, None] - zoneId: str - visibleCondType: Union[str, None] = None - visibleParams: Union[List[str], None] = None - - -class Act17sideDataNodeInfoData(BaseStruct): - nodeId: str - nodeType: str - sortId: int - placeId: str - isPointPlace: bool - chapterId: str - trackPointType: str - unlockCondType: Union[str, None] = None - unlockParams: Union[List[str], None] = None - - -class Act17sideDataLandmarkNodeData(BaseStruct): - nodeId: str - landmarkId: str - landmarkName: str - landmarkPic: Union[str, None] - landmarkSpecialPic: str - landmarkDesList: List[str] - - -class Act17sideDataStoryNodeData(BaseStruct): - nodeId: str - storyId: str - storyKey: str - storyName: str - storyPic: Union[str, None] - confirmDes: str - storyDesList: List[str] - - -class Act17sideDataBattleNodeData(BaseStruct): - nodeId: str - stageId: str - - -class Act17sideDataTreasureNodeData(BaseStruct): - nodeId: str - treasureId: str - treasureName: str - treasurePic: Union[str, None] - treasureSpecialPic: Union[str, None] - endEventId: str - confirmDes: str - treasureDesList: List[str] - missionIdList: List[str] - rewardList: List[ItemBundle] - treasureType: str - - -class Act17sideDataEventNodeData(BaseStruct): - nodeId: str - eventId: str - endEventId: str - - -class Act17sideDataTechNodeData(BaseStruct): - nodeId: str - techTreeId: str - techTreeName: str - techPic: Union[str, None] - techSpecialPic: str - endEventId: str - confirmDes: str - techDesList: List[str] - missionIdList: List[str] - - -class Act17sideDataChoiceNodeOptionData(BaseStruct): - canRepeat: bool - eventId: str - des: str - unlockDes: Union[str, None] - unlockCondType: Union[str, None] = None - unlockParams: Union[str, None] = None - - -class Act17sideDataChoiceNodeData(BaseStruct): - nodeId: str - choicePic: Union[str, None] - isDisposable: bool - choiceSpecialPic: Union[str, None] - choiceName: str - choiceDesList: List[str] - cancelDes: str - choiceNum: int - optionList: List[Act17sideDataChoiceNodeOptionData] - - -class Act17sideDataEventData(BaseStruct): - eventId: str - eventPic: Union[str, None] - eventSpecialPic: Union[str, None] - eventTitle: str - eventDesList: List[str] - - -class Act17sideDataArchiveItemUnlockData(BaseStruct): - itemId: str - itemType: str - unlockCondition: str - nodeId: Union[str, None] - stageParam: str - chapterId: Union[str, None] - - -class Act17sideDataTechTreeData(BaseStruct): - techTreeId: str - sortId: int - techTreeName: str - defaultBranchId: str - lockDes: str - - -class Act17sideDataTechTreeBranchData(BaseStruct): - techTreeBranchId: str - techTreeId: str - techTreeBranchName: str - techTreeBranchIcon: str - techTreeBranchDesc: str - runeData: RuneTablePackedRuneData - - -class Act17sideDataMainlineChapterData(BaseStruct): - chapterId: str - chapterDes: str - chapterIcon: str - unlockDes: str - id_: str = field(name="id") - - -class Act17sideDataMainlineData(BaseStruct): - mainlineId: str - nodeId: Union[str, None] - sortId: int - missionSort: str - zoneId: str - mainlineDes: str - focusNodeId: Union[str, None] - - -class Act17sideDataZoneData(BaseStruct): - zoneId: str - unlockPlaceId: Union[str, None] - unlockText: str - - -class Act17sideDataConstData(BaseStruct): - techTreeUnlockEventId: str - - -class Act17sideData(BaseStruct): - placeDataMap: Dict[str, Act17sideDataPlaceData] - nodeInfoDataMap: Dict[str, Act17sideDataNodeInfoData] - landmarkNodeDataMap: Dict[str, Act17sideDataLandmarkNodeData] - storyNodeDataMap: Dict[str, Act17sideDataStoryNodeData] - battleNodeDataMap: Dict[str, Act17sideDataBattleNodeData] - treasureNodeDataMap: Dict[str, Act17sideDataTreasureNodeData] - eventNodeDataMap: Dict[str, Act17sideDataEventNodeData] - techNodeDataMap: Dict[str, Act17sideDataTechNodeData] - choiceNodeDataMap: Dict[str, Act17sideDataChoiceNodeData] - eventDataMap: Dict[str, Act17sideDataEventData] - archiveItemUnlockDataMap: Dict[str, Act17sideDataArchiveItemUnlockData] - techTreeDataMap: Dict[str, Act17sideDataTechTreeData] - techTreeBranchDataMap: Dict[str, Act17sideDataTechTreeBranchData] - mainlineChapterDataMap: Dict[str, Act17sideDataMainlineChapterData] - mainlineDataMap: Dict[str, Act17sideDataMainlineData] - zoneDataList: List[Act17sideDataZoneData] - constData: Act17sideDataConstData - - -class Act20SideDataResidentCartData(BaseStruct): - residentPic: str - - -class Act20SideData(BaseStruct): - zoneAdditionDataMap: Dict[str, str] - residentCartDatas: Dict[str, Act20SideDataResidentCartData] - - -class Act21SideDataZoneAddtionData(BaseStruct): - zoneId: str - unlockText: str - stageUnlockText: Union[str, None] - entryId: str - - -class Act21SideDataConstData(BaseStruct): - lineConnectZone: str - - -class Act21SideData(BaseStruct): - zoneAdditionDataMap: Dict[str, Act21SideDataZoneAddtionData] - constData: Act21SideDataConstData - - -class ActivityLoginData(BaseStruct): - description: str - itemList: List[ItemBundle] - apSupplyOutOfDateDict: Dict[str, int] - - -class ActivitySwitchCheckinConstData(BaseStruct): - activityTime: str - activityRule: str - - -class ActivitySwitchCheckinData(BaseStruct): - constData: ActivitySwitchCheckinConstData - rewards: Dict[str, List[ItemBundle]] - apSupplyOutOfDateDict: Dict[str, int] - rewardsTitle: Dict[str, str] - - -class ActivityMiniStoryDataZoneDescInfo(BaseStruct): - zoneId: str - unlockText: str - - -class ActivityMiniStoryDataFavorUpInfo(BaseStruct): - charId: str - displayStartTime: int - displayEndTime: int - - -class ActivityMiniStoryData(BaseStruct): - tokenItemId: str - zoneDescList: Dict[str, ActivityMiniStoryDataZoneDescInfo] - favorUpList: Dict[str, ActivityMiniStoryDataFavorUpInfo] - extraDropZoneList: List[str] - - -class ActivityRoguelikeDataOuterBuffUnlockInfo(BaseStruct): - buffLevel: int - name: str - iconId: str - description: str - usage: str - itemId: str - itemType: str - cost: int - - -class ActivityRoguelikeDataOuterBuffUnlockInfoData(BaseStruct): - buffId: str - buffUnlockInfos: Dict[str, ActivityRoguelikeDataOuterBuffUnlockInfo] - - -class ActivityRoguelikeDataMileStoneItemInfo(BaseStruct): - mileStoneId: str - orderId: int - tokenNum: int - item: ItemBundle - - -class ActivityTableCustomUnlockCond(BaseStruct): - actId: Union[str, None] - stageId: str - - -class ActivityRoguelikeData(BaseStruct): - outBuffInfos: Dict[str, ActivityRoguelikeDataOuterBuffUnlockInfoData] - apSupplyOutOfDateDict: Dict[str, int] - outerBuffToken: str - shopToken: str - relicUnlockTime: int - milestoneTokenRatio: float - outerBuffTokenRatio: float - relicTokenRatio: float - relicOuterBuffTokenRatio: float - reOpenCoolDown: int - tokenItem: ItemBundle - charStoneId: str - milestone: List[ActivityRoguelikeDataMileStoneItemInfo] - unlockConds: List[ActivityTableCustomUnlockCond] - - -class ActivityMultiplayDataStageData(BaseStruct): - stageId: str - levelId: str - groupId: str - difficulty: str - loadingPicId: str - dangerLevel: str - unlockConds: List[str] - - -class ActivityMultiplayDataStageGroupData(BaseStruct): - groupId: str - sortId: int - code: str - name: str - description: str - - -class ActivityMultiplayDataMissionExtraData(BaseStruct): - missionId: str - isHard: bool - - -class ActivityMultiplayDataRoomMessageData(BaseStruct): - sortId: int - picId: str - - -class ActivityMultiplayDataConstData(BaseStruct): - linkActId: str - maxRetryTimeInTeamRoom: int - maxRetryTimeInMatchRoom: int - maxRetryTimeInBattle: int - maxOperatorDelay: float - maxPlaySpeed: float - delayTimeNeedTip: float - blockTimeNeedTip: float - hideTeamNameFlag: bool - settleRetryTime: float - - -class ActivityMultiplayData(BaseStruct): - stages: Dict[str, ActivityMultiplayDataStageData] - stageGroups: Dict[str, ActivityMultiplayDataStageGroupData] - missionExtras: Dict[str, ActivityMultiplayDataMissionExtraData] - roomMessages: List[ActivityMultiplayDataRoomMessageData] - constData: ActivityMultiplayDataConstData - unlockConds: List[ActivityTableCustomUnlockCond] - - -class ActivityInterlockDataStageAdditionData(BaseStruct): - stageId: str - stageType: str - lockStageKey: Union[str, None] - lockSortIndex: int - - -class ActivityInterlockDataTreasureMonsterData(BaseStruct): - lockStageKey: str - enemyId: str - enemyName: str - enemyIcon: str - enemyDescription: str - - -class SharedCharDataCharEquipInfo(BaseStruct): - hide: int - locked: Union[bool, int] - level: int - - -class SharedCharDataSharedCharSkillData(BaseStruct): - skillId: str - specializeLevel: int - completeUpgradeTime: Union[int, None] = None - unlock: Union[bool, Union[int, None]] = None - state: Union[int, None] = None - - -class SharedCharDataTmplData(BaseStruct): - skinId: str - defaultSkillIndex: int - skills: List[SharedCharDataSharedCharSkillData] - currentEquip: Union[str, None] - equip: Union[Dict[str, SharedCharDataSharedCharSkillData], None] = None - - -class SharedCharData(BaseStruct): - charId: str - potentialRank: int - mainSkillLvl: int - evolvePhase: int - level: int - favorPoint: int - currentEquip: Union[str, None] = field(name="currentEquip", default=None) - equips: Union[Dict[str, SharedCharDataCharEquipInfo], None] = field( - name="equip", - default={}, - ) - skillIndex: Union[int, None] = None - skinId: Union[str, None] = None - skin: Union[str, None] = None - skills: Union[List[SharedCharDataSharedCharSkillData], None] = None - crisisRecord: Union[Dict[str, int], None] = None - crisisV2Record: Union[Dict[str, int], None] = None - currentTmpl: Union[str, None] = None - tmpl: Union[Dict[str, SharedCharDataTmplData], None] = None - - -class ActivityInterlockDataMileStoneItemInfo(BaseStruct): - mileStoneId: str - orderId: int - tokenNum: int - item: ItemBundle - - -class ActivityInterlockDataFinalStageProgressData(BaseStruct): - stageId: str - killCnt: int - apCost: int - favor: int - exp: int - gold: int - - -class ActivityInterlockData(BaseStruct): - stageAdditionInfoMap: Dict[str, ActivityInterlockDataStageAdditionData] - treasureMonsterMap: Dict[str, ActivityInterlockDataTreasureMonsterData] - specialAssistData: SharedCharData - mileStoneItemList: List[ActivityInterlockDataMileStoneItemInfo] - finalStageProgressMap: Dict[ - str, - List[ActivityInterlockDataFinalStageProgressData], - ] - - -class ActivityBossRushDataZoneAdditionData(BaseStruct): - unlockText: str - displayStartTime: int - - -class ActivityBossRushDataBossRushStageGroupData(BaseStruct): - stageGroupId: str - sortId: int - stageGroupName: str - stageIdMap: Dict[str, str] - waveBossInfo: List[List[str]] - normalStageCount: int - isHardStageGroup: bool - unlockCondtion: Union[str, None] - - -class ActivityBossRushDataBossRushStageAdditionData(BaseStruct): - stageId: str - stageType: str - stageGroupId: str - teamIdList: List[str] - unlockText: Union[str, None] - - -class ActivityBossRushDataDisplayDetailRewards(BaseStruct): - occPercent: int - dropCount: int - type_: str = field(name="type") - id_: str = field(name="id") - dropType: int - - -class ActivityBossRushDataBossRushDropInfo(BaseStruct): - clearWaveCount: int - displayDetailRewards: List[ActivityBossRushDataDisplayDetailRewards] - firstPassRewards: List[ItemBundle] - passRewards: List[ItemBundle] - - -class ActivityBossRushDataBossRushMissionAdditionData(BaseStruct): - missionId: str - isRelicTask: bool - - -class ActivityBossRushDataBossRushTeamData(BaseStruct): - teamId: str - teamName: str - charIdList: List[str] - teamBuffName: Union[str, None] - teamBuffDes: Union[str, None] - teamBuffId: Union[str, None] - maxCharNum: int - runeData: Union[RuneTablePackedRuneData, None] - - -class ActivityBossRushDataRelicData(BaseStruct): - relicId: str - sortId: int - name: str - icon: str - relicTaskId: str - - -class ActivityBossRushDataRelicLevelInfo(BaseStruct): - level: int - effectDesc: str - runeData: RuneTablePackedRuneData - needItemCount: int - - -class ActivityBossRushDataRelicLevelInfoData(BaseStruct): - relicId: str - levelInfos: Dict[str, ActivityBossRushDataRelicLevelInfo] - - -class ActivityBossRushDataBossRushMileStoneData(BaseStruct): - mileStoneId: str - mileStoneLvl: int - needPointCnt: int - rewardItem: ItemBundle - - -class ActivityBossRushDataConstData(BaseStruct): - maxProvidedCharNum: int - textMilestoneItemLevelDesc: str - milestonePointId: str - relicUpgradeItemId: str - defaultRelictList: List[str] - rewardSkinId: str - - -class ActivityBossRushData(BaseStruct): - zoneAdditionDataMap: Dict[str, ActivityBossRushDataZoneAdditionData] - stageGroupMap: Dict[str, ActivityBossRushDataBossRushStageGroupData] - stageAdditionDataMap: Dict[ - str, - ActivityBossRushDataBossRushStageAdditionData, - ] - stageDropDataMap: Dict[ - str, - Dict[str, ActivityBossRushDataBossRushDropInfo], - ] - missionAdditionDataMap: Dict[ - str, - ActivityBossRushDataBossRushMissionAdditionData, - ] - teamDataMap: Dict[str, ActivityBossRushDataBossRushTeamData] - relicList: List[ActivityBossRushDataRelicData] - relicLevelInfoDataMap: Dict[str, ActivityBossRushDataRelicLevelInfoData] - mileStoneList: List[ActivityBossRushDataBossRushMileStoneData] - bestWaveRuneList: List[RuneTablePackedRuneData] - constData: ActivityBossRushDataConstData - - -class ActivityFloatParadeDataConstData(BaseStruct): - cityName: str - cityNamePic: str - lowStandard: float - variationTitle: str - ruleDesc: str - - -class ActivityFloatParadeDataDailyData(BaseStruct): - dayIndex: int - dateName: str - placeName: str - placeEnName: str - placePic: str - eventGroupId: str - extReward: Union[ItemBundle, None] - - -class ActivityFloatParadeDataRewardPool(BaseStruct): - grpId: str - id_: str = field(name="id") - type_: str = field(name="type") - name: str - desc: Union[str, None] - reward: ItemBundle - - -class ActivityFloatParadeDataTactic(BaseStruct): - id_: int = field(name="id") - name: str - packName: str - briefName: str - rewardVar: Dict[str, float] - - -class ActivityFloatParadeDataGroupData(BaseStruct): - groupId: str - name: str - startDay: int - endDay: int - extRewardDay: int - extRewardCount: int - - -class ActivityFloatParadeData(BaseStruct): - constData: ActivityFloatParadeDataConstData - dailyDataDic: List[ActivityFloatParadeDataDailyData] - rewardPools: Dict[str, Dict[str, ActivityFloatParadeDataRewardPool]] - tacticList: List[ActivityFloatParadeDataTactic] - groupInfos: Dict[str, ActivityFloatParadeDataGroupData] - - -class ActSandboxDataMilestoneData(BaseStruct): - milestoneId: str - orderId: int - tokenId: str - tokenNum: int - item: ItemBundle - isPrecious: bool - - -class ActSandboxData(BaseStruct): - milestoneDataList: List[ActSandboxDataMilestoneData] - milestoneTokenId: str - - -class ActivityMainlineBuffDataMissionGroupData(BaseStruct): - id_: str = field(name="id") - bindBanner: str - sortId: int - zoneId: str - missionIdList: List[str] - - -class ActivityMainlineBuffDataPeriodDataStepData(BaseStruct): - isBlock: bool - favorUpDesc: Union[str, None] - unlockDesc: Union[str, None] - bindStageId: Union[str, None] - blockDesc: Union[str, None] - - -class ActivityMainlineBuffDataPeriodData(BaseStruct): - id_: str = field(name="id") - startTime: int - endTime: int - favorUpCharDesc: str - favorUpImgName: str - newChapterImgName: str - newChapterZoneId: Union[str, None] - stepDataList: List[ActivityMainlineBuffDataPeriodDataStepData] - - -class ActivityMainlineBuffDataConstData(BaseStruct): - favorUpStageRange: str - - -class ActivityMainlineBuffData(BaseStruct): - missionGroupList: Dict[str, ActivityMainlineBuffDataMissionGroupData] - periodDataList: List[ActivityMainlineBuffDataPeriodData] - apSupplyOutOfDateDict: Dict[str, int] - constData: ActivityMainlineBuffDataConstData - - -class Act24SideDataToolData(BaseStruct): - toolId: str - sortId: int - toolName: str - toolDesc: str - toolIcon1: str - toolIcon2: str - toolUnlockDesc: str - toolBuffId: str - runeData: RuneTablePackedRuneData - - -class Act24SideDataMealData(BaseStruct): - mealId: str - sortId: int - mealName: str - mealEffectDesc: str - mealDesc: str - mealIcon: str - mealCost: int - mealRewardAP: int - mealRewardItemInfo: ItemBundle - - -class Act24SideDataMeldingItemData(BaseStruct): - meldingId: str - sortId: int - meldingPrice: int - rarity: int - - -class Act24SideDataMeldingGachaBoxData(BaseStruct): - gachaBoxId: str - gachaSortId: int - gachaIcon: str - gachaBoxName: str - gachaCost: int - gachaTimesLimit: int - themeColor: str - remainItemBgColor: str - - -class Act24SideDataMeldingGachaBoxGoodData(BaseStruct): - goodId: str - gachaBoxId: str - orderId: int - itemId: str - itemType: str - displayType: str - perCount: int - totalCount: int - gachaType: str - - -class Act24SideDataZoneAdditionData(BaseStruct): - zoneId: str - zoneIcon: str - unlockText: str - displayTime: str - - -class QuestStageData(BaseStruct): - stageId: str - stageRank: int - sortId: int - isUrgentStage: bool - isDragonStage: bool - - -class Act24SideDataMissionExtraData(BaseStruct): - taskTypeName: str - taskTypeIcon: str - taskType: str - taskTitle: str - taskClient: str - taskClientDesc: str - - -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 StageDataStageDropInfo(BaseStruct): - firstPassRewards: Union[List[ItemBundle], None] - firstCompleteRewards: Union[List[ItemBundle], None] - passRewards: Union[List[List[WeightItemBundle]], None] - completeRewards: Union[List[List[WeightItemBundle]], None] - displayRewards: List[StageDataDisplayRewards] - displayDetailRewards: List[StageDataDisplayDetailRewards] - - -class Act24SideDataConstData(BaseStruct): - stageUnlockToolDesc: str - mealLackMoney: str - mealDayTimesLimit: int - toolMaximum: int - stageCanNotUseToTool: List[str] - gachaExtraProb: Union[float, int] - - -class Act24SideData(BaseStruct): - toolDataList: Dict[str, Act24SideDataToolData] - mealDataList: Dict[str, Act24SideDataMealData] - meldingDict: Dict[str, Act24SideDataMeldingItemData] - meldingGachaBoxDataList: Dict[str, Act24SideDataMeldingGachaBoxData] - meldingGachaBoxGoodDataMap: Dict[ - str, - List[Act24SideDataMeldingGachaBoxGoodData], - ] - mealWelcomeTxtDataMap: Dict[str, str] - zoneAdditionDataMap: Dict[str, Act24SideDataZoneAdditionData] - questStageList: List[QuestStageData] - missionDataList: Dict[str, Act24SideDataMissionExtraData] - meldingDropDict: Dict[str, StageDataStageDropInfo] - stageMapPreviewDict: Dict[str, List[str]] - constData: Act24SideDataConstData - - -class Act25SideDataConstData(BaseStruct): - getDailyCount: int - costName: str - costDesc: str - costLimit: int - rewardLimit: int - researchUnlockText: str - harvestReward: ItemBundle - costCount: int - costCountLimit: int - basicProgress: int - harvestDesc: str - - -class Act25SideDataZoneDescInfo(BaseStruct): - zoneId: str - unlockText: str - displayStartTime: int - - -class Act25SideDataArchiveItemData(BaseStruct): - itemId: str - itemType: int - itemUnlockType: int - itemUnlockParam: str - unlockDesc: Union[str, None] - iconId: Union[str, None] - itemName: str - - -class Act25SideDataArchiveMapInfoData(BaseStruct): - objectId: str - type_: int = field(name="type") - numberId: str - areaId: str - sortId: int - position: int - hasDot: bool - - -class Act25SideDataAreaInfoData(BaseStruct): - areaId: str - sortId: int - areaIcon: str - areaName: str - unlockText: str - preposedStage: str - areaInitialDesc: str - areaEndingDesc: str - areaEndingAud: str - reward: ItemBundle - finalId: str - - -class Act25SideDataAreaMissionData(BaseStruct): - id_: str = field(name="id") - areaId: str - preposedMissionId: Union[str, None] - sortId: int - isZone: bool - stageId: str - costCount: int - transform: int - progress: int - progressPicId: str - template: Union[str, None] - templateType: int - desc: str - param: Union[List[str], None] - rewards: List[ItemBundle] - archiveItems: List[str] - - -class Act25SideDataBattlePerformanceData(BaseStruct): - itemId: str - sortId: int - itemName: str - itemIcon: str - itemDesc: str - itemTechType: str - runeData: RuneTablePackedRuneData - - -class Act25SideDataKeyData(BaseStruct): - keyId: str - keyName: str - keyIcon: str - toastText: str - - -class Act25SideDataFogUnlockData(BaseStruct): - lockId: str - lockedCollectionIconId: str - unlockedCollectionIconId: str - - -class Act25SideDataDailyFarmData(BaseStruct): - transform: int - unitTime: int - - -class Act25SideData(BaseStruct): - tokenItemId: str - constData: Act25SideDataConstData - zoneDescList: Dict[str, Act25SideDataZoneDescInfo] - archiveItemData: Dict[str, Act25SideDataArchiveItemData] - arcMapInfoData: Dict[str, Act25SideDataArchiveMapInfoData] - areaInfoData: Dict[str, Act25SideDataAreaInfoData] - areaMissionData: Dict[str, Act25SideDataAreaMissionData] - battlePerformanceData: Dict[str, Act25SideDataBattlePerformanceData] - keyData: Dict[str, Act25SideDataKeyData] - fogUnlockData: Dict[str, Act25SideDataFogUnlockData] - farmList: List[Act25SideDataDailyFarmData] - - -class Act38D1DataAct38D1NodeData(BaseStruct): - slotId: str - groupId: Union[str, None] - isUpper: bool - adjacentSlotList: List[str] - - -class Act38D1DataAct38D1RoadData(BaseStruct): - roadId: str - startSlotId: str - endSlotId: str - - -class Act38D1DataAct38D1RewardBoxData(BaseStruct): - rewardBoxId: str - roadId: str - - -class Act38D1DataAct38D1ExclusionGroupData(BaseStruct): - groupId: str - slotIdList: List[str] - - -class Act38D1DataAct38D1DimensionItemData(BaseStruct): - desc: str - maxScore: int - - -class Act38D1DataAct38D1CommentData(BaseStruct): - id_: str = field(name="id") - sortId: int - desc: str - - -class Act38D1DataAct38D1StageDetailData(BaseStruct): - nodeDataMap: Dict[str, Act38D1DataAct38D1NodeData] - roadDataMap: Dict[str, Act38D1DataAct38D1RoadData] - rewardBoxDataMap: Dict[str, Act38D1DataAct38D1RewardBoxData] - exclusionGroupDataMap: Dict[str, Act38D1DataAct38D1ExclusionGroupData] - dimensionItemList: List[Act38D1DataAct38D1DimensionItemData] - commentDataMap: Dict[str, Act38D1DataAct38D1CommentData] - - -class Act38D1DataAct38D1ConstData(BaseStruct): - redScoreThreshold: int - detailBkgRedThreshold: int - voiceGrade: int - stageInfoTitle: str - missionListReceiveRewardText: str - missionListChangeMapText: str - missionListCompleteTagText: str - mapStartBattleText: str - mapJumpDailyMapText: str - mapRewardReceivedText: str - - -class Act38D1Data(BaseStruct): - scoreLevelToAppraiseDataMap: Dict[str, str] - detailDataMap: Dict[str, Act38D1DataAct38D1StageDetailData] - constData: Act38D1DataAct38D1ConstData - trackPointPeriodData: List[int] - - -class Act27SideDataAct27SideGoodData(BaseStruct): - id_: str = field(name="id") - name: str - typeDesc: str - iconId: str - launchIconId: str - purchasePrice: List[int] - sellingPriceList: List[int] - sellShopList: List[str] - isPermanent: bool - - -class Act27SideDataAct27SideMileStoneData(BaseStruct): - mileStoneId: str - mileStoneLvl: int - needPointCnt: int - rewardItem: ItemBundle - - -class Act27SideDataAct27SideGoodLaunchData(BaseStruct): - groupId: str - startTime: int - stageId: Union[str, None] - code: Union[str, None] - drinkId: str - foodId: str - souvenirId: str - - -class Act27SideDataAct27SideShopData(BaseStruct): - shopId: str - sortId: int - name: str - iconId: str - - -class Act27SideDataAct27SideInquireData(BaseStruct): - mileStonePt: int - inquireCount: int - - -class Act27SideDataAct27SideDynEntrySwitchData(BaseStruct): - entryId: str - startHour: int - signalId: str - - -class Act27SideDataAct27sideZoneAdditionData(BaseStruct): - zoneId: str - unlockText: str - displayTime: str - - -class Act27SideDataAct27SideMileStoneFurniRewardData(BaseStruct): - furniId: str - pointNum: int - - -class Act27SideDataAct27SideConstData(BaseStruct): - stageId: str - stageCode: str - purchasePriceName: List[str] - furniRewardList: List[Act27SideDataAct27SideMileStoneFurniRewardData] - prizeText: str - playerShopId: str - milestonePointName: str - inquirePanelTitle: str - inquirePanelDesc: str - gain123: List[float] - gain113: List[float] - gain122: List[float] - gain111: List[float] - gain11None: List[float] - gain12None: List[float] - campaignEnemyCnt: int - - -class Act27SideData(BaseStruct): - goodDataMap: Dict[str, Act27SideDataAct27SideGoodData] - mileStoneList: List[Act27SideDataAct27SideMileStoneData] - goodLaunchDataList: List[Act27SideDataAct27SideGoodLaunchData] - shopDataMap: Dict[str, Act27SideDataAct27SideShopData] - inquireDataList: List[Act27SideDataAct27SideInquireData] - dynEntrySwitchData: List[Act27SideDataAct27SideDynEntrySwitchData] - zoneAdditionDataMap: Dict[str, Act27SideDataAct27sideZoneAdditionData] - constData: Act27SideDataAct27SideConstData - - -class Act42D0DataAreaInfoData(BaseStruct): - areaId: str - sortId: int - areaCode: str - areaName: str - difficulty: str - areaDesc: str - costLimit: int - bossIcon: str - bossId: Union[str, None] - nextAreaStage: Union[str, None] - - -class Act42D0DataStageInfoData(BaseStruct): - stageId: str - areaId: str - stageCode: str - sortId: int - stageDesc: List[str] - levelId: str - code: str - name: str - loadingPicId: str - - -class Act42D0DataEffectGroupInfoData(BaseStruct): - effectGroupId: str - sortId: int - effectGroupName: str - - -class Act42D0DataEffectInfoRuneData(BaseStruct): - id_: str = field(name="id") - points: int - mutexGroupKey: Union[str, None] - description: str - runes: List[RuneData] - - -class Act42D0DataEffectInfoData(BaseStruct): - effectId: str - effectGroupId: str - row: int - col: int - effectName: str - effectIcon: str - cost: int - effectDesc: str - unlockTime: int - runeData: Act42D0DataEffectInfoRuneData - - -class ChallengeMissionData(BaseStruct): - missionId: str - sortId: int - stageId: str - missionDesc: str - milestoneCount: int - - -class Act42D0DataChallengeInfoData(BaseStruct): - stageId: str - stageDesc: str - startTs: int - endTs: int - levelId: str - code: str - name: str - loadingPicId: str - challengeMissionData: List[ChallengeMissionData] - - -class StageRatingInfoMilestoneData(BaseStruct): - ratingLevel: int - costUpLimit: int - achivement: str - icon: str - milestoneCount: int - - -class Act42D0DataStageRatingInfo(BaseStruct): - stageId: str - areaId: str - milestoneData: List[StageRatingInfoMilestoneData] - - -class Act42D0DataMilestoneData(BaseStruct): - milestoneId: str - orderId: int - tokenNum: int - item: ItemBundle - - -class Act42D0DataConstData(BaseStruct): - milestoneId: str - strifeName: str - strifeDesc: str - unlockDesc: str - rewardDesc: str - traumaDesc: str - milestoneAreaName: str - traumaName: str - - -class Act42D0Data(BaseStruct): - areaInfoData: Dict[str, Act42D0DataAreaInfoData] - stageInfoData: Dict[str, Act42D0DataStageInfoData] - effectGroupInfoData: Dict[str, Act42D0DataEffectGroupInfoData] - effectInfoData: Dict[str, Act42D0DataEffectInfoData] - challengeInfoData: Dict[str, Act42D0DataChallengeInfoData] - stageRatingInfoData: Dict[str, Act42D0DataStageRatingInfo] - milestoneData: List[Act42D0DataMilestoneData] - constData: Act42D0DataConstData - trackPointPeriodData: List[int] - - -class Act29SideFragData(BaseStruct): - fragId: str - sortId: int - fragName: str - fragIcon: str - fragStoreIcon: str - - -class Act29SideOrcheType(Enum): - ORCHE_1 = "ORCHE_1" - ORCHE_2 = "ORCHE_2" - ORCHE_3 = "ORCHE_3" - ENUM = "ENUM" - - -class Act29SideOrcheData(BaseStruct): - id_: str = field(name="id") - name: str - desc: str - icon: str - sortId: int - orcheType: Act29SideOrcheType - - -class Act29SideProductType(Enum): - PRODUCT_TYPE_1 = "PRODUCT_TYPE_1" - PRODUCT_TYPE_2 = "PRODUCT_TYPE_2" - PRODUCT_TYPE_3 = "PRODUCT_TYPE_3" - PRODUCT_TYPE_4 = "PRODUCT_TYPE_4" - PRODUCT_TYPE_5 = "PRODUCT_TYPE_5" - ENUM = "ENUM" - - -class Act29SideProductGroupData(BaseStruct): - groupId: str - groupName: str - groupIcon: str - groupDesc: str - defaultBgmSignal: str - productList: List[str] - groupEngName: str - groupSmallName: str - groupTypeIcon: str - groupStoreIconId: str - groupTypeBasePic: str - groupTypeEyeIcon: str - groupSortId: int - formList: List[str] - sheetId: str - sheetNum: int - sheetRotateSpd: float - productType: Act29SideProductType - productDescColor: str - playTintColor: str - confirmTintColor: str - confirmDescColor: str - bagThemeColor: str - - -class Act29SideProductData(BaseStruct): - id_: str = field(name="id") - orcheId: Union[str, None] - groupId: str - formId: Union[str, None] - musicId: str - - -class Act29SideFormData(BaseStruct): - formId: str - fragIdList: List[str] - formDesc: str - productIdDict: Dict[str, str] - withoutOrcheProductId: str - groupId: str - formSortId: int - - -class Act29SideInvestResultData(BaseStruct): - resultId: str - resultTitle: str - resultDesc1: str - resultDesc2: str - - -class Act29SideInvestType(Enum): - MAJOR = "MAJOR" - RARE = "RARE" - NORMAL = "NORMAL" - - -class Act29SideInvestData(BaseStruct): - investId: str - investType: Act29SideInvestType - investNpcName: str - storyId: str - investNpcPic: str - investNpcAvatarPic: str - majorNpcPic: Union[str, None] - majorNpcBlackPic: Union[str, None] - reward: Union[ItemBundle, None] - investSucResultId: Union[str, None] - investFailResultId: str - investRareResultId: Union[str, None] - - -class Act29SideConstData(BaseStruct): - majorInvestUnlockItemName: str - wrongTipsTriggerTime: int - majorInvestCompleteImgId: str - majorInvestUnknownAvatarId: str - majorInvestDetailDesc1: str - majorInvestDetailDesc2: str - majorInvestDetailDesc3: str - majorInvestDetailDesc4: str - hiddenInvestImgId: str - hiddenInvestHeadImgId: str - hiddenInvestNpcName: str - unlockLevelId: str - investResultHint: str - investUnlockText: str - noOrcheDesc: str - - -class Act29SideZoneAdditionData(BaseStruct): - zoneId: str - unlockText: str - - -class Act29SideMusicData(BaseStruct): - groupId: str - orcheId: Union[str, None] - musicId: str - - -class Act29SideData(BaseStruct): - fragDataMap: Dict[str, Act29SideFragData] - orcheDataMap: Dict[str, Act29SideOrcheData] - productGroupDataMap: Dict[str, Act29SideProductGroupData] - productDataMap: Dict[str, Act29SideProductData] - formDataMap: Dict[str, Act29SideFormData] - investResultDataMap: Dict[str, Act29SideInvestResultData] - investDataMap: Dict[str, Act29SideInvestData] - majorInvestIdList: List[str] - rareInvestIdList: List[str] - constData: Act29SideConstData - zoneAdditionDataMap: Dict[str, Act29SideZoneAdditionData] - musicDataMap: List[Act29SideMusicData] - - -class ActivityTableActivityDetailTable(BaseStruct): - DEFAULT: Dict[str, DefaultFirstData] - CHECKIN_ONLY: Dict[str, DefaultCheckInData] - CHECKIN_ALL_PLAYER: Dict[str, AllPlayerCheckinData] - CHECKIN_VS: Dict[str, VersusCheckInData] - TYPE_ACT3D0: Dict[str, Act3D0Data] - TYPE_ACT4D0: Dict[str, Act4D0Data] - TYPE_ACT5D0: Dict[str, Act5D0Data] - TYPE_ACT5D1: Dict[str, Act5D1Data] - COLLECTION: Dict[str, ActivityCollectionData] - TYPE_ACT9D0: Dict[str, Act9D0Data] - TYPE_ACT12SIDE: Dict[str, Act12SideData] - TYPE_ACT13SIDE: Dict[str, Act13SideData] - TYPE_ACT17SIDE: Dict[str, Act17sideData] - TYPE_ACT20SIDE: Dict[str, Act20SideData] - TYPE_ACT21SIDE: Dict[str, Act21SideData] - TYPE_ACT29SIDE: Dict[str, Act29SideData] - LOGIN_ONLY: Dict[str, ActivityLoginData] - SWITCH_ONLY: Dict[str, ActivitySwitchCheckinData] - MINISTORY: Dict[str, ActivityMiniStoryData] - ROGUELIKE: Dict[str, ActivityRoguelikeData] - MULTIPLAY: Dict[str, ActivityMultiplayData] - INTERLOCK: Dict[str, ActivityInterlockData] - BOSS_RUSH: Dict[str, ActivityBossRushData] - FLOAT_PARADE: Dict[str, ActivityFloatParadeData] - MAIN_BUFF: Dict[str, ActivityMainlineBuffData] - TYPE_ACT24SIDE: Dict[str, Act24SideData] - TYPE_ACT25SIDE: Dict[str, Act25SideData] - TYPE_ACT27SIDE: Dict[str, Act27SideData] - TYPE_ACT42D0: Dict[str, Act42D0Data] - SANDBOX: Union[Dict[str, ActSandboxData], None] = None # Remove in 2.2.01 - TYPE_ACT38D1: Union[Dict[str, Act38D1Data], None] = None # Remove in 2.1.21 - - -class ActivityStageRewardData(BaseStruct): - stageRewardsDict: Dict[str, List[StageDataDisplayDetailRewards]] - - -class ActivityThemeDataTimeNode(BaseStruct): - title: str - ts: int - - -class ActivityThemeData(BaseStruct): - id_: str = field(name="id") - type_: str = field(name="type") - funcId: str - endTs: int - sortId: int - itemId: Union[str, None] - timeNodes: List[ActivityThemeDataTimeNode] - startTs: int - - -class StageDataConditionDesc(BaseStruct): - stageId: str - completeState: int - - -class AprilFoolStageData(BaseStruct): - stageId: str - levelId: str - code: str - name: str - appearanceStyle: int - loadingPicId: str - difficulty: str - unlockCondition: List[StageDataConditionDesc] - stageDropInfo: List[ItemBundle] - - -class AprilFoolScoreData(BaseStruct): - stageId: str - sortId: int - playerName: str - playerScore: int - - -class AprilFoolConst(BaseStruct): - battleFinishLoseDes: str - killEnemyDes: str - killBossDes: str - totalTime: str - - -class Act4funPerformGroupInfo(BaseStruct): - performGroupId: str - performIds: List[str] - - -class Act4funPerformWordData(BaseStruct): - text: str - picId: str - backgroundId: str - - -class Act4funPerformInfo(BaseStruct): - performId: str - performFinishedPicId: Union[str, None] - fixedCmpGroup: Union[str, None] - cmpGroups: List[Union[str, None]] - words: List[Act4funPerformWordData] - - -class Act4funLiveMatEffectInfo(BaseStruct): - liveMatEffectId: str - valueId: str - performGroup: str - - -class Act4funLiveMatInfoData(BaseStruct): - liveMatId: str - stageId: str - name: str - picId: str - tagTxt: str - emojiIcon: str - selectedPerformId: str - effectInfos: Dict[str, Act4funLiveMatEffectInfo] - - -class Act4funSpLiveMatInfoData(BaseStruct): - spLiveMatId: str - spLiveEveId: str - stageId: str - name: str - picId: str - tagTxt: str - emojiIcon: str - accordingPerformId: Union[str, None] - selectedPerformId: Union[str, None] - valueEffectId: str - accordingSuperChatId: Union[str, None] - - -class Act4funValueEffectInfoData(BaseStruct): - valueEffectId: str - effectParams: Dict[str, int] - - -class Act4funLiveValueInfoData(BaseStruct): - liveValueId: str - name: str - stageId: str - iconId: str - highEndingId: str - lowEndingId: str - increaseToastTxt: str - decreaseToastTxt: str - - -class Act4funSuperChatInfo(BaseStruct): - superChatId: str - chatType: int - userName: str - iconId: str - valueEffectId: str - performId: str - superChatTxt: str - - -class Act4funCmtInfo(BaseStruct): - iconId: Union[str, None] - name: Union[str, None] - cmtTxt: str - - -class Act4funCmtGroupInfo(BaseStruct): - cmtGroupId: str - cmtList: List[Act4funCmtInfo] - - -class Act4funEndingInfo(BaseStruct): - endingId: str - endingAvg: str - endingDesc: Union[str, None] - stageId: Union[str, None] - isGoodEnding: bool - - -class Act4funTokenInfoData(BaseStruct): - tokenLevelId: str - levelDesc: Union[str, None] - skillDesc: str - tokenLevelNum: int - levelIconId: str - - -class Act4funMissionData(BaseStruct): - missionId: str - sortId: str - missionDes: str - rewardIconIds: List[str] - rewards: List[ItemBundle] - - -class Act4funConst(BaseStruct): - liveMatAmtLowerLimit: int - liveTurnUpperLimit: int - superChatCountDownNum: int - badEndingPerformEffectTitle: str - performEffectTitle: str - defaultPerformPicId: str - defaultTxtBackground: str - openingPerformGroup: str - forgetPerformGroup: str - runPerformGroup: str - liveMatDefaultUserIcon: str - liveMatAttributeIcon: str - liveMatAttribIconDiffNum: int - liveValueAbsLimit: int - cmtAppearTimeLowerLimit: float - cmtAppearTimeUpperLimit: float - subtitleIntervalTime: float - mainPageEventDes: str - spStageEndingTip: str - noLiveEndingTip: str - notEnoughEndingTip: str - enoughEndingTip: str - mainPagePersonal: str - mainPageJobDes: str - endingPageConfirmTxt: str - runConfirmTxt: str - mainPageDiamondMissionId: str - reconnectConfirmTxt: str - studyStageId: str - goodEndingToastTxt: str - tokenLevelUpToastTxt: str - studyStageToastTxt: str - matNotEnoughToastTxt: str - formalLevelUnlockToastTxt: str - - -class Act4funStageExtraData(BaseStruct): - description: str - valueIconId: Union[str, None] - - -class Act4funData(BaseStruct): - performGroupInfoDict: Dict[str, Act4funPerformGroupInfo] - performInfoDict: Dict[str, Act4funPerformInfo] - normalMatDict: Dict[str, Act4funLiveMatInfoData] - spMatDict: Dict[str, Act4funSpLiveMatInfoData] - valueEffectInfoDict: Dict[str, Act4funValueEffectInfoData] - liveValueInfoDict: Dict[str, Act4funLiveValueInfoData] - superChatInfoDict: Dict[str, Act4funSuperChatInfo] - cmtGroupInfoDict: Dict[str, Act4funCmtGroupInfo] - cmtUsers: List[str] - endingDict: Dict[str, Act4funEndingInfo] - tokenLevelInfos: Dict[str, Act4funTokenInfoData] - missionDatas: Dict[str, Act4funMissionData] - constant: Act4funConst - stageExtraDatas: Dict[str, Act4funStageExtraData] - randomMsgText: List[str] - randomUserIconId: List[str] - - -class AprilFoolTable(BaseStruct): - stages: Dict[str, AprilFoolStageData] - scoreDict: Dict[str, List[AprilFoolScoreData]] - constant: AprilFoolConst - act4FunData: Act4funData - - -class CartComponents(BaseStruct): - compId: str - sortId: int - type_: str = field(name="type") - posList: List[str] - posIdDict: Dict[str, List[str]] - name: str - icon: str - showScores: int - itemUsage: str - itemDesc: str - itemObtain: str - rarity: int - detailDesc: str - price: int - specialObtain: str - obtainInRandom: bool - additiveColor: Union[str, None] - - -class CartDataCartConstData(BaseStruct): - carItemUnlockStageId: str - carItemUnlockDesc: str - spLevelUnlockItemCnt: int - mileStoneBaseInterval: int - spStageIds: List[str] - carFrameDefaultColor: str - - -class CartData(BaseStruct): - carDict: Dict[str, CartComponents] - runeDataDict: Dict[str, RuneTablePackedRuneData] - cartStages: List[str] - constData: CartDataCartConstData - - -class SiracusaDataAreaData(BaseStruct): - areaId: str - areaName: str - areaSubName: str - unlockType: str - unlockStage: Union[str, None] - areaIconId: str - pointList: List[str] - - -class SiracusaDataPointData(BaseStruct): - pointId: str - areaId: str - pointName: str - pointDesc: str - pointIconId: str - pointItaName: str - - -class SiracusaDataCharCardData(BaseStruct): - charCardId: str - sortIndex: int - avgChar: str - avgCharOffsetY: Union[float, int] - charCardName: str - charCardItaName: str - charCardTitle: str - charCardDesc: str - fullCompleteDes: str - gainDesc: str - themeColor: str - taskRingList: List[str] - operaItemId: str - gainParamList: Union[List[str], None] - - -class SiracusaDataTaskRingData(BaseStruct): - taskRingId: str - sortIndex: int - charCardId: str - logicType: str - ringText: str - item: ItemBundle - isPrecious: bool - taskIdList: List[str] - - -class SiracusaDataTaskBasicInfoData(BaseStruct): - taskId: str - taskRingId: str - sortIndex: int - placeId: str - npcId: Union[str, None] - taskType: str - - -class SiracusaDataBattleTaskData(BaseStruct): - taskId: str - stageId: str - battleTaskDesc: str - - -class SiracusaDataAVGTaskData(BaseStruct): - taskId: str - taskAvg: str - - -class SiracusaDataItemInfoData(BaseStruct): - itemId: str - itemName: str - itemItalyName: str - itemDesc: str - itemIcon: str - - -class SiracusaDataItemCardInfoData(BaseStruct): - cardId: str - cardName: str - cardDesc: str - optionScript: str - - -class SiracusaDataNavigationInfoData(BaseStruct): - entryId: str - navigationType: str - entryIcon: str - entryName: Union[str, None] - entrySubName: Union[str, None] - - -class SiracusaDataOptionInfoData(BaseStruct): - optionId: str - optionDesc: str - optionScript: str - optionGoToScript: Union[str, None] - isLeaveOption: bool - needCommentLike: bool - requireCardId: Union[str, None] - - -class SiracusaDataStagePointInfoData(BaseStruct): - stageId: str - pointId: str - sortId: int - isTaskStage: bool - - -class SiracusaDataStoryBriefInfoData(BaseStruct): - storyId: str - stageId: str - storyInfo: str - - -class SiracusaDataOperaInfoData(BaseStruct): - operaId: str - sortId: int - operaName: str - operaSubName: str - operaScore: str - unlockTime: int - - -class SiracusaDataOperaCommentInfoData(BaseStruct): - commentId: str - referenceOperaId: str - columnIndex: int - columnSortId: int - commentTitle: str - score: str - commentContent: str - commentCharId: str - - -class SiracusaDataConstData(BaseStruct): - operaDailyNum: int - operaAllUnlockTime: int - defaultFocusArea: str - - -class SiracusaData(BaseStruct): - areaDataMap: Dict[str, SiracusaDataAreaData] - pointDataMap: Dict[str, SiracusaDataPointData] - charCardMap: Dict[str, SiracusaDataCharCardData] - taskRingMap: Dict[str, SiracusaDataTaskRingData] - taskInfoMap: Dict[str, SiracusaDataTaskBasicInfoData] - battleTaskMap: Dict[str, SiracusaDataBattleTaskData] - avgTaskMap: Dict[str, SiracusaDataAVGTaskData] - itemInfoMap: Dict[str, SiracusaDataItemInfoData] - itemCardInfoMap: Dict[str, SiracusaDataItemCardInfoData] - navigationInfoMap: Dict[str, SiracusaDataNavigationInfoData] - optionInfoMap: Dict[str, SiracusaDataOptionInfoData] - stagePointList: List[SiracusaDataStagePointInfoData] - storyBriefInfoDataMap: Dict[str, SiracusaDataStoryBriefInfoData] - operaInfoMap: Dict[str, SiracusaDataOperaInfoData] - operaCommentInfoMap: Dict[str, SiracusaDataOperaCommentInfoData] - constData: SiracusaDataConstData - - -class KVSwitchInfo(BaseStruct): - isDefault: bool - displayTime: int - zoneId: Union[str, None] - - -class ActivityKVSwitchData(BaseStruct): - kvSwitchInfo: Dict[str, KVSwitchInfo] - - -class DynEntrySwitchInfo(BaseStruct): - entryId: str - sortId: int - stageId: Union[str, None] - - -class ActivityDynEntrySwitchData(BaseStruct): - entrySwitchInfo: Dict[str, DynEntrySwitchInfo] - - -class ActivityTableActivityHiddenStageUnlockConditionData(BaseStruct): - unlockStageId: str - unlockTemplate: str - unlockParams: Union[List[str], None] - missionStageId: str - unlockedName: str - lockedName: str - lockCode: str - unlockedDes: str - templateDesc: str - desc: str - riddle: str - - -class ActivityTableActivityHiddenStageData(BaseStruct): - stageId: str - encodedName: str - showStageId: str - rewardDiamond: bool - missions: List[ActivityTableActivityHiddenStageUnlockConditionData] - - -class ActivityTableExtraData(BaseStruct): - periodId: str - startTs: int - endTs: int - - -class ActivityTable(BaseStruct): - __version__ = "24-02-02-10-18-07-831ad8" - - basicInfo: Dict[str, ActivityTableBasicData] - homeActConfig: Dict[str, ActivityTableHomeActivityConfig] - zoneToActivity: Dict[str, str] - missionData: List[MissionData] - missionGroup: List[MissionGroup] - replicateMissions: Union[Dict[str, str], None] - activity: ActivityTableActivityDetailTable - extraData: Dict[str, Dict[str, Dict[str, List[ActivityTableExtraData]]]] - activityItems: Dict[str, List[str]] - syncPoints: Dict[str, List[int]] - dynActs: Any - stageRewardsData: Dict[str, ActivityStageRewardData] - actThemes: List[ActivityThemeData] - actFunData: AprilFoolTable - carData: CartData - siracusaData: SiracusaData - kvSwitchData: Dict[str, ActivityKVSwitchData] - dynEntrySwitchData: Dict[str, ActivityDynEntrySwitchData] - hiddenStageData: List[ActivityTableActivityHiddenStageData] - stringRes: Dict[str, Dict[str, str]] diff --git a/ArknightsUID/utils/models/gamedata/AudioData.py b/ArknightsUID/utils/models/gamedata/AudioData.py deleted file mode 100644 index 11f7e83..0000000 --- a/ArknightsUID/utils/models/gamedata/AudioData.py +++ /dev/null @@ -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] diff --git a/ArknightsUID/utils/models/gamedata/BattleEquipTable.py b/ArknightsUID/utils/models/gamedata/BattleEquipTable.py deleted file mode 100644 index 1efbabc..0000000 --- a/ArknightsUID/utils/models/gamedata/BattleEquipTable.py +++ /dev/null @@ -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] diff --git a/ArknightsUID/utils/models/gamedata/BuildingData.py b/ArknightsUID/utils/models/gamedata/BuildingData.py deleted file mode 100644 index def60e2..0000000 --- a/ArknightsUID/utils/models/gamedata/BuildingData.py +++ /dev/null @@ -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] diff --git a/ArknightsUID/utils/models/gamedata/CampaignTable.py b/ArknightsUID/utils/models/gamedata/CampaignTable.py deleted file mode 100644 index f7b8da2..0000000 --- a/ArknightsUID/utils/models/gamedata/CampaignTable.py +++ /dev/null @@ -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] diff --git a/ArknightsUID/utils/models/gamedata/ChapterTable.py b/ArknightsUID/utils/models/gamedata/ChapterTable.py deleted file mode 100644 index 0c30d4c..0000000 --- a/ArknightsUID/utils/models/gamedata/ChapterTable.py +++ /dev/null @@ -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] diff --git a/ArknightsUID/utils/models/gamedata/CharMetaTable.py b/ArknightsUID/utils/models/gamedata/CharMetaTable.py deleted file mode 100644 index fe2dca2..0000000 --- a/ArknightsUID/utils/models/gamedata/CharMetaTable.py +++ /dev/null @@ -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] diff --git a/ArknightsUID/utils/models/gamedata/CharPatchTable.py b/ArknightsUID/utils/models/gamedata/CharPatchTable.py deleted file mode 100644 index e23c1ab..0000000 --- a/ArknightsUID/utils/models/gamedata/CharPatchTable.py +++ /dev/null @@ -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] diff --git a/ArknightsUID/utils/models/gamedata/CharacterTable.py b/ArknightsUID/utils/models/gamedata/CharacterTable.py deleted file mode 100644 index 0291188..0000000 --- a/ArknightsUID/utils/models/gamedata/CharacterTable.py +++ /dev/null @@ -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] diff --git a/ArknightsUID/utils/models/gamedata/CharmTable.py b/ArknightsUID/utils/models/gamedata/CharmTable.py deleted file mode 100644 index 8f4fe6f..0000000 --- a/ArknightsUID/utils/models/gamedata/CharmTable.py +++ /dev/null @@ -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] diff --git a/ArknightsUID/utils/models/gamedata/CharwordTable.py b/ArknightsUID/utils/models/gamedata/CharwordTable.py deleted file mode 100644 index fa5515b..0000000 --- a/ArknightsUID/utils/models/gamedata/CharwordTable.py +++ /dev/null @@ -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 diff --git a/ArknightsUID/utils/models/gamedata/CheckinTable.py b/ArknightsUID/utils/models/gamedata/CheckinTable.py deleted file mode 100644 index 571cad8..0000000 --- a/ArknightsUID/utils/models/gamedata/CheckinTable.py +++ /dev/null @@ -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 diff --git a/ArknightsUID/utils/models/gamedata/ClimbTowerTable.py b/ArknightsUID/utils/models/gamedata/ClimbTowerTable.py deleted file mode 100644 index acc4f4b..0000000 --- a/ArknightsUID/utils/models/gamedata/ClimbTowerTable.py +++ /dev/null @@ -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] diff --git a/ArknightsUID/utils/models/gamedata/ClueData.py b/ArknightsUID/utils/models/gamedata/ClueData.py deleted file mode 100644 index f78fad6..0000000 --- a/ArknightsUID/utils/models/gamedata/ClueData.py +++ /dev/null @@ -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 diff --git a/ArknightsUID/utils/models/gamedata/CrisisTable.py b/ArknightsUID/utils/models/gamedata/CrisisTable.py deleted file mode 100644 index c019967..0000000 --- a/ArknightsUID/utils/models/gamedata/CrisisTable.py +++ /dev/null @@ -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 diff --git a/ArknightsUID/utils/models/gamedata/CrisisV2Table.py b/ArknightsUID/utils/models/gamedata/CrisisV2Table.py deleted file mode 100644 index 9f4c678..0000000 --- a/ArknightsUID/utils/models/gamedata/CrisisV2Table.py +++ /dev/null @@ -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 diff --git a/ArknightsUID/utils/models/gamedata/DisplayMetaTable.py b/ArknightsUID/utils/models/gamedata/DisplayMetaTable.py deleted file mode 100644 index 4703606..0000000 --- a/ArknightsUID/utils/models/gamedata/DisplayMetaTable.py +++ /dev/null @@ -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 diff --git a/ArknightsUID/utils/models/gamedata/EnemyHandbookTable.py b/ArknightsUID/utils/models/gamedata/EnemyHandbookTable.py deleted file mode 100644 index 5ec4e2c..0000000 --- a/ArknightsUID/utils/models/gamedata/EnemyHandbookTable.py +++ /dev/null @@ -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] diff --git a/ArknightsUID/utils/models/gamedata/FavorTable.py b/ArknightsUID/utils/models/gamedata/FavorTable.py deleted file mode 100644 index 37478ed..0000000 --- a/ArknightsUID/utils/models/gamedata/FavorTable.py +++ /dev/null @@ -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] diff --git a/ArknightsUID/utils/models/gamedata/GachaTable.py b/ArknightsUID/utils/models/gamedata/GachaTable.py deleted file mode 100644 index 9a1a652..0000000 --- a/ArknightsUID/utils/models/gamedata/GachaTable.py +++ /dev/null @@ -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 diff --git a/ArknightsUID/utils/models/gamedata/GamedataConst.py b/ArknightsUID/utils/models/gamedata/GamedataConst.py deleted file mode 100644 index a548e91..0000000 --- a/ArknightsUID/utils/models/gamedata/GamedataConst.py +++ /dev/null @@ -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 diff --git a/ArknightsUID/utils/models/gamedata/HandbookInfoTable.py b/ArknightsUID/utils/models/gamedata/HandbookInfoTable.py deleted file mode 100644 index 082681c..0000000 --- a/ArknightsUID/utils/models/gamedata/HandbookInfoTable.py +++ /dev/null @@ -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] diff --git a/ArknightsUID/utils/models/gamedata/HandbookTable.py b/ArknightsUID/utils/models/gamedata/HandbookTable.py deleted file mode 100644 index 381ae15..0000000 --- a/ArknightsUID/utils/models/gamedata/HandbookTable.py +++ /dev/null @@ -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 diff --git a/ArknightsUID/utils/models/gamedata/HandbookTeamTable.py b/ArknightsUID/utils/models/gamedata/HandbookTeamTable.py deleted file mode 100644 index 96c7fd6..0000000 --- a/ArknightsUID/utils/models/gamedata/HandbookTeamTable.py +++ /dev/null @@ -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] diff --git a/ArknightsUID/utils/models/gamedata/ItemTable.py b/ArknightsUID/utils/models/gamedata/ItemTable.py deleted file mode 100644 index 863b613..0000000 --- a/ArknightsUID/utils/models/gamedata/ItemTable.py +++ /dev/null @@ -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 diff --git a/ArknightsUID/utils/models/gamedata/MedalTable.py b/ArknightsUID/utils/models/gamedata/MedalTable.py deleted file mode 100644 index 2593991..0000000 --- a/ArknightsUID/utils/models/gamedata/MedalTable.py +++ /dev/null @@ -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] diff --git a/ArknightsUID/utils/models/gamedata/MissionTable.py b/ArknightsUID/utils/models/gamedata/MissionTable.py deleted file mode 100644 index 036dc65..0000000 --- a/ArknightsUID/utils/models/gamedata/MissionTable.py +++ /dev/null @@ -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] diff --git a/ArknightsUID/utils/models/gamedata/OpenServerTable.py b/ArknightsUID/utils/models/gamedata/OpenServerTable.py deleted file mode 100644 index 3c808b6..0000000 --- a/ArknightsUID/utils/models/gamedata/OpenServerTable.py +++ /dev/null @@ -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] diff --git a/ArknightsUID/utils/models/gamedata/PlayerAvatarTable.py b/ArknightsUID/utils/models/gamedata/PlayerAvatarTable.py deleted file mode 100644 index ecd2fa5..0000000 --- a/ArknightsUID/utils/models/gamedata/PlayerAvatarTable.py +++ /dev/null @@ -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 diff --git a/ArknightsUID/utils/models/gamedata/RangeTable.py b/ArknightsUID/utils/models/gamedata/RangeTable.py deleted file mode 100644 index 2d5ae08..0000000 --- a/ArknightsUID/utils/models/gamedata/RangeTable.py +++ /dev/null @@ -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] diff --git a/ArknightsUID/utils/models/gamedata/ReplicateTable.py b/ArknightsUID/utils/models/gamedata/ReplicateTable.py deleted file mode 100644 index fe92e2f..0000000 --- a/ArknightsUID/utils/models/gamedata/ReplicateTable.py +++ /dev/null @@ -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] diff --git a/ArknightsUID/utils/models/gamedata/RetroTable.py b/ArknightsUID/utils/models/gamedata/RetroTable.py deleted file mode 100644 index 7184fe1..0000000 --- a/ArknightsUID/utils/models/gamedata/RetroTable.py +++ /dev/null @@ -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 diff --git a/ArknightsUID/utils/models/gamedata/RoguelikeTable.py b/ArknightsUID/utils/models/gamedata/RoguelikeTable.py deleted file mode 100644 index 1612a4e..0000000 --- a/ArknightsUID/utils/models/gamedata/RoguelikeTable.py +++ /dev/null @@ -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] diff --git a/ArknightsUID/utils/models/gamedata/RoguelikeTopicTable.py b/ArknightsUID/utils/models/gamedata/RoguelikeTopicTable.py deleted file mode 100644 index c9ef1c7..0000000 --- a/ArknightsUID/utils/models/gamedata/RoguelikeTopicTable.py +++ /dev/null @@ -1,1245 +0,0 @@ -from typing import Dict, List, Union - -from msgspec import field - -from ..common import BaseStruct - - -class RoguelikeTopicBasicDataHomeEntryDisplayData(BaseStruct): - topicId: str - displayId: str - startTs: int - endTs: int - - -class RoguelikeTopicConfig(BaseStruct): - webBusType: str - monthChatTrigType: int - loadRewardHpDecoPlugin: bool - loadRewardExtraInfoPlugin: bool - loadCharCardPlugin: Union[bool, None] = None - - -class RoguelikeTopicBasicData(BaseStruct): - id_: str = field(name="id") - name: str - startTime: int - disappearTimeOnMainScreen: int - sort: int - showMedalId: str - medalGroupId: str - fullStoredTime: int - lineText: str - homeEntryDisplayData: List[RoguelikeTopicBasicDataHomeEntryDisplayData] - moduleTypes: List[str] - config: RoguelikeTopicConfig - - -class RoguelikeTopicConstPredefinedChar(BaseStruct): - charId: str - canBeFree: bool - uniEquipId: Union[str, None] - recruitType: str - - -class RoguelikeTopicConst(BaseStruct): - milestoneTokenRatio: int - outerBuffTokenRatio: Union[int, float] - relicTokenRatio: int - rogueSystemUnlockStage: str - ordiModeReOpenCoolDown: int - monthModeReOpenCoolDown: int - monthlyTaskUncompletedTime: int - monthlyTaskManualRefreshLimit: int - monthlyTeamUncompletedTime: int - bpPurchaseSystemUnlockTime: int - predefinedChars: Dict[str, RoguelikeTopicConstPredefinedChar] - - -class RoguelikeTopicUpdate(BaseStruct): - updateId: str - topicUpdateTime: int - topicEndTime: int - - -class RoguelikeTopicEnroll(BaseStruct): - enrollId: str - enrollTime: int - - -class RoguelikeTopicBP(BaseStruct): - id_: str = field(name="id") - level: int - tokenNum: int - nextTokenNum: int - itemID: str - itemType: str - itemCount: int - isGoodPrize: bool - isGrandPrize: bool - - -class RoguelikeTopicMilestoneUpdateData(BaseStruct): - updateTime: int - endTime: int - maxBpLevel: int - maxBpCount: int - maxDisplayBpCount: int - - -class ItemBundle(BaseStruct): - id_: str = field(name="id") - count: int - type_: str = field(name="type") - - -class RoguelikeTopicBPGrandPrize(BaseStruct): - grandPrizeDisplayId: str - sortId: int - displayUnlockYear: int - displayUnlockMonth: int - acquireTitle: str - purchaseTitle: str - displayName: str - displayDiscription: str - bpLevelId: str - itemBundle: Union[ItemBundle, None] = None - accordingCharId: Union[str, None] = None - accordingSkinId: Union[str, None] = None - detailAnnounceTime: Union[str, None] = None - picIdAftrerUnlock: Union[str, None] = None - - -class RoguelikeTopicMonthMission(BaseStruct): - id_: str = field(name="id") - taskName: str - taskClass: str - innerClassWeight: int - template: str - paramList: List[str] - desc: str - tokenRewardNum: int - - -class RoguelikeTopicMonthSquad(BaseStruct): - id_: str = field(name="id") - teamName: str - teamSubName: Union[str, None] - teamFlavorDesc: Union[str, None] - teamDes: str - teamColor: str - teamMonth: str - teamYear: str - teamIndex: Union[str, None] - teamChars: List[str] - zoneId: Union[str, None] - chatId: str - tokenRewardNum: int - items: List[ItemBundle] - startTime: int - endTime: int - taskDes: Union[str, None] - - -class RoguelikeTopicChallengeTask(BaseStruct): - taskId: str - taskDes: str - completionClass: str - completionParams: List[str] - - -class RoguelikeTopicChallenge(BaseStruct): - challengeId: str - sortId: int - challengeName: str - challengeGroup: int - challengeGroupSortId: int - challengeGroupName: Union[str, None] - challengeUnlockDesc: Union[str, None] - challengeUnlockToastDesc: Union[str, None] - challengeDes: str - challengeConditionDes: List[str] - challengeTasks: Dict[str, RoguelikeTopicChallengeTask] - defaultTaskId: str - rewards: List[ItemBundle] - challengeStoryId: Union[str, None] = None - - -class RoguelikeTopicDifficultyRuleDescReplacement(BaseStruct): - enrollId: str - ruleDesc: str - - -class RoguelikeTopicDifficulty(BaseStruct): - modeDifficulty: str - grade: int - name: str - subName: Union[str, None] - enrollId: Union[str, None] - haveInitialRelicIcon: bool - scoreFactor: Union[int, float] - canUnlockItem: bool - doMonthTask: bool - ruleDesc: str - ruleDescReplacements: Union[List[RoguelikeTopicDifficultyRuleDescReplacement], None] - failTitle: str - failImageId: str - failForceDesc: str - sortId: int - equivalentGrade: int - color: Union[str, None] - bpValue: int - bossValue: int - addDesc: Union[str, None] - isHard: bool - unlockText: Union[str, None] - displayIconId: Union[str, None] - hideEndingStory: bool - - -class RoguelikeTopicBankReward(BaseStruct): - rewardId: str - unlockGoldCnt: int - rewardType: str - desc: str - - -class ActArchiveRelicItemData(BaseStruct): - relicId: str - relicSortId: int - relicGroupId: int - orderId: str - isSpRelic: bool - enrollId: Union[str, None] - - -class ActArchiveRelicData(BaseStruct): - relic: Dict[str, ActArchiveRelicItemData] - - -class ActArchiveCapsuleItemData(BaseStruct): - capsuleId: str - capsuleSortId: int - englishName: str - enrollId: Union[str, None] - - -class ActArchiveCapsuleData(BaseStruct): - capsule: Dict[str, ActArchiveCapsuleItemData] - - -class ActArchiveTrapItemData(BaseStruct): - trapId: str - trapSortId: int - orderId: str - enrollId: Union[str, None] - - -class ActArchiveTrapData(BaseStruct): - trap: Dict[str, ActArchiveTrapItemData] - - -class ActArchiveChatItemData(BaseStruct): - chatFloor: int - chatDesc: Union[str, None] - chatStoryId: str - - -class ActArchiveChatGroupData(BaseStruct): - sortId: int - numChat: int - clientChatItemData: List[ActArchiveChatItemData] - - -class ActArchiveChatData(BaseStruct): - chat: Dict[str, ActArchiveChatGroupData] - - -class ActArchiveEndbookItemData(BaseStruct): - endBookId: str - sortId: int - endbookName: str - unlockDesc: str - textId: str - enrollId: Union[str, None] = None - isLast: Union[bool, None] = None - - -class ActArchiveEndbookGroupData(BaseStruct): - endId: str - endingId: str - sortId: int - title: str - cgId: str - backBlurId: str - cardId: str - hasAvg: bool - avgId: str - clientEndbookItemDatas: List[ActArchiveEndbookItemData] - - -class ActArchiveEndbookData(BaseStruct): - endbook: Dict[str, ActArchiveEndbookGroupData] - - -class ActArchiveBuffItemData(BaseStruct): - buffId: str - buffGroupIndex: int - innerSortId: int - name: str - iconId: str - usage: str - desc: str - color: str - - -class ActArchiveBuffData(BaseStruct): - buff: Dict[str, ActArchiveBuffItemData] - - -class ActArchiveTotemItemData(BaseStruct): - id_: str = field(name="id") - type_: int = field(name="type") - enrollConditionId: Union[str, None] - sortId: int - - -class ActArchiveTotemData(BaseStruct): - totem: Dict[str, ActArchiveTotemItemData] - - -class ActArchiveChaosItemData(BaseStruct): - id_: str = field(name="id") - isHidden: bool - enrollId: Union[str, None] - sortId: int - - -class ActArchiveChaosData(BaseStruct): - chaos: Dict[str, ActArchiveChaosItemData] - - -class RoguelikeArchiveComponentData(BaseStruct): - relic: ActArchiveRelicData - capsule: Union[ActArchiveCapsuleData, None] - trap: ActArchiveTrapData - chat: ActArchiveChatData - endbook: ActArchiveEndbookData - buff: ActArchiveBuffData - totem: Union[ActArchiveTotemData, None] - chaos: Union[ActArchiveChaosData, None] - challengeBook: Union[Dict[str, Dict[str, None]], None] = None # Removed in 2.1.21 - - -class RoguelikeArchiveUnlockCondDesc(BaseStruct): - archiveType: str - description: str - - -class RoguelikeArchiveEnroll(BaseStruct): - archiveType: str - enrollId: Union[str, None] - - -class RoguelikeArchiveUnlockCondData(BaseStruct): - unlockCondDesc: Dict[str, RoguelikeArchiveUnlockCondDesc] - enroll: Dict[str, RoguelikeArchiveEnroll] - - -class RoguelikeTopicDetailConstPlayerLevelData(BaseStruct): - exp: int - populationUp: int - squadCapacityUp: int - battleCharLimitUp: int - maxHpUp: int - - -class RoguelikeTopicDetailConstCharUpgradeData(BaseStruct): - evolvePhase: int - skillLevel: int - skillSpecializeLevel: int - - -class RoguelikeTopicDetailConstPredefinedPlayerLevelData(BaseStruct): - levels: Dict[str, RoguelikeTopicDetailConstPlayerLevelData] - - -class RoguelikeTopicDetailConst(BaseStruct): - playerLevelTable: Dict[str, RoguelikeTopicDetailConstPlayerLevelData] - charUpgradeTable: Dict[str, RoguelikeTopicDetailConstCharUpgradeData] - difficultyUpgradeRelicDescTable: Dict[str, str] - tokenBpId: str - tokenOuterBuffId: str - previewedRewardsAccordingUpdateId: str - tipButtonName: str - collectButtonName: str - bpSystemName: str - autoSetKV: str - bpPurchaseActiveEnroll: str - defaultSacrificeDesc: Union[str, None] - defaultExpeditionSelectDesc: Union[str, None] - gotCharBuffToast: Union[str, None] - gotSquadBuffToast: Union[str, None] - loseCharBuffToast: Union[str, None] - monthTeamSystemName: str - battlePassUpdateName: str - monthCharCardTagName: str - monthTeamDescTagName: str - outerBuffCompleteText: str - outerProgressTextColor: str - challengeTaskTargetName: str - challengeTaskConditionName: str - challengeTaskRewardName: str - challengeTaskModeName: str - challengeTaskName: str - outerBuffTokenSum: int - needAllFrontNode: bool - showBlurBack: bool - endingIconBorderDifficulty: int - endingIconBorderCount: int - predefinedLevelTable: Union[ - Dict[str, RoguelikeTopicDetailConstPredefinedPlayerLevelData], - None, - ] = None - - -class RoguelikeGameInitData(BaseStruct): - modeId: str - modeGrade: int - predefinedId: Union[str, None] - predefinedStyle: Union[str, None] - initialBandRelic: List[str] - initialRecruitGroup: Union[List[str], None] - initialHp: int - initialPopulation: int - initialGold: int - initialSquadCapacity: int - initialShield: int - initialMaxHp: int - initialKey: int - - -class RoguelikeGameStageData(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 - capsulePool: Union[str, None] - capsuleProb: Union[int, float] - vutresProb: List[float] - boxProb: List[float] - specialNodeId: Union[str, None] = None - - -class RoguelikeGameZoneData(BaseStruct): - id_: str = field(name="id") - name: str - clockPerformance: Union[str, None] - displayTime: Union[str, None] - description: str - buffDescription: Union[str, None] - endingDescription: str - backgroundId: str - zoneIconId: str - isHiddenZone: bool - - -class RoguelikeZoneVariationData(BaseStruct): - pass - - -class RoguelikeGameTrapData(BaseStruct): - itemId: str - trapId: str - trapDesc: str - - -class RoguelikeGameRecruitTicketData(BaseStruct): - id_: str = field(name="id") - profession: int - rarity: int - professionList: List[str] - rarityList: List[int] - extraEliteNum: int - extraFreeRarity: List[int] - extraCharIds: List[str] - - -class RoguelikeGameUpgradeTicketData(BaseStruct): - id_: str = field(name="id") - profession: int - rarity: int - professionList: List[str] - rarityList: List[int] - - -class RoguelikeGameCustomTicketData(BaseStruct): - id_: str = field(name="id") - subType: str - discardText: str - - -class Blackboard(BaseStruct): - key: str - value: Union[Union[int, float], None] = None - valueStr: Union[str, None] = None - - -class RoguelikeBuff(BaseStruct): - key: str - blackboard: List[Blackboard] - - -class RoguelikeGameRelicData(BaseStruct): - id_: str = field(name="id") - buffs: List[RoguelikeBuff] - - -class RoguelikeGameRelicCheckParam(BaseStruct): - valueProfessionMask: int - valueStrs: Union[List[str], None] - valueInt: int - - -class RoguelikeGameRelicParamData(BaseStruct): - id_: str = field(name="id") - checkCharBoxTypes: List[str] - checkCharBoxParams: List[RoguelikeGameRelicCheckParam] - - -class RoguelikeGameRecruitGrpData(BaseStruct): - id_: str = field(name="id") - iconId: str - name: str - desc: str - unlockDesc: Union[str, None] - - -class RoguelikeChoiceDisplayData(BaseStruct): - type_: str = field(name="type") - funcIconId: Union[str, None] - itemId: Union[str, None] - taskId: Union[str, None] - costHintType: Union[int, None] = None - effectHintType: Union[int, None] = None - difficultyUpgradeRelicGroupId: Union[str, None] = None - - -class RoguelikeGameChoiceData(BaseStruct): - id_: str = field(name="id") - title: str - description: Union[str, None] - lockedCoverDesc: Union[str, None] - type_: str = field(name="type") - leftDecoType: str - nextSceneId: Union[str, None] - icon: Union[str, None] - displayData: RoguelikeChoiceDisplayData - forceShowWhenOnlyLeave: bool - - -class RoguelikeGameChoiceSceneData(BaseStruct): - id_: str = field(name="id") - title: str - description: str - background: Union[str, None] - titleIcon: Union[str, None] - subTypeId: int - useHiddenMusic: bool - - -class RoguelikeGameNodeTypeData(BaseStruct): - name: str - description: str - - -class RoguelikeGameNodeSubTypeData(BaseStruct): - eventType: str - subTypeId: int - iconId: str - name: Union[str, None] - description: str - - -class RoguelikeGameVariationData(BaseStruct): - id_: str = field(name="id") - type_: str = field(name="type") - outerName: str - innerName: str - functionDesc: str - desc: str - iconId: Union[str, None] - sound: Union[str, None] - - -class RoguelikeGameCharBuffData(BaseStruct): - id_: str = field(name="id") - iconId: str - outerName: str - innerName: str - functionDesc: str - desc: str - buffs: List[RoguelikeBuff] - - -class RoguelikeGameSquadBuffData(BaseStruct): - id_: str = field(name="id") - iconId: str - outerName: str - innerName: str - functionDesc: str - desc: str - buffs: List[RoguelikeBuff] - - -class RoguelikeTaskData(BaseStruct): - taskId: str - taskName: str - taskDesc: str - rewardSceneId: str - taskRarity: str - - -class RoguelikeGameConst(BaseStruct): - initSceneName: str - failSceneName: str - hpItemId: str - goldItemId: str - populationItemId: str - squadCapacityItemId: str - expItemId: str - initialBandShowGradeFlag: bool - bankMaxGold: int - bankCostId: Union[str, None] - bankDrawCount: int - bankDrawLimit: int - mimicEnemyIds: List[str] - bossIds: List[str] - goldChestTrapId: str - normBoxTrapId: Union[str, None] - rareBoxTrapId: Union[str, None] - badBoxTrapId: Union[str, None] - maxHpItemId: Union[str, None] - shieldItemId: Union[str, None] - keyItemId: Union[str, None] - chestKeyCnt: int - chestKeyItemId: Union[str, None] - keyColorId: Union[str, None] - onceNodeTypeList: List[str] - gpScoreRatio: int - overflowUsageSquadBuff: Union[str, None] - specialTrapId: Union[str, None] - trapRewardRelicId: Union[str, None] - unlockRouteItemId: Union[str, None] - hideBattleNodeName: Union[str, None] - hideBattleNodeDescription: Union[str, None] - hideNonBattleNodeName: Union[str, None] - hideNonBattleNodeDescription: Union[str, None] - charSelectExpeditionConflictToast: Union[str, None] - itemDropTagDict: Dict[str, str] - expeditionReturnDescCureUpgrade: Union[str, None] - expeditionReturnDescUpgrade: Union[str, None] - expeditionReturnDescCure: Union[str, None] - expeditionReturnDesc: Union[str, None] - expeditionReturnDescItem: Union[str, None] - expeditionReturnRewardBlackList: List[str] - gainBuffDiffGrade: int - dsPredictTips: Union[str, None] - dsBuffActiveTips: Union[str, None] - totemDesc: Union[str, None] - relicDesc: Union[str, None] - buffDesc: Union[str, None] - portalZones: List[str] - exploreExpOnKill: Union[str, None] - - -class RoguelikeTopicCapsule(BaseStruct): - itemId: str - maskType: str - innerColor: str - - -class RoguelikeGameEndingDataLevelIcon(BaseStruct): - level: int - iconId: str - - -class RoguelikeGameEndingData(BaseStruct): - id_: str = field(name="id") - familyId: int - name: str - desc: str - bgId: str - icons: List[RoguelikeGameEndingDataLevelIcon] - priority: int - changeEndingDesc: Union[str, None] - bossIconId: Union[str, None] - - -class RoguelikeBattleSummeryDescriptionData(BaseStruct): - randomDescriptionList: List[str] - - -class TipData(BaseStruct): - tip: str - weight: Union[int, float] - category: str - - -class RoguelikeGameItemData(BaseStruct): - id_: str = field(name="id") - name: str - description: Union[str, None] - usage: str - obtainApproach: str - iconId: str - type_: str = field(name="type") - subType: str - rarity: str - value: int - sortId: int - canSacrifice: bool - unlockCondDesc: Union[str, None] - - -class RoguelikeBandRefData(BaseStruct): - itemId: str - iconId: str - description: str - bandLevel: int - normalBandId: str - - -class RoguelikeEndingDetailText(BaseStruct): - textId: str - text: str - eventType: str - showType: int - choiceSceneId: Union[str, None] - paramList: List[str] - otherPara1: Union[str, None] - - -class RoguelikeGameTreasureData(BaseStruct): - treasureId: str - groupId: str - subIndex: int - name: str - usage: str - - -class RoguelikeDifficultyUpgradeRelicData(BaseStruct): - relicId: str - equivalentGrade: int - - -class RoguelikeDifficultyUpgradeRelicGroupData(BaseStruct): - relicData: List[RoguelikeDifficultyUpgradeRelicData] - - -class RoguelikePredefinedStyleData(BaseStruct): - styleId: str - styleConfig: int - - -class RoguelikeGameExploreToolData(BaseStruct): - itemId: str - trapId: str - trapDesc: str - - -class RoguelikeTopicDetail(BaseStruct): - updates: List[RoguelikeTopicUpdate] - enrolls: Dict[str, RoguelikeTopicEnroll] - milestones: List[RoguelikeTopicBP] - milestoneUpdates: List[RoguelikeTopicMilestoneUpdateData] - grandPrizes: List[RoguelikeTopicBPGrandPrize] - monthMission: List[RoguelikeTopicMonthMission] - monthSquad: Dict[str, RoguelikeTopicMonthSquad] - challenges: Dict[str, RoguelikeTopicChallenge] - difficulties: List[RoguelikeTopicDifficulty] - bankRewards: List[RoguelikeTopicBankReward] - archiveComp: RoguelikeArchiveComponentData - archiveUnlockCond: RoguelikeArchiveUnlockCondData - detailConst: RoguelikeTopicDetailConst - init: List[RoguelikeGameInitData] - stages: Dict[str, RoguelikeGameStageData] - zones: Dict[str, RoguelikeGameZoneData] - variation: Dict[str, RoguelikeZoneVariationData] - traps: Dict[str, RoguelikeGameTrapData] - recruitTickets: Dict[str, RoguelikeGameRecruitTicketData] - upgradeTickets: Dict[str, RoguelikeGameUpgradeTicketData] - customTickets: Dict[str, RoguelikeGameCustomTicketData] - relics: Dict[str, RoguelikeGameRelicData] - relicParams: Dict[str, RoguelikeGameRelicParamData] - recruitGrps: Dict[str, RoguelikeGameRecruitGrpData] - choices: Dict[str, RoguelikeGameChoiceData] - choiceScenes: Dict[str, RoguelikeGameChoiceSceneData] - nodeTypeData: Dict[str, RoguelikeGameNodeTypeData] - subTypeData: List[RoguelikeGameNodeSubTypeData] - variationData: Dict[str, RoguelikeGameVariationData] - charBuffData: Dict[str, RoguelikeGameCharBuffData] - squadBuffData: Dict[str, RoguelikeGameSquadBuffData] - taskData: Dict[str, RoguelikeTaskData] - gameConst: RoguelikeGameConst - shopDialogs: Dict[str, List[str]] - capsuleDict: Union[Dict[str, RoguelikeTopicCapsule], None] - endings: Dict[str, RoguelikeGameEndingData] - battleSummeryDescriptions: Dict[str, RoguelikeBattleSummeryDescriptionData] - battleLoadingTips: List[TipData] - items: Dict[str, RoguelikeGameItemData] - bandRef: Dict[str, RoguelikeBandRefData] - endingDetailList: List[RoguelikeEndingDetailText] - treasures: Dict[str, List[RoguelikeGameTreasureData]] - difficultyUpgradeRelicGroups: Dict[ - str, - RoguelikeDifficultyUpgradeRelicGroupData, - ] - styleConfig: Dict[str, RoguelikePredefinedStyleData] - exploreTools: Union[Dict[str, RoguelikeGameExploreToolData], None] = None - styles: Union[Dict[str, RoguelikePredefinedStyleData], None] = None - - -class RoguelikeModuleBaseData(BaseStruct): - moduleType: str - - -class RoguelikeSanRangeData(BaseStruct): - sanMax: int - diceGroupId: str - description: str - sanDungeonEffect: str - sanEffectRank: str - sanEndingDesc: Union[str, None] - - -class RoguelikeSanCheckConsts(BaseStruct): - sanDecreaseToast: str - - -class RoguelikeSanCheckModuleData(RoguelikeModuleBaseData): - sanRanges: List[RoguelikeSanRangeData] - moduleConsts: RoguelikeSanCheckConsts - - -class RoguelikeDiceData(BaseStruct): - diceId: str - description: str - isUpgradeDice: int - upgradeDiceId: Union[str, None] - diceFaceCount: int - battleDiceId: str - - -class RoguelikeDiceRuleData(BaseStruct): - dicePointMax: int - diceResultClass: str - diceGroupId: str - diceEventId: str - resultDesc: str - showType: str - canReroll: bool - diceEndingScene: str - diceEndingDesc: str - sound: str - - -class RoguelikeDiceRuleGroupData(BaseStruct): - ruleGroupId: str - minGoodNum: int - - -class RoguelikeDicePredefineData(BaseStruct): - modeId: str - modeGrade: int - predefinedId: Union[str, None] - initialDiceCount: int - - -class RoguelikeDiceModuleData(RoguelikeModuleBaseData): - dice: Dict[str, RoguelikeDiceData] - diceEvents: Dict[str, RoguelikeDiceRuleData] - diceChoices: Dict[str, str] - diceRuleGroups: Dict[str, RoguelikeDiceRuleGroupData] - dicePredefines: List[RoguelikeDicePredefineData] - - -class RoguelikeChaosData(BaseStruct): - chaosId: str - level: int - nextChaosId: Union[str, None] - prevChaosId: Union[str, None] - iconId: str - name: str - functionDesc: str - desc: str - sound: str - sortId: int - - -class RoguelikeChaosRangeData(BaseStruct): - chaosMax: int - chaosDungeonEffect: str - - -class RoguelikeChaosPredefineLevelInfo(BaseStruct): - chaosLevelBeginNum: int - chaosLevelEndNum: int - - -class RoguelikeChaosModuleConsts(BaseStruct): - maxChaosLevel: int - maxChaosSlot: int - chaosNotMaxDescription: str - chaosMaxDescription: str - chaosPredictDescription: str - - -class RoguelikeChaosModuleData(RoguelikeModuleBaseData): - chaosDatas: Dict[str, RoguelikeChaosData] - chaosRanges: List[RoguelikeChaosRangeData] - levelInfoDict: Dict[str, Dict[str, RoguelikeChaosPredefineLevelInfo]] - moduleConsts: RoguelikeChaosModuleConsts - - -class RoguelikeTotemLinkedNodeTypeData(BaseStruct): - effectiveNodeTypes: List[str] - blurNodeTypes: List[str] - - -class RoguelikeTotemBuffData(BaseStruct): - totemId: str - color: str - pos: str - rhythm: str - normalDesc: str - synergyDesc: str - archiveDesc: str - combineGroupName: str - bgIconId: str - isManual: bool - linkedNodeTypeData: RoguelikeTotemLinkedNodeTypeData - distanceMin: int - distanceMax: int - vertPassable: bool - expandLength: int - onlyForVert: bool - portalLinkedNodeTypeData: RoguelikeTotemLinkedNodeTypeData - - -class RoguelikeTotemSubBuffData(BaseStruct): - subBuffId: str - name: str - desc: str - combinedDesc: str - info: str - - -class RoguelikeTotemModuleConsts(BaseStruct): - totemPredictDescription: str - colorCombineDesc: Dict[str, str] - bossCombineDesc: str - battleNoPredictDescription: str - shopNoGoodsDescription: str - - -class RoguelikeTotemBuffModuleData(RoguelikeModuleBaseData): - totemBuffDatas: Dict[str, RoguelikeTotemBuffData] - subBuffs: Dict[str, RoguelikeTotemSubBuffData] - moduleConsts: RoguelikeTotemModuleConsts - - -class RoguelikeVisionData(BaseStruct): - sightNum: int - level: int - canForesee: bool - dividedDis: int - status: str - clr: str - desc1: str - desc2: str - icon: str - - -class RoguelikeVisionModuleDataVisionChoiceConfig(BaseStruct): - value: int - type_: int = field(name="type") - - -class RoguelikeVisionModuleConsts(BaseStruct): - maxVision: int - totemBottomDescription: str - chestBottomDescription: str - goodsBottomDescription: str - - -class RoguelikeVisionModuleData(RoguelikeModuleBaseData): - visionDatas: Dict[str, RoguelikeVisionData] - visionChoices: Dict[str, RoguelikeVisionModuleDataVisionChoiceConfig] - moduleConsts: RoguelikeVisionModuleConsts - - -class RoguelikeModule(BaseStruct): - moduleTypes: List[str] - sanCheck: Union[RoguelikeSanCheckModuleData, None] - dice: Union[RoguelikeDiceModuleData, None] - chaos: Union[RoguelikeChaosModuleData, None] - totemBuff: Union[RoguelikeTotemBuffModuleData, None] - vision: Union[RoguelikeVisionModuleData, None] - - -class RoguelikeTopicDisplayItem(BaseStruct): - displayType: str - displayNum: int - displayForm: str - tokenDesc: str - sortId: int - - -class RoguelikeTopicDev(BaseStruct): - buffId: str - sortId: int - nodeType: str - nextNodeId: List[str] - frontNodeId: List[str] - tokenCost: int - buffName: str - buffIconId: str - buffTypeName: str - buffDisplayInfo: List[RoguelikeTopicDisplayItem] - - -class RoguelikeTopicDevToken(BaseStruct): - sortId: int - displayForm: str - tokenDesc: str - - -class RL01EndingText(BaseStruct): - summaryVariation: str - summaryDefeatBoss: str - summaryAccidentMeet: str - summaryCapsule: str - summaryActiveTool: str - summaryActor: str - summaryTop: str - summaryZone: str - summaryEnding: str - summaryMode: str - summaryGroup: str - summarySupport: str - summaryNormalRecruit: str - summaryDirectRecruit: str - summaryFriendRecruit: str - summaryFreeRecruit: str - summaryMonthRecruit: str - summaryUpgrade: str - summaryCompleteEnding: str - summaryEachZone: str - summaryPerfectBattle: str - summaryMeetBattle: str - summaryMeetEvent: str - summaryMeetShop: str - summaryMeetTreasure: str - summaryBuy: str - summaryInvest: str - summaryGet: str - summaryRelic: str - summarySafeHouse: str - summaryFailEnd: str - - -class RL01CustomizeData(BaseStruct): - developments: Dict[str, RoguelikeTopicDev] - developmentTokens: Dict[str, RoguelikeTopicDevToken] - endingText: RL01EndingText - - -class RL02Development(BaseStruct): - buffId: str - nodeType: str - frontNodeId: List[str] - nextNodeId: List[str] - positionP: int - positionR: int - tokenCost: int - buffName: str - buffIconId: str - effectType: str - rawDesc: str - buffDisplayInfo: List[RoguelikeTopicDisplayItem] - enrollId: Union[str, None] - - -class RL02DevRawTextBuffGroup(BaseStruct): - nodeIdList: List[str] - useLevelMark: bool - groupIconId: str - useUpBreak: bool - sortId: int - - -class RL02DevelopmentLine(BaseStruct): - fromNode: str - toNode: str - fromNodeP: int - fromNodeR: int - toNodeP: int - toNodeR: int - enrollId: Union[str, None] - - -class RL02EndingText(BaseStruct): - summaryMutation: str - summaryDice: str - summaryDiceResultGood: str - summaryDiceResultNormal: str - summaryDiceResultBad: str - summaryDiceResultDesc: str - summaryCommuDesc: str - summaryHiddenDesc: str - summaryKnightDesc: str - summaryGoldDesc: str - summaryPracticeDesc: str - summaryCommuEmptyDesc: str - summaryCommuNotEmptyDesc: str - summaryHiddenPassedDesc: str - summaryHiddenNotPassedDesc: str - summaryKnightPassedDesc: str - summaryKnightNotPassedDesc: str - summaryGoldThreshold: int - summaryGoldHighDesc: str - summaryGoldLowDesc: str - summaryPracticeThreshold: int - summaryPracticeHighDesc: str - summaryPracticeLowDesc: str - - -class RL02CustomizeData(BaseStruct): - developments: Dict[str, RL02Development] - developmentTokens: Dict[str, RoguelikeTopicDevToken] - developmentRawTextGroup: List[RL02DevRawTextBuffGroup] - developmentLines: List[RL02DevelopmentLine] - endingText: RL02EndingText - - -class RL03Development(BaseStruct): - buffId: str - nodeType: str - frontNodeId: List[str] - nextNodeId: List[str] - positionRow: int - positionOrder: int - tokenCost: int - buffName: str - buffIconId: str - effectType: str - rawDesc: List[str] - buffDisplayInfo: List[RoguelikeTopicDisplayItem] - groupId: str - enrollId: Union[str, None] - - -class RL03DevRawTextBuffGroup(BaseStruct): - nodeIdList: List[str] - useLevelMark: bool - groupIconId: str - sortId: int - - -class RL03DevDifficultyNodePairInfo(BaseStruct): - frontNode: str - nextNode: str - - -class RL03DevDifficultyNodeInfo(BaseStruct): - buffId: str - nodeMap: List[RL03DevDifficultyNodePairInfo] - enableGrade: int - - -class RL03EndingText(BaseStruct): - summaryGetTotem: str - summaryDemoPointUp: str - summaryDemoPointDown: str - summaryDemoGradeUp: str - summaryDemoGradeDown: str - summaryVisionPointUp: str - summaryVisionPointDown: str - summaryVisionGradeUp: str - summaryVisionGradeDown: str - summaryMeetTrade: str - summaryFightWin: str - summaryFightFail: str - summaryExchangeTotem: str - summaryExchangeRelic: str - summaryMeetSecretpath: str - summaryUseTotem: str - summaryVisionGrade: str - summaryActor: str - summaryTop: str - summaryZone: str - summaryEnding: str - summaryMode: str - summaryGroup: str - summarySupport: str - summaryNormalRecruit: str - summaryDirectRecruit: str - summaryFriendRecruit: str - summaryFreeRecruit: str - summaryMonthRecruit: str - summaryUpgrade: str - summaryCompleteEnding: str - summaryEachZone: str - summaryPerfectBattle: str - summaryMeetBattle: str - summaryMeetEvent: str - summaryMeetShop: str - summaryMeetTreasure: str - summaryBuy: str - summaryInvest: str - summaryGet: str - summaryRelic: str - summarySafeHouse: str - summaryFailEnd: str - - -class RL03DifficultyExt(BaseStruct): - modeDifficulty: str - grade: int - totemProb: Union[int, float] - relicDevLevel: Union[str, None] - buffs: Union[List[str], None] - buffDesc: List[str] - - -class RL03CustomizeData(BaseStruct): - developments: Dict[str, RL03Development] - developmentsTokens: Dict[str, RoguelikeTopicDevToken] - developmentRawTextGroup: List[RL03DevRawTextBuffGroup] - developmentsDifficultyNodeInfos: Dict[str, RL03DevDifficultyNodeInfo] - endingText: RL03EndingText - difficulties: List[RL03DifficultyExt] - - -class RoguelikeTopicCustomizeData(BaseStruct): - rogue_1: RL01CustomizeData - rogue_2: RL02CustomizeData - rogue_3: RL03CustomizeData - - -class RoguelikeTopicTable(BaseStruct): - __version__ = "23-12-02-09-28-50-918524" - - topics: Dict[str, RoguelikeTopicBasicData] - constant: RoguelikeTopicConst - details: Dict[str, RoguelikeTopicDetail] - modules: Dict[str, RoguelikeModule] - customizeData: RoguelikeTopicCustomizeData diff --git a/ArknightsUID/utils/models/gamedata/SandboxPermTable.py b/ArknightsUID/utils/models/gamedata/SandboxPermTable.py deleted file mode 100644 index 42a41f6..0000000 --- a/ArknightsUID/utils/models/gamedata/SandboxPermTable.py +++ /dev/null @@ -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] diff --git a/ArknightsUID/utils/models/gamedata/SandboxTable.py b/ArknightsUID/utils/models/gamedata/SandboxTable.py deleted file mode 100644 index c2ce4a7..0000000 --- a/ArknightsUID/utils/models/gamedata/SandboxTable.py +++ /dev/null @@ -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] diff --git a/ArknightsUID/utils/models/gamedata/ShopClientTable.py b/ArknightsUID/utils/models/gamedata/ShopClientTable.py deleted file mode 100644 index 060b00b..0000000 --- a/ArknightsUID/utils/models/gamedata/ShopClientTable.py +++ /dev/null @@ -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] diff --git a/ArknightsUID/utils/models/gamedata/SkillTable.py b/ArknightsUID/utils/models/gamedata/SkillTable.py deleted file mode 100644 index cfd5f46..0000000 --- a/ArknightsUID/utils/models/gamedata/SkillTable.py +++ /dev/null @@ -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] diff --git a/ArknightsUID/utils/models/gamedata/SkinTable.py b/ArknightsUID/utils/models/gamedata/SkinTable.py deleted file mode 100644 index 4ec10c3..0000000 --- a/ArknightsUID/utils/models/gamedata/SkinTable.py +++ /dev/null @@ -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] diff --git a/ArknightsUID/utils/models/gamedata/StageTable.py b/ArknightsUID/utils/models/gamedata/StageTable.py deleted file mode 100644 index 30ef896..0000000 --- a/ArknightsUID/utils/models/gamedata/StageTable.py +++ /dev/null @@ -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] diff --git a/ArknightsUID/utils/models/gamedata/StoryReviewMetaTable.py b/ArknightsUID/utils/models/gamedata/StoryReviewMetaTable.py deleted file mode 100644 index 13957f7..0000000 --- a/ArknightsUID/utils/models/gamedata/StoryReviewMetaTable.py +++ /dev/null @@ -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 diff --git a/ArknightsUID/utils/models/gamedata/StoryReviewTable.py b/ArknightsUID/utils/models/gamedata/StoryReviewTable.py deleted file mode 100644 index 247a7f1..0000000 --- a/ArknightsUID/utils/models/gamedata/StoryReviewTable.py +++ /dev/null @@ -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] diff --git a/ArknightsUID/utils/models/gamedata/StoryTable.py b/ArknightsUID/utils/models/gamedata/StoryTable.py deleted file mode 100644 index 84f95a4..0000000 --- a/ArknightsUID/utils/models/gamedata/StoryTable.py +++ /dev/null @@ -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] diff --git a/ArknightsUID/utils/models/gamedata/TechBuffTable.py b/ArknightsUID/utils/models/gamedata/TechBuffTable.py deleted file mode 100644 index a92fa3a..0000000 --- a/ArknightsUID/utils/models/gamedata/TechBuffTable.py +++ /dev/null @@ -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] diff --git a/ArknightsUID/utils/models/gamedata/TipTable.py b/ArknightsUID/utils/models/gamedata/TipTable.py deleted file mode 100644 index 112b540..0000000 --- a/ArknightsUID/utils/models/gamedata/TipTable.py +++ /dev/null @@ -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] diff --git a/ArknightsUID/utils/models/gamedata/TokenTable.py b/ArknightsUID/utils/models/gamedata/TokenTable.py deleted file mode 100644 index 129a2ac..0000000 --- a/ArknightsUID/utils/models/gamedata/TokenTable.py +++ /dev/null @@ -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] diff --git a/ArknightsUID/utils/models/gamedata/UniequipData.py b/ArknightsUID/utils/models/gamedata/UniequipData.py deleted file mode 100644 index a21b476..0000000 --- a/ArknightsUID/utils/models/gamedata/UniequipData.py +++ /dev/null @@ -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]] diff --git a/ArknightsUID/utils/models/gamedata/UniequipTable.py b/ArknightsUID/utils/models/gamedata/UniequipTable.py deleted file mode 100644 index e39c497..0000000 --- a/ArknightsUID/utils/models/gamedata/UniequipTable.py +++ /dev/null @@ -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] diff --git a/ArknightsUID/utils/models/gamedata/ZoneTable.py b/ArknightsUID/utils/models/gamedata/ZoneTable.py deleted file mode 100644 index e8568d0..0000000 --- a/ArknightsUID/utils/models/gamedata/ZoneTable.py +++ /dev/null @@ -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 diff --git a/ArknightsUID/utils/models/skland/models.py b/ArknightsUID/utils/models/skland/models.py index 5d51721..2e1d541 100644 --- a/ArknightsUID/utils/models/skland/models.py +++ b/ArknightsUID/utils/models/skland/models.py @@ -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 ################ diff --git a/pdm.lock b/pdm.lock index 0a49608..afdb666 100644 --- a/pdm.lock +++ b/pdm.lock @@ -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]] diff --git a/pyproject.toml b/pyproject.toml index 6ee4da7..a19e258 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -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 = [