diff --git a/app/core/nice/svt/card.py b/app/core/nice/svt/card.py index 72fc63ef..b68d7fff 100644 --- a/app/core/nice/svt/card.py +++ b/app/core/nice/svt/card.py @@ -2,7 +2,10 @@ import orjson -from ....schemas.gameenums import COMMAND_CARD_ATK_TYPE_NAME +from ....schemas.gameenums import ( + COMMAND_CARD_ATK_TYPE_NAME, + SVT_CARD_POSITION_DAMAGE_RATES_SLIDE_TYPE_NAME, +) from ....schemas.nice import NiceCardDetail from ....schemas.raw import MstSvtCard, MstSvtCardAdd from ...utils import get_traits_list @@ -20,4 +23,12 @@ def get_nice_card( attackNpRate=script.get("attackNpRate"), defenseNpRate=script.get("defenseNpRate"), dropStarRate=script.get("dropStarRate"), + positionDamageRates=script.get("positionDamageRates"), + positionDamageRatesSlideType=( + SVT_CARD_POSITION_DAMAGE_RATES_SLIDE_TYPE_NAME[ + script["positionDamageRatesSlideType"] + ] + if "positionDamageRatesSlideType" in script + else None + ), ) diff --git a/app/schemas/gameenums.py b/app/schemas/gameenums.py index e1c7e243..cec602c8 100644 --- a/app/schemas/gameenums.py +++ b/app/schemas/gameenums.py @@ -6565,3 +6565,26 @@ class NiceEventMissionCondDetailType(StrEnum): 41: NiceEventMissionCondDetailType.purchaseShopNum, 42: NiceEventMissionCondDetailType.itemUseQuestNum, } + + +class SvtCardPositionDamageRatesSlideType(IntEnum): + NONE = 0 + FRONT = 1 + BACK = 2 + + +class NiceSvtCardPositionDamageRatesSlideType(StrEnum): + """Servant Card Position Damage Rates Slide Type""" + + none = "none" + front = "front" + back = "back" + + +SVT_CARD_POSITION_DAMAGE_RATES_SLIDE_TYPE_NAME: dict[ + int, NiceSvtCardPositionDamageRatesSlideType +] = { + 0: NiceSvtCardPositionDamageRatesSlideType.none, + 1: NiceSvtCardPositionDamageRatesSlideType.front, + 2: NiceSvtCardPositionDamageRatesSlideType.back, +} diff --git a/app/schemas/nice.py b/app/schemas/nice.py index 7898dba6..d38b83ad 100644 --- a/app/schemas/nice.py +++ b/app/schemas/nice.py @@ -85,6 +85,7 @@ NiceShopType, NiceSpotOverwriteType, NiceStatusRank, + NiceSvtCardPositionDamageRatesSlideType, NiceSvtClassSupportGroupType, NiceSvtDeadType, NiceSvtFlag, @@ -1000,6 +1001,8 @@ class NiceCardDetail(BaseModel): attackNpRate: int | None = None defenseNpRate: int | None = None dropStarRate: int | None = None + positionDamageRates: list[int] | None = None + positionDamageRatesSlideType: NiceSvtCardPositionDamageRatesSlideType | None = None AscensionAddData = TypeVar("AscensionAddData") diff --git a/scripts/enum.ts b/scripts/enum.ts index 7edea4d2..16934f1f 100644 --- a/scripts/enum.ts +++ b/scripts/enum.ts @@ -2250,3 +2250,9 @@ export enum NiceEventMissionCondDetailType { PURCHASE_SHOP_NUM = "purchaseShopNum", ITEM_USE_QUEST_NUM = "itemUseQuestNum", } + +export enum NiceSvtCardPositionDamageRatesSlideType { + NONE = "none", + FRONT = "front", + BACK = "back", +} diff --git a/scripts/extract_enums.py b/scripts/extract_enums.py index 5042c8c3..8e28f80a 100644 --- a/scripts/extract_enums.py +++ b/scripts/extract_enums.py @@ -724,6 +724,14 @@ def cs_enum_to_ts(cs_enums: list[str], raw_class: str, nice_class: str) -> list[ "Event Mission Cond Detail Type", "EVENT_MISSION_COND_DETAIL_TYPE_NAME", ), + ( + "ServantCardAddEntity.POSITION_DAMAGE_RATES_SLIDE_TYPE", + "SvtCardPositionDamageRatesSlideType", + "NiceSvtCardPositionDamageRatesSlideType", + "Servant Card Position Damage Rates Slide Type", + "SVT_CARD_POSITION_DAMAGE_RATES_SLIDE_TYPE_NAME", + ), + ]