Module genshin.models.zzz.chronicle.challenge.assault

ZZZ Deadly Assault models.

Classes

class DeadlyAssault (**data: Any)
Expand source code
class DeadlyAssault(APIModel):
    """ZZZ Deadly Assault model."""

    id: int = Aliased("zone_id")
    start_time: typing.Optional[DateTime]
    end_time: typing.Optional[DateTime]

    challenges: typing.Sequence[DeadlyAssaultChallenge] = Aliased("list")
    has_data: bool
    total_score: int
    total_star: int
    rank_percent: str
    total_max_score: int = 0
    room_max_score: int = 0

    has_hard: bool = False
    """Whether Adversity Mode data is available."""
    hard_challenges: typing.Sequence[DeadlyAssaultChallenge] = Aliased("hard_list", default=())
    """Adversity Mode challenges."""
    hard_rank_percent: typing.Optional[str] = None
    """Adversity Mode rank percent."""

    nickname: str = Aliased("nick_name")
    player_avatar: str = Aliased("avatar_icon")

    @pydantic.field_validator("rank_percent", "hard_rank_percent", mode="before")
    def __parse_rank_percent(cls, value: typing.Optional[int]) -> typing.Optional[str]:
        if value is None:
            return None
        return f"{value / 100}%"

ZZZ Deadly Assault model.

Create a new model by parsing and validating input data from keyword arguments.

Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.

self is explicitly positional-only to allow self as a field name.

Ancestors

Class variables

var challenges : Sequence[DeadlyAssaultChallenge]
var end_time : datetime.datetime | None
var hard_challenges : Sequence[DeadlyAssaultChallenge]

Adversity Mode challenges.

var hard_rank_percent : str | None

Adversity Mode rank percent.

var has_data : bool
var has_hard : bool

Whether Adversity Mode data is available.

var id : int
var model_config : pydantic.config.ConfigDict
var nickname : str
var player_avatar : str
var rank_percent : str
var room_max_score : int
var start_time : datetime.datetime | None
var total_max_score : int
var total_score : int
var total_star : int
class DeadlyAssaultAgent (**data: Any)
Expand source code
class DeadlyAssaultAgent(APIModel):
    """ZZZ Deadly Assault agent model."""

    id: int
    level: int
    element: ZZZElementType = Aliased("element_type")
    specialty: ZZZSpecialty = Aliased("avatar_profession")
    rarity: typing.Literal["S", "A"]
    mindscape: int = Aliased("rank")
    icon: str = Aliased("role_square_url")

ZZZ Deadly Assault agent model.

Create a new model by parsing and validating input data from keyword arguments.

Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.

self is explicitly positional-only to allow self as a field name.

Ancestors

Class variables

var element : ZZZElementType
var icon : str
var id : int
var level : int
var mindscape : int
var model_config : pydantic.config.ConfigDict
var rarity : Literal['S', 'A']
var specialty : ZZZSpecialty
class DeadlyAssaultBoss (**data: Any)
Expand source code
class DeadlyAssaultBoss(APIModel):
    """ZZZ Deadly Assault boss."""

    icon: str
    name: str
    background: str = Aliased("bg_icon")
    badge_icon: str = Aliased("race_icon")

ZZZ Deadly Assault boss.

Create a new model by parsing and validating input data from keyword arguments.

Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.

self is explicitly positional-only to allow self as a field name.

Ancestors

Class variables

var background : str
var badge_icon : str
var icon : str
var model_config : pydantic.config.ConfigDict
var name : str
class DeadlyAssaultBuff (**data: Any)
Expand source code
class DeadlyAssaultBuff(APIModel):
    """ZZZ Deadly Assault buff model."""

    name: str
    description: str = Aliased("desc")
    icon: str

ZZZ Deadly Assault buff model.

Create a new model by parsing and validating input data from keyword arguments.

Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.

self is explicitly positional-only to allow self as a field name.

Ancestors

Class variables

var description : str
var icon : str
var model_config : pydantic.config.ConfigDict
var name : str
class DeadlyAssaultChallenge (**data: Any)
Expand source code
class DeadlyAssaultChallenge(APIModel):
    """ZZZ Deadly Assault challenge model."""

    score: int
    star: int
    total_star: int
    challenge_time: DateTime

    boss: DeadlyAssaultBoss
    buffs: typing.Sequence[DeadlyAssaultBuff] = Aliased("buffer")
    agents: typing.Sequence[DeadlyAssaultAgent] = Aliased("avatar_list")
    bangboo: typing.Optional[ChallengeBangboo] = Aliased("buddy", default=None)

    @pydantic.field_validator("boss", mode="before")
    def __parse_boss(cls, value: typing.List[typing.Mapping[str, typing.Any]]) -> DeadlyAssaultBoss:
        if not value:
            raise ValueError("No boss data provided.")
        return DeadlyAssaultBoss(**value[0])

ZZZ Deadly Assault challenge model.

Create a new model by parsing and validating input data from keyword arguments.

Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.

self is explicitly positional-only to allow self as a field name.

Ancestors

Class variables

var agents : Sequence[DeadlyAssaultAgent]
var bangboo : ChallengeBangboo | None
var boss : DeadlyAssaultBoss
var buffs : Sequence[DeadlyAssaultBuff]
var challenge_time : datetime.datetime
var model_config : pydantic.config.ConfigDict
var score : int
var star : int
var total_star : int