Source code for asyncpixel.models.profile

"""Profile objects."""
import datetime
import math
import uuid
from typing import Any
from typing import Dict
from typing import List
from typing import Optional

from pydantic import BaseModel


[docs]class Quests(BaseModel): """Armor. Args: status (str): Status of quest. activated_at (datetime.datetime): Time activated. activated_at_sb (datetime.datetime): Time activated. completed_at (datetime.datetime): Time Completed. completed_at_sb (datetime.datetime): Time Completed. """ status: str activated_at: datetime.datetime activated_at_sb: datetime.datetime completed_at: datetime.datetime completed_at_sb: datetime.datetime
[docs]class Objective(BaseModel): """Armor. Args: status (str): Status of objective. progress (int): Progress through objective. completed_at (Optional[datetime.datetime]): Time compelted at. Defaults to None. """ status: str progress: int completed_at: Optional[datetime.datetime] = None
[docs]class InvArmor(BaseModel): """Armor. Args: type (int): Type of armor. data (str): Data of armor. """ type: int data: str
[docs]class Members(BaseModel): """Member. Args: last_save (datetime.datetime):Time last saved. inv_armor (InvArmor): Armor. first_join (datetime.datetime): Time first joined. first_join_hub (Optional[datetime.datetime]): first joined hub. stats (Dict[str, int]): Member stats. objectives (Dict[str, Objective]): Objectives. tutorial (List[str]): Tutorial. quests (Dict[str, Quests]): Quests done. coin_purse (Optional[int]): Amount of coins in purse. last_death (datetime.datetime): Time last died. crafted_generators (List[str]): Crafted generators. visited_zones (Optional[List[str]]): Visited zones. fairy_souls_collected (int): Souls collected. fairy_souls (Optional[int]): Fairy souls. death_count (Optional[int]): death count. slayer_bosses (Dict[str, Dict[str, Any]]): Slayer bosses. pets (List[Any]): Pets. """ # last_save: Optional[datetime.datetime] # first_join: Optional[datetime.datetime] # pets = [], # stats = {} # coin_purse: int = 0 # crafted_generators = [] # slayer_bosses = {} # unlocked_coll_tiers = [] # collection = {} # # Inventories # inv_armor: Optional[] # inv_contents = {} # fishing_bag = {} # potion_bag = {} # talisman_bag = {} # quiver = {} # ender_chest_contents = {} # candy_inventory_contents = {} # wardrobe_contents = {} # personal_vault_contents = {} # backpack_contents = {} # backpack_icons = {} # # Fairy souls # fairy_souls_collected: int = 0 # fairy_souls: int = 0 # fairy_exchanges: int = 0 last_save: Optional[datetime.datetime] first_join: Optional[datetime.datetime] coin_purse: float = 0 fairy_souls_collected: int = 0 fairy_souls: int = 0 fairy_exchanges: int = 0 pets: List[Any] = [] collection: Dict[str, Any] = {} collections_unlocked: int = 0 inv_armor: Optional[InvArmor] first_join_hub: Optional[int] stats: Optional[Dict[str, float]] tutorial: List[str] = [] last_death: Optional[int] crafted_generators: List[str] = [] visited_zones: List[str] = [] death_count: int = 0 @property def fairy_bonus(self) -> Dict[str, int]: """Bonus from fairy. Returns: Dict[str, int]: Fairy bonus. """ bonus = {"speed": 0, "strength": 0, "defense": 0, "health": 0} bonus["speed"] = math.floor(self.fairy_exchanges / 10) for i in range(self.fairy_exchanges): bonus["strength"] += 2 if (i + 1) % 5 == 0 else 1 bonus["defense"] += 2 if (i + 1) % 5 == 0 else 1 bonus["health"] += 3 + math.floor(i / 2) return bonus
[docs]class Profile(BaseModel): """Profile. Args: profile_id (str): Id of profile cute_name (Optional[str]): Cute name of profile members (Dict[str, Members]): Dict of all members in profile. """ profile_id: uuid.UUID cute_name: Optional[str] members: Dict[str, Members] banking: Optional[Dict[str, Any]] community_upgrades: Optional[Dict[str, Any]]