import struct from datetime import datetime from typing import List, Union from .helpers import * from ..const import GameconnectCmd class SaoRequestHeader: def __init__(self, data: bytes) -> None: collection = struct.unpack_from("!HHIIII16sI", data) self.cmd: int = collection[0] self.err_status = collection[1] self.error_type = collection[2] self.vendor_id: int = collection[3] self.game_id: int = collection[4] self.version_id: int = collection[5] self.hash: str = collection[6] self.data_len: str = collection[7] class SaoBaseRequest: def __init__(self, header: SaoRequestHeader, data: bytes) -> None: self.header = header class SaoResponseHeader: def __init__(self, cmd_id: GameconnectCmd) -> None: self.cmd = cmd_id self.err_status = 0 self.error_type = 0 self.vendor_id = 5 self.game_id = 1 self.version_id = 1 self.length = 1 def make(self) -> bytes: return struct.pack("!HHIIIII", self.cmd, self.err_status, self.error_type, self.vendor_id, self.game_id, self.version_id, self.length) class SaoBaseResponse: def __init__(self, cmd_id: Union[GameconnectCmd, int]) -> None: if type(cmd_id) == int: cmd = GameconnectCmd(cmd_id) else: cmd = cmd_id self.header = SaoResponseHeader(cmd) def make(self) -> bytes: return self.header.make() class SaoGenericUserTicketRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 ticket_id = decode_str(data, off) self.ticket_id = ticket_id[0] off += ticket_id[1] user_id = decode_str(data, off) self.user_id = user_id[0] off += user_id[1] class SaoGenericUserRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 self.user_id, new_off = decode_str(data, off) off += new_off class SaoNoopRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) self.dummy = decode_byte(data, 0) class SaoNoopResponse(SaoBaseResponse): def __init__(self, cmd: int) -> None: super().__init__(cmd) self.result = 1 self.length = 5 def make(self) -> bytes: return super().make() + struct.pack("!bI", self.result, 0) class SaoTicketRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 self.user_id, new_off = decode_str(data, off) off += new_off class SaoTicketResponse(SaoBaseResponse): def __init__(self, ticket_id: str = "9") -> None: super().__init__(GameconnectCmd.TICKET_RESPONSE) self.result = "1" self.ticket_id = ticket_id def make(self) -> bytes: return super().make() \ + encode_str(self.result) \ + encode_str(self.ticket_id) class SaoGetMaintenanceInfoResponse(SaoBaseResponse): def __init__(self, maint_start: datetime = datetime.fromtimestamp(0), maint_end: datetime = datetime.fromtimestamp(0)) -> None: super().__init__(GameconnectCmd.GET_MAINTENANCE_INFO_RESPONSE) self.result = 1 self.maint_begin = maint_start self.maint_end = maint_end def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_date_str(self.maint_begin) \ + encode_date_str(self.maint_end) class SaoCommonAcCabinetBootNotificationRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 self.cabinet_type = decode_byte(data, off) off += BYTE_OFF self.net_id, new_off = decode_str(data, off) off += new_off self.place_id, new_off = decode_str(data, off) off += new_off self.store_id, new_off = decode_str(data, off) off += new_off self.store_name, new_off = decode_str(data, off) off += new_off self.serial_no, new_off = decode_str(data, off) off += new_off self.current_version_app_id = decode_int(data, off) off += INT_OFF self.current_master_data_version = decode_int(data, off) off += INT_OFF class SaoMasterDataVersionCheckRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) self.current_data_version = decode_int(data, 0) class SaoMasterDataVersionCheckResponse(SaoBaseResponse): def __init__(self, current_ver: int, game_ver: int) -> None: super().__init__(GameconnectCmd.MASTER_DATA_VERSION_CHECK_RESPONSE) self.result = 1 self.update_flag = 1 if game_ver != current_ver else 0 self.data_version = current_ver def make(self) -> bytes: resp_data = encode_byte(self.result) resp_data += encode_byte(self.update_flag) resp_data += encode_int(self.data_version) return super().make() + resp_data class SaoGetAppVersionsResponse(SaoBaseResponse): def __init__(self) -> None: super().__init__(GameconnectCmd.GET_APP_VERSIONS_RESPONSE) self.result = 1 self.data_list: List[AppVersionData] = [] def make(self) -> bytes: ret = encode_byte(self.result) ret += encode_arr_cls(self.data_list) return super().make() + ret class SaoPayingPlayStartRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 self.paying_user_id, new_off = decode_str(data, off) off += new_off self.game_sub_id, new_off = decode_str(data, off) off += new_off self.net_id, new_off = decode_str(data, off) off += new_off self.place_id, new_off = decode_str(data, off) off += new_off self.store_id, new_off = decode_str(data, off) off += new_off self.store_name, new_off = decode_str(data, off) off += new_off self.serial_no, new_off = decode_str(data, off) off += new_off class SaoPayingPlayStartResponse(SaoBaseResponse): def __init__(self, session_id: str = "1") -> None: super().__init__(GameconnectCmd.PAYING_PLAY_START_RESPONSE) self.result = 1 self.paying_session_id = session_id def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_str(self.paying_session_id) class SaoPayingPlayEndRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 self.paying_session_id, new_off = decode_str(data, off) off += new_off self.paying_user_id, new_off = decode_str(data, off) off += new_off self.net_id, new_off = decode_str(data, off) off += new_off self.place_id, new_off = decode_str(data, off) off += new_off self.played_date, new_off = decode_str(data, off) off += new_off self.played_type = decode_short(data, off) off += SHORT_OFF self.played_amount = decode_short(data, off) off += SHORT_OFF self.store_id, new_off = decode_str(data, off) off += new_off self.store_name, new_off = decode_str(data, off) off += new_off self.serial_no, new_off = decode_str(data, off) off += new_off class SaoGetAuthCardDataRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 self.cabinet_type = decode_byte(data, off) off += BYTE_OFF self.auth_type = AuthType(decode_byte(data, off)) # 0 is unknown, 1 is card (banapass, aime, AICC), 2 is moble off += BYTE_OFF store_id = decode_str(data, off) self.store_id = store_id[0] off += store_id[1] serial_no = decode_str(data, off) self.serial_no = serial_no[0] off += serial_no[1] access_code = decode_str(data, off) self.access_code = access_code[0] off += access_code[1] chip_id = decode_str(data, off) self.chip_id = chip_id[0] off += chip_id[1] class SaoGetAuthCardDataResponse(SaoBaseResponse): def __init__(self, nicknname: str, user_id: int) -> None: super().__init__(GameconnectCmd.GET_AUTH_CARD_DATA_RESPONSE) self.result = 1 self.unused_card_flag = "" self.first_play_flag = 0 self.tutorial_complete_flag = 1 self.nick_name = nicknname self.personal_id = str(user_id) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_str(self.unused_card_flag) \ + encode_byte(self.first_play_flag) \ + encode_byte(self.tutorial_complete_flag) \ + encode_str(self.nick_name) \ + encode_str(self.personal_id) class SaoGetAccessCodeByKeitaiRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 self.cabinet_type = decode_byte(data, off) off += BYTE_OFF self.auth_type = AuthType(decode_byte(data, off)) # 0 is unknown, 1 is card (banapass, aime, AICC), 2 is moble off += BYTE_OFF self.store_id, new_off = decode_str(data, off) off += new_off self.serial_no, new_off = decode_str(data, off) off += new_off self.chip_id, new_off = decode_str(data, off) off += new_off class SaoGetAccessCodeByKeitaiResponse(SaoBaseResponse): def __init__(self, access_code: str) -> None: super().__init__(GameconnectCmd.GET_ACCESS_CODE_BY_KEITAI_RESPONSE) self.result = 1 self.access_code = access_code self.ba_id_flag = 1 def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_str(self.access_code) \ + encode_byte(self.ba_id_flag) class SaoCheckAcLoginBonusResponse(SaoBaseResponse): def __init__(self) -> None: super().__init__(GameconnectCmd.CHECK_AC_LOGIN_BONUS_RESPONSE) self.result = 1 self.reward_get_flag = 1 self.get_ac_login_bonus_id_list: List[int] = [] # "2020年7月9日~(アニメ&リコリス記念)" def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_byte(self.reward_get_flag) \ + encode_arr_num(self.get_ac_login_bonus_id_list, INT_OFF) \ class SaoGetQuestSceneMultiPlayPhotonServerResponse(SaoBaseResponse): def __init__(self, app_id: str = "7df3a2f6-d69d-4073-aafe-810ee61e1cea") -> None: super().__init__(GameconnectCmd.GET_QUEST_SCENE_MULTI_PLAY_PHOTON_SERVER_RESPONSE) self.result = 1 self.application_id = app_id def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_str(self.application_id) class SaoLoginRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 self.cabinet_type = decode_byte(data, off) off += BYTE_OFF self.auth_type = AuthType(decode_byte(data, off)) # 0 is unknown, 1 is card (banapass, aime, AICC), 2 is moble off += BYTE_OFF store_id = decode_str(data, off) self.store_id = store_id[0] off += store_id[1] store_name = decode_str(data, off) self.store_name = store_name[0] off += store_name[1] serial_no = decode_str(data, off) self.serial_no = serial_no[0] off += serial_no[1] access_code = decode_str(data, off) self.access_code = access_code[0] off += access_code[1] chip_id = decode_str(data, off) self.chip_id = chip_id[0] off += chip_id[1] self.free_ticket_distribution_target_flag = decode_byte(data, off) off += BYTE_OFF class SaoLoginResponse(SaoBaseResponse): def __init__(self, user_id: int, first_play: bool = False, logged_in_today: bool = True) -> None: super().__init__(GameconnectCmd.LOGIN_RESPONSE) self.result = 1 self.user_id = str(user_id) self.first_play_flag = first_play self.grantable_free_ticket_flag = not logged_in_today self.login_reward_vp = 0 if logged_in_today else 100 self.today_paying_flag = logged_in_today def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_str(self.user_id) \ + encode_byte(self.first_play_flag) \ + encode_byte(self.grantable_free_ticket_flag) \ + encode_short(self.login_reward_vp) \ + encode_byte(self.today_paying_flag) class SaoLogoutRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 self.ticket_id, new_off = decode_str(data, off) off += new_off self.user_id, new_off = decode_str(data, off) off += new_off self.cabinet_type = decode_byte(data, off) # 0 satalite, 1 terminal off += BYTE_OFF self.remaining_ticket_num = decode_short(data, off) off += SHORT_OFF class SaoPurchaseTicketRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 self.ticket_id, new_off = decode_str(data, off) off += new_off self.user_id, new_off = decode_str(data, off) off += new_off self.discount_type = decode_byte(data, off) off += BYTE_OFF self.purchase_num = decode_byte(data, off) off += BYTE_OFF class SaoConsumeTicketRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 self.ticket_id, new_off = decode_str(data, off) off += new_off self.user_id, new_off = decode_str(data, off) off += new_off self.discount_type = decode_byte(data, off) off += BYTE_OFF self.act_type = ActTypeConsumeTicket(decode_byte(data, off)) off += BYTE_OFF self.consume_num = decode_byte(data, off) off += BYTE_OFF class SaoAddCreditRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 self.ticket_id, new_off = decode_str(data, off) off += new_off self.user_id, new_off = decode_str(data, off) off += new_off self.cabinet_type = decode_byte(data, off) off += BYTE_OFF self.add_num = decode_byte(data, off) off += BYTE_OFF class SaoConsumeCreditRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 self.ticket_id, new_off = decode_str(data, off) off += new_off self.user_id, new_off = decode_str(data, off) off += new_off self.store_id, new_off = decode_str(data, off) off += new_off self.cabinet_type = decode_byte(data, off) off += BYTE_OFF self.act_type = ActTypeConsumeCredit(decode_byte(data, off)) off += BYTE_OFF self.consume_num = decode_byte(data, off) off += BYTE_OFF class SaoPurchaseTicketGuestRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 self.store_id, new_off = decode_str(data, off) off += new_off self.serial_no, new_off = decode_str(data, off) off += new_off self.cabinet_type = decode_byte(data, off) off += BYTE_OFF self.discount_type = decode_byte(data, off) off += BYTE_OFF self.purchase_num = decode_byte(data, off) off += BYTE_OFF class SaoConsumeTicketGuestRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 self.store_id, new_off = decode_str(data, off) off += new_off self.serial_no, new_off = decode_str(data, off) off += new_off self.cabinet_type = decode_byte(data, off) off += BYTE_OFF self.discount_type = decode_byte(data, off) off += BYTE_OFF self.act_type = ActTypeConsumeTicket(decode_byte(data, off)) off += BYTE_OFF self.consume_num = decode_byte(data, off) off += BYTE_OFF class SaoAddCreditGuestRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 self.store_id, new_off = decode_str(data, off) off += new_off self.serial_no, new_off = decode_str(data, off) off += new_off self.cabinet_type = decode_byte(data, off) off += BYTE_OFF self.add_num = decode_byte(data, off) off += BYTE_OFF class SaoConsumeCreditGuestRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 self.store_id, new_off = decode_str(data, off) off += new_off self.serial_no, new_off = decode_str(data, off) off += new_off self.cabinet_type = decode_byte(data, off) off += BYTE_OFF self.act_type = ActTypeConsumeCredit(decode_byte(data, off)) off += BYTE_OFF self.consume_num = decode_byte(data, off) off += BYTE_OFF class SaoCheckComebackEventResponse(SaoBaseResponse): def __init__(self) -> None: super().__init__(GameconnectCmd.CHECK_COMEBACK_EVENT_RESPONSE) self.result = 1 self.get_flag = 1 self.get_comeback_event_id_list: List[int] = [] # Array of events apparently def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_byte(self.get_flag) \ + encode_arr_num(self.get_comeback_event_id_list, INT_OFF) class SaoChangeMyStoreRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 self.ticket_id, new_off = decode_str(data, off) off += new_off self.user_id, new_off = decode_str(data, off) off += new_off self.store_id, new_off = decode_str(data, off) off += new_off class SaoCheckTitleGetDecisionRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 self.ticket_id, new_offset = decode_str(data, off) off += new_offset self.user_id, new_offset = decode_str(data, off) off += new_offset class SaoCheckTitleGetDecisionResponse(SaoBaseResponse): def __init__(self) -> None: super().__init__(GameconnectCmd.CHECK_TITLE_GET_DECISION_RESPONSE) self.result = 1 self.get_title_id_list: List[int] = [] def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_num(self.get_title_id_list, INT_OFF) class SaoGetUserBasicDataRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 self.user_id, new_off = decode_str(data, off) off += new_off class SaoGetUserBasicDataResponse(SaoBaseResponse): def __init__(self, profile_data) -> None: super().__init__(GameconnectCmd.GET_USER_BASIC_DATA_RESPONSE) self.result = 1 self.user_basic_data: List[UserBasicData] = [UserBasicData.from_args(profile_data)] def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.user_basic_data) class SaoGetVpGashaTicketDataListRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 self.user_id, new_off = decode_str(data, off) off += new_off class SaoGetVpGashaTicketDataListResponse(SaoBaseResponse): def __init__(self) -> None: super().__init__(GameconnectCmd.GET_VP_GASHA_TICKET_DATA_LIST_RESPONSE) self.result = 1 self.vp_gasha_ticket_data_list: List[VpGashaTicketData] = [] def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.vp_gasha_ticket_data_list) class SaoChangeTitleRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 self.ticket_id, new_off = decode_str(data, off) off += new_off self.user_id, new_off = decode_str(data, off) off += new_off self.user_title_id, new_off = decode_str(data, off) off += new_off class SaoGetPresentBoxNumResponse(SaoBaseResponse): def __init__(self, num_box: int = 0, max_num: int = 0) -> None: super().__init__(GameconnectCmd.GET_PRESENT_BOX_NUM_RESPONSE) self.result = 1 self.num = num_box self.max_num = max_num def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_short(self.num) \ + encode_short(self.max_num) class SaoGetHeroLogUserDataListResponse(SaoBaseResponse): def __init__(self) -> None: super().__init__(GameconnectCmd.GET_HERO_LOG_USER_DATA_LIST_RESPONSE) self.result = 1 self.hero_log_user_data_list: List[HeroLogUserData] = [] def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.hero_log_user_data_list) class SaoGetEquipmentUserDataListResponse(SaoBaseResponse): def __init__(self) -> None: super().__init__(GameconnectCmd.GET_EQUIPMENT_USER_DATA_LIST_RESPONSE) self.result = 1 self.equipment_user_data_list: List[EquipmentUserData] = [] def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.equipment_user_data_list) class SaoGetItemUserDataListResponse(SaoBaseResponse): def __init__(self, item_data: List[Dict] = []) -> None: super().__init__(GameconnectCmd.GET_ITEM_USER_DATA_LIST_RESPONSE) self.result = 1 self.item_user_data_list: List[ItemUserData] = [] if item_data: for item in item_data: self.item_user_data_list.append(ItemUserData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.item_user_data_list) class SaoGetSupportLogUserDataListResponse(SaoBaseResponse): def __init__(self) -> None: super().__init__(GameconnectCmd.GET_SUPPORT_LOG_USER_DATA_LIST_RESPONSE) self.result = 1 self.support_log_user_data_list: List[SupportLogUserData] = [] def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.support_log_user_data_list) class SaoGetTitleUserDataListResponse(SaoBaseResponse): def __init__(self, user_id: str, titles: List[int]) -> None: super().__init__(GameconnectCmd.GET_TITLE_USER_DATA_LIST_RESPONSE) self.result = 1 self.title_user_data_list: List[TitleUserData] = [] if titles: for x in titles: self.title_user_data_list.append(TitleUserData.from_args(user_id + str(x), x)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.title_user_data_list) class SaoGetEpisodeAppendDataListResponse(SaoBaseResponse): def __init__(self) -> None: super().__init__(GameconnectCmd.GET_EPISODE_APPEND_DATA_LIST_RESPONSE) self.result = 1 self.episode_append_data_list: List[EpisodeAppendUserData] = [] def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.episode_append_data_list) class SaoGetEventItemDataListResponse(SaoBaseResponse): def __init__(self) -> None: super().__init__(GameconnectCmd.GET_EVENT_ITEM_DATA_LIST_RESPONSE) self.result = 1 self.event_item_data_list: List[EventItemUserData] = [] def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.event_item_data_list) class SaoGetGashaMedalUserDataListResponse(SaoBaseResponse): def __init__(self) -> None: super().__init__(GameconnectCmd.GET_GASHA_MEDAL_USER_DATA_LIST_RESPONSE) self.result = 1 self.data_list: List[GashaMedalUserData] = [] def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetPartyDataListResponse(SaoBaseResponse): def __init__(self) -> None: super().__init__(GameconnectCmd.GET_PARTY_DATA_LIST_RESPONSE) self.result = 1 self.party_data_list: List[PartyData] = [] def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.party_data_list) class SaoGetSupportLogPartyDataListResponse(SaoBaseResponse): def __init__(self) -> None: super().__init__(GameconnectCmd.GET_SUPPORT_LOG_PARTY_DATA_LIST_RESPONSE) self.result = 1 self.support_log_party_data_list: List[SupportLogPartyData] = [] def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.support_log_party_data_list) class SaoGetQuestScenePrevScanProfileCardResponse(SaoBaseResponse): def __init__(self) -> None: super().__init__(GameconnectCmd.GET_QUEST_SCENE_PREV_SCAN_PROFILE_CARD_RESPONSE) self.result = 1 self.profile_card_data: List[ReadProfileCardData] = [] def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.profile_card_data) class SaoGetResourcePathInfoResponse(SaoBaseResponse): def __init__(self, base_url: str) -> None: super().__init__(GameconnectCmd.GET_RESOURCE_PATH_INFO_RESPONSE) self.result = 1 self.resource_base_url = base_url self.gasha_base_dir = "gasha" self.ad_base_dir = "ad" self.event_base_dir = "event" def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_str(self.resource_base_url) \ + encode_str(self.gasha_base_dir) \ + encode_str(self.ad_base_dir) \ + encode_str(self.event_base_dir) class SaoValidationErrorNotificationRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 self.user_id, new_off = decode_str(data, off) off += new_off self.cabinet_type = decode_byte(data, off) off += BYTE_OFF self.net_id, new_off = decode_str(data, off) off += new_off self.place_id, new_off = decode_str(data, off) off += new_off self.store_id, new_off = decode_str(data, off) off += new_off self.store_name, new_off = decode_str(data, off) off += new_off self.serial_no, new_off = decode_str(data, off) off += new_off self.send_protocol_name, new_off = decode_str(data, off) off += new_off self.send_data_to_fraud_value, new_off = decode_str(data, off) off += new_off self.send_data_to_modification_value, new_off = decode_str(data, off) off += new_off class SaoGetBeginnerMissionUserDataRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 self.user_id, new_off = decode_str(data, off) off += new_off self.beginner_mission_id = decode_int(data, off) off += INT_OFF class SaoGetBeginnerMissionUserDataResponse(SaoBaseResponse): def __init__(self) -> None: super().__init__(GameconnectCmd.GET_BEGINNER_MISSION_USER_DATA_RESPONSE) self.result = 1 self.data: List[BeginnerMissionUserData] = [BeginnerMissionUserData.from_args(datetime.now())] def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data) class SaoMatchingErrorNotificationRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 self.cabinet_type = decode_byte(data, off) off += BYTE_OFF self.net_id, new_off = decode_str(data, off) off += new_off self.place_id, new_off = decode_str(data, off) off += new_off self.store_id, new_off = decode_str(data, off) off += new_off self.store_name, new_off = decode_str(data, off) off += new_off self.serial_no, new_off = decode_str(data, off) off += new_off self.matching_error_data_list: List[MatchingErrorData] self.matching_error_data_list, new_off = decode_arr_cls(data, off, MatchingErrorData) class SaoPowerCuttingReturnNotification(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 self.user_id, new_off = decode_str(data, off) off += new_off self.cabinet_type = decode_byte(data, off) off += BYTE_OFF self.net_id, new_off = decode_str(data, off) off += new_off self.place_id, new_off = decode_str(data, off) off += new_off self.store_id, new_off = decode_str(data, off) off += new_off self.store_name, new_off = decode_str(data, off) off += new_off self.serial_no, new_off = decode_str(data, off) off += new_off self.last_act_type = decode_byte(data, off) off += BYTE_OFF self.remaining_ticket_num = decode_short(data, off) off += SHORT_OFF self.remaining_credit_num = decode_short(data, off) off += SHORT_OFF class SaoEpisodePlayStartRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 self.ticket_id, new_off = decode_str(data, off) off += new_off self.user_id, new_off = decode_str(data, off) off += new_off self.episode_id = decode_int(data, off) off += INT_OFF self.play_mode = decode_byte(data, off) off += BYTE_OFF self.play_start_request_data: List[QuestScenePlayStartRequestData] = [] self.play_start_request_data, new_off = decode_arr_cls(data, off, QuestScenePlayStartRequestData) off += new_off self.multi_play_start_request_data: List[QuestSceneMultiPlayStartRequestData] = [] self.multi_play_start_request_data, new_off = decode_arr_cls(data, off, QuestSceneMultiPlayStartRequestData) off += new_off class SaoEpisodePlayStartResponse(SaoBaseResponse): def __init__(self) -> None: super().__init__(GameconnectCmd.EPISODE_PLAY_START_RESPONSE) self.result = 1 self.play_start_response_data: List[QuestScenePlayStartResponseData] = [] self.multi_play_start_response_data: List[QuestSceneMultiPlayStartResponseData] = [] def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.play_start_response_data) \ + encode_arr_cls(self.multi_play_start_response_data) class SaoEpisodePlayEndRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 self.ticket_id, new_off = decode_str(data, off) off += new_off self.user_id, new_off = decode_str(data, off) off += new_off self.episode_id = decode_int(data, off) off += INT_OFF self.play_end_request_data: List[QuestScenePlayEndRequestData] = [] self.play_end_request_data, new_off = decode_arr_cls(data, off, QuestScenePlayEndRequestData) off += new_off self.multi_play_end_request_data: List[QuestSceneMultiPlayEndRequestData] = [] self.multi_play_end_request_data, new_off = decode_arr_cls(data, off, QuestSceneMultiPlayEndRequestData) off += new_off class SaoEpisodePlayEndResponse(SaoBaseResponse): def __init__(self) -> None: super().__init__(GameconnectCmd.EPISODE_PLAY_END_RESPONSE) self.result = 1 self.play_end_response_data: List[QuestScenePlayEndResponseData] = [QuestScenePlayEndResponseData.from_args()] self.multi_play_end_response_data: List[QuestSceneMultiPlayEndResponseData] = [QuestSceneMultiPlayEndResponseData.from_args()] def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.play_end_response_data) \ + encode_arr_cls(self.multi_play_end_response_data) class SaoTrialTowerPlayStartRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 ticket_id = decode_str(data, off) self.ticket_id = ticket_id[0] off += ticket_id[1] user_id = decode_str(data, off) self.user_id = user_id[0] off += user_id[1] self.trial_tower_id = decode_int(data, off) off += INT_OFF self.play_mode = decode_byte(data, off) off += BYTE_OFF self.play_start_request_data_count = decode_int(data, off) off += INT_OFF self.play_start_request_data: List[PlayStartRequestData] = [] for _ in range(self.play_start_request_data_count): tmp = PlayStartRequestData(data, off) self.play_start_request_data.append(tmp) off += tmp.get_size() self.multi_play_start_request_data_count = decode_int(data, off) off += INT_OFF self.multi_play_start_request_data: List[MultiPlayStartRequestData] = [] for _ in range(self.multi_play_start_request_data_count): tmp = MultiPlayStartRequestData(data, off) off += tmp.get_size() self.multi_play_start_request_data.append(tmp) class SaoTrialTowerPlayStartResponse(SaoBaseResponse): def __init__(self, sesh_id: int, nickname: str) -> None: super().__init__(GameconnectCmd.TRIAL_TOWER_PLAY_START_RESPONSE) self.result = 1 self.play_start_response_data: List[QuestScenePlayStartResponseData] = [QuestScenePlayStartResponseData.from_args(sesh_id, nickname)] self.multi_play_start_response_data: List[QuestSceneMultiPlayStartResponseData] = [QuestSceneMultiPlayStartResponseData.from_args()] def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.play_start_response_data) \ + encode_arr_cls(self.multi_play_start_response_data) class SaoTrialTowerPlayEndRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 self.ticket_id, new_off = decode_str(data, off) off += new_off self.user_id, new_off = decode_str(data, off) off += new_off self.trial_tower_id = decode_int(data, off) off += INT_OFF self.play_end_request_data: List[QuestScenePlayEndRequestData] = [] self.play_end_request_data, new_off = decode_arr_cls(data, off, QuestScenePlayEndRequestData) off += new_off self.multi_play_end_request_data: List[QuestSceneMultiPlayEndRequestData] self.multi_play_end_request_data, new_off = decode_arr_cls(data, off, QuestSceneMultiPlayEndRequestData) off += new_off class SaoTrialTowerPlayEndResponse(SaoBaseResponse): def __init__(self) -> None: super().__init__(GameconnectCmd.TRIAL_TOWER_PLAY_END_RESPONSE) self.result = 1 self.play_end_response_data: List[QuestScenePlayEndResponseData] = [QuestScenePlayEndResponseData.from_args()] self.multi_play_end_response_data: List[QuestSceneMultiPlayEndResponseData] = [QuestSceneMultiPlayEndResponseData.from_args()] self.trial_tower_play_end_updated_notification_data: List[QuestTrialTowerPlayEndUpdatedNotificationData] = [QuestTrialTowerPlayEndUpdatedNotificationData.from_args()] self.treasure_hunt_play_end_response_data: List[QuestTreasureHuntPlayEndResponseData] = [QuestTreasureHuntPlayEndResponseData.from_args()] def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.play_end_response_data) \ + encode_arr_cls(self.multi_play_end_response_data) \ + encode_arr_cls(self.trial_tower_play_end_updated_notification_data) \ + encode_arr_cls(self.treasure_hunt_play_end_response_data) class SaoEpisodePlayEndUnanalyzedLogFixedRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 ticket_id = decode_str(data, off) self.ticket_id = ticket_id[0] off += ticket_id[1] user_id = decode_str(data, off) self.user_id = user_id[0] off += user_id[1] self.episode_id = decode_int(data, off) off += INT_OFF self.rarity_up_exec_flag = decode_byte(data, off) off += BYTE_OFF class SaoEpisodePlayEndUnanalyzedLogFixedResponse(SaoBaseResponse): def __init__(self) -> None: super().__init__(GameconnectCmd.EPISODE_PLAY_END_UNANALYZED_LOG_FIXED_RESPONSE) self.result = 1 self.play_end_unanalyzed_log_reward_data_list: List[QuestScenePlayEndUnanalyzedLogRewardData] = [] def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.play_end_unanalyzed_log_reward_data_list) class SaoGetQuestSceneUserDataListResponse(SaoBaseResponse): def __init__(self) -> None: super().__init__(GameconnectCmd.GET_QUEST_SCENE_USER_DATA_LIST_RESPONSE) self.result = 1 self.quest_scene_user_data_list: List[QuestSceneUserData] = [] def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.quest_scene_user_data_list) class SaoCheckYuiMedalGetConditionRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 self.ticket_id, new_off = decode_str(data, off) off += new_off self.user_id, new_off = decode_str(data, off) off += new_off class SaoCheckYuiMedalGetConditionResponse(SaoBaseResponse): def __init__(self, elapsed_days: int = 0, get_num: int = 0) -> None: super().__init__(GameconnectCmd.CHECK_YUI_MEDAL_GET_CONDITION_RESPONSE) self.result = 1 self.get_flag = int(get_num > 0) self.elapsed_days = elapsed_days self.get_yui_medal_num = get_num def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_byte(self.get_flag) \ + encode_short(self.elapsed_days) \ + encode_short(self.get_yui_medal_num) \ class SaoGetYuiMedalBonusUserDataRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 self.user_id, new_off = decode_str(data, off) off += new_off self.yui_medal_bonus_id = decode_int(data, off) off += INT_OFF class SaoGetYuiMedalBonusUserDataResponse(SaoBaseResponse): def __init__(self, elapsed_days: int = 0, loop_num: int = 0) -> None: super().__init__(GameconnectCmd.GET_YUI_MEDAL_BONUS_USER_DATA_RESPONSE) self.result = 1 self.data: List[YuiMedalBonusUserData] = [YuiMedalBonusUserData.from_args(elapsed_days, loop_num)] def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data) class SaoCheckProfileCardUsedRewardRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 self.ticket_id, new_off = decode_str(data, off) off += new_off self.user_id, new_off = decode_str(data, off) off += new_off class SaoCheckProfileCardUsedRewardResponse(SaoBaseResponse): def __init__(self) -> None: super().__init__(GameconnectCmd.CHECK_PROFILE_CARD_USED_REWARD_RESPONSE) self.result = 1 self.get_flag = 0 self.used_num = 0 self.get_vp = 0 def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_byte(self.get_flag) \ + encode_int(self.used_num) \ + encode_int(self.get_vp) class SaoDisposalResourceRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 self.ticket_id, new_off = decode_str(data, off) off += new_off self.user_id, new_off = decode_str(data, off) off += new_off self.disposal_common_reward_user_data_list: List[CommonRewardUserData] = [] self.disposal_common_reward_user_data_list, new_off = decode_arr_cls(data, off, CommonRewardUserData) off += new_off class SaoDisposalResourceResponse(SaoBaseResponse): def __init__(self, get_col: int = 0) -> None: super().__init__(GameconnectCmd.DISPOSAL_RESOURCE_RESPONSE) self.result = 1 self.get_col = get_col def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_int(self.get_col) class SaoSynthesizeEnhancementHeroLogRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 self.ticket_id, new_off = decode_str(data, off) off += new_off self.user_id, new_off = decode_str(data, off) off += new_off self.origin_user_hero_log_id, new_off = decode_str(data, off) off += new_off self.material_common_reward_user_data_list: List[CommonRewardUserData] = [] self.material_common_reward_user_data_list, new_off = decode_arr_cls(data, off, CommonRewardUserData) off += new_off class SaoSynthesizeEnhancementHeroLogResponse(SaoBaseResponse): def __init__(self) -> None: super().__init__(GameconnectCmd.SYNTHESIZE_ENHANCEMENT_HERO_LOG_RESPONSE) self.result = 1 self.after_hero_log_user_data: List[HeroLogUserData] = [] def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.after_hero_log_user_data) class SaoSynthesizeEnhancementEquipmentRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 self.ticket_id, new_off = decode_str(data, off) off += new_off self.user_id, new_off = decode_str(data, off) off += new_off self.origin_user_equipment_id, new_off = decode_str(data, off) off += new_off self.material_common_reward_user_data_list: List[CommonRewardUserData] = [] self.material_common_reward_user_data_list, new_off = decode_arr_cls(data, off, CommonRewardUserData) off += new_off class SaoSynthesizeEnhancementEquipmentResponse(SaoBaseResponse): def __init__(self) -> None: super().__init__(GameconnectCmd.SYNTHESIZE_ENHANCEMENT_EQUIPMENT_RESPONSE) self.result = 1 self.after_equipment_user_data: List[EquipmentUserData] = [] def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.after_equipment_user_data) class SaoGetAdventureExecUserDataResponse(SaoBaseResponse): def __init__(self) -> None: super().__init__(GameconnectCmd.GET_ADVENTURE_EXEC_USER_DATA_RESPONSE) self.result = 1 self.adventure_exec_user_data: List[AdventureExecUserData] = [] def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.adventure_exec_user_data) class SaoGetChatSideStoryUserDataListResponse(SaoBaseResponse): def __init__(self) -> None: super().__init__(GameconnectCmd.GET_CHAT_SIDE_STORY_USER_DATA_LIST_RESPONSE) self.result = 1 self.chat_side_story_user_data_list: List[ChatSideStoryUserData] = [] def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.chat_side_story_user_data_list) class SaoBeginnerMissionAdConfirmNotificationRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 self.ticket_id, new_off = decode_str(data, off) off += new_off self.user_id, new_off = decode_str(data, off) off += new_off self.beginner_mission_id = decode_int(data, off) off += INT_OFF class SaoGetDefragMatchBasicDataRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 self.user_id, new_off = decode_str(data, off) off += new_off self.defrag_match_id = decode_int(data, off) off += INT_OFF class SaoGetDefragMatchBasicDataResponse(SaoBaseResponse): def __init__(self) -> None: super().__init__(GameconnectCmd.GET_DEFRAG_MATCH_BASIC_DATA_RESPONSE) self.result = 1 self.defrag_match_basic_user_data: List[DefragMatchBasicUserData] = [] def make(self) -> bytes: ret = encode_byte(self.result) ret += encode_arr_cls(self.defrag_match_basic_user_data) return super().make() + ret class SaoGetDefragMatchRankingUserDataRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 self.user_id, new_off = decode_str(data, off) off += new_off self.defrag_match_id = decode_int(data, off) off += INT_OFF class SaoGetDefragMatchRankingUserDataResponse(SaoBaseResponse): def __init__(self, profile: Dict) -> None: super().__init__(GameconnectCmd.GET_DEFRAG_MATCH_RANKING_USER_DATA_RESPONSE) self.result = 1 self.ranking_user_data: List[DefragMatchRankingUserData] = [DefragMatchRankingUserData.from_args(profile)] def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.ranking_user_data) class SaoGetDefragMatchLeaguePointRankingListRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 self.defrag_match_id = decode_int(data, off) off += INT_OFF self.get_rank_start_num = decode_short(data, off) off += SHORT_OFF self.get_rank_end_num = decode_short(data, off) off += SHORT_OFF class SaoGetDefragMatchLeaguePointRankingListResponse(SaoBaseResponse): def __init__(self) -> None: super().__init__(GameconnectCmd.GET_DEFRAG_MATCH_LEAGUE_POINT_RANKING_LIST_RESPONSE) self.result = 1 self.ranking_data_list: List[DefragMatchLeaguePointRankingData] = [] def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.ranking_data_list) class SaoGetDefragMatchLeagueScoreRankingListRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 self.defrag_match_id = decode_int(data, off) off += INT_OFF self.get_rank_start_num = decode_short(data, off) off += SHORT_OFF self.get_rank_end_num = decode_short(data, off) off += SHORT_OFF class SaoGetDefragMatchLeagueScoreRankingListResponse(SaoBaseResponse): def __init__(self) -> None: super().__init__(GameconnectCmd.GET_DEFRAG_MATCH_LEAGUE_SCORE_RANKING_LIST_RESPONSE) self.result = 1 self.ranking_user_data: List[DefragMatchLeagueScoreRankingList] = [] def make(self) -> bytes: # create a resp struct resp_data = encode_byte(self.result) resp_data += encode_arr_cls(self.ranking_user_data) return super().make() + resp_data class SaoGetBeginnerMissionProgressesUserDataListRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 self.user_id, new_off = decode_str(data, off) off += new_off self.beginner_mission_id = decode_int(data, off) off += INT_OFF class SaoGetBeginnerMissionProgressesUserDataListResponse(SaoBaseResponse): def __init__(self) -> None: super().__init__(GameconnectCmd.GET_BEGINNER_MISSION_PROGRESSES_USER_DATA_LIST_RESPONSE) self.result = 1 self.data_list: List[BeginnerMissionProgressesUserData] = [] def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetBeginnerMissionSeatProgressesUserDataListRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 self.user_id, new_off = decode_str(data, off) off += new_off self.beginner_mission_id = decode_int(data, off) off += INT_OFF class SaoGetBeginnerMissionSeatProgressesUserDataListResponse(SaoBaseResponse): def __init__(self) -> None: super().__init__(GameconnectCmd.GET_BEGINNER_MISSION_SEAT_PROGRESSES_USER_DATA_LIST_RESPONSE) self.result = 1 self.data_list: List[BeginnerMissionSeatProgressesUserData] = [] def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetLinkedSiteRegCampaignUserDataRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 self.user_id, new_off = decode_str(data, off) off += new_off self.linked_site_reg_campaign_id = decode_int(data, off) off += INT_OFF class SaoGetLinkedSiteRegCampaignUserDataResponse(SaoBaseResponse): def __init__(self) -> None: super().__init__(GameconnectCmd.GET_LINKED_SITE_REG_CAMPAIGN_USER_DATA_RESPONSE) self.result = 1 self.data: List[LinkedSiteRegCampaignUserData] = [] def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data) class SaoGetHeroLogUnitUserDataListResponse(SaoBaseResponse): def __init__(self) -> None: super().__init__(GameconnectCmd.GET_HERO_LOG_UNIT_USER_DATA_LIST_RESPONSE) self.result = 1 self.hero_log_unit_user_data_list: List[HeroLogUnitUserData] = [] def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.hero_log_unit_user_data_list) class SaoGetCharaUnitUserDataListResponse(SaoBaseResponse): def __init__(self) -> None: super().__init__(GameconnectCmd.GET_CHARA_UNIT_USER_DATA_LIST_RESPONSE) self.result = 1 self.chara_unit_user_data_list: List[CharaUnitUserData] = [] def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.chara_unit_user_data_list) class SaoBeginnerMissionAdConfirmNotificationRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 self.ticket_id, new_off = decode_str(data, off) off += new_off self.user_id, new_off = decode_str(data, off) off += new_off self.beginner_mission_id = decode_int(data, off) off += INT_OFF class SaoBnidSerialCodeCheckRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 self.user_id, new_off = decode_str(data, off) off += new_off self.bnid_serial_code, new_off = decode_str(data, off) off += new_off class SaoBnidSerialCodeCheckResponse(SaoBaseResponse): def __init__(self) -> None: super().__init__(GameconnectCmd.BNID_SERIAL_CODE_CHECK_RESPONSE) self.result = 1 self.bnid_item_id = "" self.use_status = 0 def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_str(self.bnid_item_id) \ + encode_byte(self.use_status) class SaoBnidSerialCodeEntryByAppendixCardRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 self.ticket_id, new_off = decode_str(data, off) off += new_off self.user_id, new_off = decode_str(data, off) off += new_off self.bnid_serial_code, new_off = decode_str(data, off) off += new_off class SaoBnidSerialCodeEntryByAppendixCardResponse(SaoBaseResponse): def __init__(self) -> None: super().__init__(GameconnectCmd.BNID_SERIAL_CODE_ENTRY_BY_APPENDIX_CARD_RESPONSE) self.result = 1 self.get_bnid_item_id = "" def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_str(self.get_bnid_item_id) class SaoDischargeProfileCardRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 self.ticket_id, new_off = decode_str(data, off) off += new_off self.user_id, new_off = decode_str(data, off) off += new_off self.hero_log_user_hero_log_id, new_off = decode_str(data, off) off += new_off self.main_weapon_user_equipment_id, new_off = decode_str(data, off) off += new_off self.sub_equipment_user_equipment_id, new_off = decode_str(data, off) off += new_off self.skill_id = decode_int(data, off) off += INT_OFF self.text_chara_message_id = decode_int(data, off) off += INT_OFF self.holographic_flag = decode_byte(data, off) off += BYTE_OFF self.execute_print_type = PrintType(decode_byte(data, off)) off += BYTE_OFF class SaoDischargeProfileCardResponse(SaoBaseResponse): def __init__(self, serial: str) -> None: super().__init__(GameconnectCmd.DISCHARGE_PROFILE_CARD_RESPONSE) self.result = 1 self.profile_card_code = serial def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_str(self.profile_card_code) class SaoDischargeResourceCardRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 self.ticket_id, new_off = decode_str(data, off) off += new_off self.user_id, new_off = decode_str(data, off) off += new_off self.holographic_flag = decode_byte(data, off) off += BYTE_OFF self.execute_print_type = PrintType(decode_byte(data, off)) off += BYTE_OFF self.common_reward_user_data: List[MaterialCommonRewardUserData] = [] # typing lol self.common_reward_user_data, new_off = decode_arr_cls(data, off, MaterialCommonRewardUserData) off += new_off class SaoDischargeResourceCardResponse(SaoBaseResponse): def __init__(self, serial: str) -> None: super().__init__(GameconnectCmd.DISCHARGE_RESOURCE_CARD_RESPONSE) self.result = 1 self.profile_card_code = serial def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_str(self.profile_card_code) class SaoDischargeResourceCardCompleteRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 self.ticket_id, new_off = decode_str(data, off) off += new_off self.user_id, new_off = decode_str(data, off) off += new_off self.resource_card_code, new_off = decode_str(data, off) off += new_off class SaoScanQrQuestProfileCardRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 self.ticket_id, new_off = decode_str(data, off) off += new_off self.user_id, new_off = decode_str(data, off) off += new_off self.profile_card_code, new_off = decode_str(data, off) off += new_off class SaoScanQrQuestProfileCardResponse(SaoBaseResponse): def __init__(self) -> None: super().__init__(GameconnectCmd.SCAN_QR_QUEST_PROFILE_CARD_RESPONSE) self.result = 1 self.profile_card_data: List[ReadProfileCard] = [] def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.profile_card_data) class SaoScanQrShopResourceCardRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 self.ticket_id, new_off = decode_str(data, off) off += new_off self.user_id, new_off = decode_str(data, off) off += new_off self.resource_card_code, new_off = decode_str(data, off) off += new_off class SaoScanQrQuestResourceCardRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 self.ticket_id, new_off = decode_str(data, off) off += new_off self.user_id, new_off = decode_str(data, off) off += new_off self.resource_card_code, new_off = decode_str(data, off) off += new_off class SaoScanQrQuestResourceCardResponse(SaoBaseResponse): def __init__(self, reward_type: int = 0, reward_id: int = 0, is_holo: bool = False) -> None: super().__init__(GameconnectCmd.SCAN_QR_QUEST_RESOURCE_CARD_RESPONSE) self.result = 1 self.common_reward_type = reward_type self.common_reward_id = reward_id self.holographic_flag = is_holo def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_short(self.common_reward_type) \ + encode_int(self.common_reward_id) \ + encode_bool(self.holographic_flag) class SaoConsumeCreditGuestRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 shop_id = decode_str(data, off) self.shop_id = shop_id[0] off += shop_id[1] serial_num = decode_str(data, off) self.serial_num = serial_num[0] off += serial_num[1] self.cab_type = decode_byte(data, off) off += BYTE_OFF self.act_type = ActTypeConsumeCredit(decode_byte(data, off)) off += BYTE_OFF self.consume_num = decode_byte(data, off) off += BYTE_OFF class SaoChangePartyRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 ticket_id = decode_str(data, off) self.ticket_id = ticket_id[0] off += ticket_id[1] user_id = decode_str(data, off) self.user_id = user_id[0] off += user_id[1] self.act_type = ActTypeChangeParty(decode_byte(data, off)) off += BYTE_OFF self.party_data_list: List[PartyData] = [] self.party_data_list, new_off = decode_arr_cls(data, off, PartyData) off += new_off class SaoTrialTowerPlayEndUnanalyzedLogFixedRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 ticket_id = decode_str(data, off) self.ticket_id = ticket_id[0] off += ticket_id[1] user_id = decode_str(data, off) self.user_id = user_id[0] off += user_id[1] self.trial_tower_id = decode_int(data, off) off += INT_OFF self.rarity_up_exec_flag = decode_byte(data, off) off += BYTE_OFF class SaoTrialTowerPlayEndUnanalyzedLogFixedResponse(SaoBaseResponse): def __init__(self) -> None: super().__init__(GameconnectCmd.TRIAL_TOWER_PLAY_END_UNANALYZED_LOG_FIXED_RESPONSE) self.result = 1 self.play_end_unanalyzed_log_reward_data_list: List[QuestScenePlayEndUnanalyzedLogRewardData] = [] def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.play_end_unanalyzed_log_reward_data_list) class SaoGetShopResourceSalesDataListResponse(SaoBaseResponse): def __init__(self) -> None: super().__init__(GameconnectCmd.GET_SHOP_RESOURCE_SALES_DATA_LIST_RESPONSE) self.result = 1 # byte self.shop_resource_sales_data: List[ShopResourceSalesData] = [] def make(self) -> bytes: ret = encode_byte(self.result) ret += encode_arr_cls(self.shop_resource_sales_data) self.header.length = len(ret) return super().make() + ret class SaoPurchaseShopResourceRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 self.ticket_id, new_off = decode_str(data, off) off += new_off self.user_id, new_off = decode_str(data, off) off += new_off self.user_shop_resource_id, new_off = decode_str(data, off) off += new_off class GetYuiMedalShopUserDataListRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 user_id = decode_str(data, off) self.user_id = user_id[0] off += user_id[1] class GetYuiMedalShopUserDataListResponse(SaoBaseResponse): def __init__(self, cmd_id: int) -> None: super().__init__(cmd_id) self.result = 1 # byte self.user_data_list: List[YuiMedalShopUserData] = [] def make(self) -> bytes: ret = encode_byte(self.result) ret += encode_arr_cls(self.user_data_list) self.header.length = len(ret) return super().make() + ret class GetGashaMedalShopUserDataListRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 user_id = decode_str(data, off) self.user_id = user_id[0] off += user_id[1] class GetGashaMedalShopUserDataListResponse(SaoBaseResponse): def __init__(self, cmd_id: int) -> None: super().__init__(cmd_id) self.result = 1 # byte self.data_list: List[GashaMedalShopUserData] = [] def make(self) -> bytes: ret = encode_byte(self.result) ret += encode_arr_cls(self.data_list) self.header.length = len(ret) return super().make() + ret class SaoGiveFreeTicketRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 self.ticket_id, new_off = decode_str(data, off) off += new_off self.user_id, new_off = decode_str(data, off) off += new_off self.give_num = decode_byte(data, off) off += BYTE_OFF class SaoLogoutTicketUnpurchasedRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 self.ticket_id, new_off = decode_str(data, off) off += new_off self.user_id, new_off = decode_str(data, off) off += new_off self.cabinet_type = decode_byte(data, off) off += BYTE_OFF class SaoGetQuestHierarchyProgressDegreesRankingListRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 self.store_id, new_off = decode_str(data, off) off += new_off self.get_rank_start_num = decode_short(data, off) off += SHORT_OFF self.get_rank_end_num = decode_short(data, off) off += SHORT_OFF class SaoGetQuestHierarchyProgressDegreesRankingListResponse(SaoBaseResponse): def __init__(self, cmd_id: int) -> None: super().__init__(cmd_id) self.result = 1 # byte self.quest_hierarchy_progress_degrees_ranking_data_list: List[QuestHierarchyProgressDegreesRankingData] = [] def make(self) -> bytes: ret = encode_byte(self.result) ret += encode_arr_cls(self.quest_hierarchy_progress_degrees_ranking_data_list) return super().make() + ret class SaoGetQuestPopularHeroLogRankingListRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 self.store_id, new_off = decode_str(data, off) off += new_off self.get_rank_start_num = decode_short(data, off) off += SHORT_OFF self.get_rank_end_num = decode_short(data, off) off += SHORT_OFF class SaoGetQuestPopularHeroLogRankingListResponse(SaoBaseResponse): def __init__(self, cmd_id: int) -> None: super().__init__(cmd_id) self.result = 1 # byte self.quest_popular_hero_log_ranking_data_list: List[PopularHeroLogRankingData] = [] def make(self) -> bytes: ret = encode_byte(self.result) ret += encode_arr_cls(self.quest_popular_hero_log_ranking_data_list) return super().make() + ret class SaoGetVariousTutorialDataListResponse(SaoBaseResponse): def __init__(self) -> None: super().__init__(GameconnectCmd.GET_VARIOUS_TUTORIAL_DATA_LIST_RESPONSE) self.result = 1 self.end_tutorial_type_list: List[int] = [] def make(self) -> bytes: ret = encode_byte(self.result) ret += encode_arr_num(self.end_tutorial_type_list, BYTE_OFF) return super().make() + ret class SaoVariousTutorialEndRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 self.ticket_id, new_off = decode_str(data, off) off += new_off self.user_id, new_off = decode_str(data, off) off += new_off self.tutorial_type = decode_byte(data, off) off += BYTE_OFF class SaoGetMExTowersRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 self.ex_tower_id_list, new_off = decode_arr_num(data, off, INT_OFF) off += new_off class SaoGetMExTowerQuestsRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 self.ex_tower_id_list, new_off = decode_arr_num(data, off, INT_OFF) off += new_off class SaoGetMChatEventStoriesRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 self.event_id_list, new_off = decode_arr_num(data, off, INT_OFF) off += new_off class SaoGetMTreasureHuntsRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 self.treasure_hunt_id_list, new_off = decode_arr_num(data, off, INT_OFF) off += new_off class SaoGetMTreasureHuntWholeTasksRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 self.treasure_hunt_id_list, new_off = decode_arr_num(data, off, INT_OFF) off += new_off class SaoGetMTreasureHuntIndividualTasksRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 self.treasure_hunt_id_list, new_off = decode_arr_num(data, off, INT_OFF) off += new_off class SaoGetMTreasureHuntSpecialEffectsRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 self.treasure_hunt_id_list, new_off = decode_arr_num(data, off, INT_OFF) off += new_off class SaoGetMTreasureHuntEventPointRewardCommonRewardsRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 self.treasure_hunt_id_list, new_off = decode_arr_num(data, off, INT_OFF) off += new_off class SaoGetMTreasureHuntEventPointRewardTitlesRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 self.treasure_hunt_id_list, new_off = decode_arr_num(data, off, INT_OFF) off += new_off class SaoGetMDefragMatchesRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 self.defrag_match_id_list, new_off = decode_arr_num(data, off, INT_OFF) off += new_off class SaoGetMDefragMatchSeedRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 self.defrag_match_id_list, new_off = decode_arr_num(data, off, INT_OFF) off += new_off class SaoGetMDefragMatchSpecialEffectsRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 self.defrag_match_id_list, new_off = decode_arr_num(data, off, INT_OFF) off += new_off class SaoGetMDefragMatchGradesRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 self.defrag_match_id_list, new_off = decode_arr_num(data, off, INT_OFF) off += new_off class SaoGetMDefragMatchPeriodBonusesRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 self.defrag_match_id_list, new_off = decode_arr_num(data, off, INT_OFF) off += new_off class SaoGetMDefragMatchRandomBonusTablesRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 self.defrag_match_id_list, new_off = decode_arr_num(data, off, INT_OFF) off += new_off class SaoGetMDefragMatchRareDropsRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 self.defrag_match_id_list, new_off = decode_arr_num(data, off, INT_OFF) off += new_off class SaoGetMEventScenesRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 self.event_id_list, new_off = decode_arr_num(data, off, INT_OFF) off += new_off class SaoGetMBeginnerMissionConditionsRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 self.beginner_mission_id_list, new_off = decode_arr_num(data, off, INT_OFF) off += new_off class SaoGetMBeginnerMissionRewardsRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 self.beginner_mission_id_list, new_off = decode_arr_num(data, off, INT_OFF) off += new_off class SaoGetMBeginnerMissionSeatConditionsRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 self.beginner_mission_id_list, new_off = decode_arr_num(data, off, INT_OFF) off += new_off class SaoGetMBeginnerMissionSeatRewardsRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 self.beginner_mission_id_list, new_off = decode_arr_num(data, off, INT_OFF) off += new_off class SaoGetMEventMonstersRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 self.event_id_list, new_off = decode_arr_num(data, off, INT_OFF) off += new_off class SaoGetMGashaMedalSettingsRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 self.gasha_id_list, new_off = decode_arr_num(data, off, INT_OFF) off += new_off class SaoGetMGashaMedalShopItemsRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 self.gasha_medal_shop_id_list, new_off = decode_arr_num(data, off, INT_OFF) off += new_off class SaoGetMResEarnCampaignApplicationProductsRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 self.res_earn_campaign_application_id_list, new_off = decode_arr_num(data, off, INT_OFF) off += new_off class SaoGetMResEarnCampaignShopItemsRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 self.res_earn_campaign_shop_id_list, new_off = decode_arr_num(data, off, INT_OFF) off += new_off class SaoGetMPlayCampaignRewardsRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 self.play_campaign_id_list, new_off = decode_arr_num(data, off, INT_OFF) off += new_off class SaoGetMLinkedSiteRegCampaignRewardsRequest(SaoBaseRequest): def __init__(self, header: SaoRequestHeader, data: bytes) -> None: super().__init__(header, data) off = 0 self.linked_site_reg_campaign_id_list, new_off = decode_arr_num(data, off, INT_OFF) off += new_off class SaoGetMPlayerRanksResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_PLAYER_RANKS_RESPONSE) self.result = 1 self.data_list: List[PlayerRankData] = [] if data_list: for item in data_list: self.data_list.append(PlayerRankData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMTitlesResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_TITLES_RESPONSE) self.result = 1 self.data_list: List[TitleData] = [] if data_list: for item in data_list: self.data_list.append(TitleData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMFragmentsResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_FRAGMENTS_RESPONSE) self.result = 1 self.data_list: List[FragmentData] = [] if data_list: for item in data_list: self.data_list.append(FragmentData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMRewardTablesResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_REWARD_TABLES_RESPONSE) self.result = 1 self.data_list: List[RewardTableData] = [] if data_list: for item in data_list: self.data_list.append(RewardTableData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMRewardSetsResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_REWARD_SETS_RESPONSE) self.result = 1 self.data_list: List[RewardSetData] = [] if data_list: for item in data_list: self.data_list.append(RewardSetData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMUnanalyzedLogGradesResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_UNANALYZED_LOG_GRADES_RESPONSE) self.result = 1 self.data_list: List[UnanalyzedLogGradeData] = [] if data_list: for item in data_list: self.data_list.append(UnanalyzedLogGradeData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMAppointLeaderParamsResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_APPOINT_LEADER_PARAMS_RESPONSE) self.result = 1 self.data_list: List[AppointLeaderParamData] = [] if data_list: for item in data_list: self.data_list.append(AppointLeaderParamData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMAppointLeaderEffectsResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_APPOINT_LEADER_EFFECTS_RESPONSE) self.result = 1 self.data_list: List[AppointLeaderEffectData] = [] if data_list: for item in data_list: self.data_list.append(AppointLeaderEffectData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMAppointLeaderEffectTypesResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_APPOINT_LEADER_EFFECT_TYPES_RESPONSE) self.result = 1 self.data_list: List[AppointLeaderEffectTypeData] = [] if data_list: for item in data_list: self.data_list.append(AppointLeaderEffectTypeData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMRaritiesResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_RARITIES_RESPONSE) self.result = 1 self.data_list: List[RarityData] = [] if data_list: for item in data_list: self.data_list.append(RarityData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMCompositionEventsResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_COMPOSITION_EVENTS_RESPONSE) self.result = 1 self.data_list: List[CompositionEventData] = [] if data_list: for item in data_list: self.data_list.append(CompositionEventData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMCompositionParamsResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_COMPOSITION_PARAMS_RESPONSE) self.result = 1 self.data_list: List[CompositionParamData] = [] if data_list: for item in data_list: self.data_list.append(CompositionParamData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMGamePlayPricesResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_GAME_PLAY_PRICES_RESPONSE) self.result = 1 self.data_list: List[GamePlayPriceData] = [] if data_list: for item in data_list: self.data_list.append(GamePlayPriceData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMBuyTicketsResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_BUY_TICKETS_RESPONSE) self.result = 1 self.data_list: List[BuyTicketData] = [] if data_list: for item in data_list: self.data_list.append(BuyTicketData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMTipsResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_TIPS_RESPONSE) self.result = 1 self.data_list: List[TipsData] = [] if data_list: for item in data_list: self.data_list.append(TipsData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMCapsResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_CAPS_RESPONSE) self.result = 1 self.data_list: List[CapData] = [] if data_list: for item in data_list: self.data_list.append(CapData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMHeroLogResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_HERO_LOG_RESPONSE) self.result = 1 self.data_list: List[HeroLogData] = [] if data_list: for item in data_list: self.data_list.append(HeroLogData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMHeroLogLevelsResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_HERO_LOG_LEVELS_RESPONSE) self.result = 1 self.data_list: List[HeroLogLevelData] = [] if data_list: for item in data_list: self.data_list.append(HeroLogLevelData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMHeroLogRolesResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_HERO_LOG_ROLES_RESPONSE) self.result = 1 self.data_list: List[HeroLogRoleData] = [] if data_list: for item in data_list: self.data_list.append(HeroLogRoleData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMHeroLogTrustRanksResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_HERO_LOG_TRUST_RANKS_RESPONSE) self.result = 1 self.data_list: List[HeroLogTrustRankData] = [] if data_list: for item in data_list: self.data_list.append(HeroLogTrustRankData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMCharasResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_CHARAS_RESPONSE) self.result = 1 self.data_list: List[CharaData] = [] if data_list: for item in data_list: self.data_list.append(CharaData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMCharaFriendlyRanksResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_CHARA_FRIENDLY_RANKS_RESPONSE) self.result = 1 self.data_list: List[CharaFriendlyRankData] = [] if data_list: for item in data_list: self.data_list.append(CharaFriendlyRankData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMEquipmentsResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_EQUIPMENTS_RESPONSE) self.result = 1 self.data_list: List[EquipmentData] = [] if data_list: for item in data_list: self.data_list.append(EquipmentData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMEquipmentLevelsResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_EQUIPMENT_LEVELS_RESPONSE) self.result = 1 self.data_list: List[EquipmentLevelData] = [] if data_list: for item in data_list: self.data_list.append(EquipmentLevelData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMWeaponTypesResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_WEAPON_TYPES_RESPONSE) self.result = 1 self.data_list: List[WeaponTypeData] = [] if data_list: for item in data_list: self.data_list.append(WeaponTypeData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMItemsResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_ITEMS_RESPONSE) self.result = 1 self.data_list: List[ItemData] = [] if data_list: for item in data_list: self.data_list.append(ItemData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMItemTypesResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_ITEM_TYPES_RESPONSE) self.result = 1 self.data_list: List[ItemTypeData] = [] if data_list: for item in data_list: self.data_list.append(ItemTypeData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMBuffItemsResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_BUFF_ITEMS_RESPONSE) self.result = 1 self.data_list: List[BuffItemData] = [] if data_list: for item in data_list: self.data_list.append(BuffItemData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMEnemiesResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_ENEMIES_RESPONSE) self.result = 1 self.data_list: List[EnemyData] = [] if data_list: for item in data_list: self.data_list.append(EnemyData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMEnemySetsResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_ENEMY_SETS_RESPONSE) self.result = 1 self.data_list: List[EnemySetData] = [] if data_list: for item in data_list: self.data_list.append(EnemySetData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMEnemyKindsResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_ENEMY_KINDS_RESPONSE) self.result = 1 self.data_list: List[EnemyKindData] = [] if data_list: for item in data_list: self.data_list.append(EnemyKindData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMEnemyCategoriesResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_ENEMY_CATEGORIES_RESPONSE) self.result = 1 self.data_list: List[EnemyCategoryData] = [] if data_list: for item in data_list: self.data_list.append(EnemyCategoryData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMUnitsResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_UNITS_RESPONSE) self.result = 1 self.data_list: List[UnitData] = [] if data_list: for item in data_list: self.data_list.append(UnitData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMUnitGimmicksResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_UNIT_GIMMICKS_RESPONSE) self.result = 1 self.data_list: List[UnitGimmickData] = [] if data_list: for item in data_list: self.data_list.append(UnitGimmickData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMUnitCollisionsResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_UNIT_COLLISIONS_RESPONSE) self.result = 1 self.data_list: List[UnitCollisionData] = [] if data_list: for item in data_list: self.data_list.append(UnitCollisionData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMUnitPowersResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_UNIT_POWERS_RESPONSE) self.result = 1 self.data_list: List[UnitPowerData] = [] if data_list: for item in data_list: self.data_list.append(UnitPowerData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMGimmickAttacksResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_GIMMICK_ATTACKS_RESPONSE) self.result = 1 self.data_list: List[GimmickAttackData] = [] if data_list: for item in data_list: self.data_list.append(GimmickAttackData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMCharaAttacksResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_CHARA_ATTACKS_RESPONSE) self.result = 1 self.data_list: List[CharaAttackData] = [] if data_list: for item in data_list: self.data_list.append(CharaAttackData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMBossAttacksResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_BOSS_ATTACKS_RESPONSE) self.result = 1 self.data_list: List[BossAttackData] = [] if data_list: for item in data_list: self.data_list.append(BossAttackData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMMonsterAttacksResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_MONSTER_ATTACKS_RESPONSE) self.result = 1 self.data_list: List[MonsterAttackData] = [] if data_list: for item in data_list: self.data_list.append(MonsterAttackData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMMonsterActionsResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_MONSTER_ACTIONS_RESPONSE) self.result = 1 self.data_list: List[MonsterActionData] = [] if data_list: for item in data_list: self.data_list.append(MonsterActionData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMPropertiesResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_PROPERTIES_RESPONSE) self.result = 1 self.data_list: List[PropertyData] = [] if data_list: for item in data_list: self.data_list.append(PropertyData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMPropertyTablesResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_PROPERTY_TABLES_RESPONSE) self.result = 1 self.data_list: List[PropertyTableData] = [] if data_list: for item in data_list: self.data_list.append(PropertyTableData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMPropertyTypesResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_PROPERTY_TYPES_RESPONSE) self.result = 1 self.data_list: List[PropertyTypeData] = [] if data_list: for item in data_list: self.data_list.append(PropertyTypeData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMSkillsResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_SKILLS_RESPONSE) self.result = 1 self.data_list: List[SkillData] = [] if data_list: for item in data_list: self.data_list.append(SkillData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMSkillTablesResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_SKILL_TABLES_RESPONSE) self.result = 1 self.data_list: List[SkillTableData] = [] if data_list: for item in data_list: self.data_list.append(SkillTableData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMSkillLevelsResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_SKILL_LEVELS_RESPONSE) self.result = 1 self.data_list: List[SkillLevelData] = [] if data_list: for item in data_list: self.data_list.append(SkillLevelData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMAwakeningsResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_AWAKENINGS_RESPONSE) self.result = 1 self.data_list: List[AwakeningData] = [] if data_list: for item in data_list: self.data_list.append(AwakeningData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMSynchroSkillsResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_SYNCHRO_SKILLS_RESPONSE) self.result = 1 self.data_list: List[SynchroSkillData] = [] if data_list: for item in data_list: self.data_list.append(SynchroSkillData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMSoundSkillCutInVoicesResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_SOUND_SKILL_CUT_IN_VOICES_RESPONSE) self.result = 1 self.data_list: List[SoundSkillCutInVoiceData] = [] if data_list: for item in data_list: self.data_list.append(SoundSkillCutInVoiceData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMQuestScenesResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_QUEST_SCENES_RESPONSE) self.result = 1 self.data_list: List[QuestSceneData] = [] if data_list: for item in data_list: self.data_list.append(QuestSceneData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMQuestExistUnitsResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_QUEST_EXIST_UNITS_RESPONSE) self.result = 1 self.data_list: List[QuestExistUnitData] = [] if data_list: for item in data_list: self.data_list.append(QuestExistUnitData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMQuestEpisodeAppendRewardsResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_QUEST_EPISODE_APPEND_REWARDS_RESPONSE) self.result = 1 self.data_list: List[QuestEpisodeAppendRewardData] = [] if data_list: for item in data_list: self.data_list.append(QuestEpisodeAppendRewardData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMSideQuestsResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_SIDE_QUESTS_RESPONSE) self.result = 1 self.data_list: List[SideQuestData] = [] if data_list: for item in data_list: self.data_list.append(SideQuestData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMEpisodesResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_EPISODES_RESPONSE) self.result = 1 self.data_list: List[EpisodeData] = [] if data_list: for item in data_list: self.data_list.append(EpisodeData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMEpisodeChaptersResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_EPISODE_CHAPTERS_RESPONSE) self.result = 1 self.data_list: List[EpisodeChapterData] = [] if data_list: for item in data_list: self.data_list.append(EpisodeChapterData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMEpisodePartsResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_EPISODE_PARTS_RESPONSE) self.result = 1 self.data_list: List[EpisodePartData] = [] if data_list: for item in data_list: self.data_list.append(EpisodePartData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMTrialTowersResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_TRIAL_TOWERS_RESPONSE) self.result = 1 self.data_list: List[TrialTowerData] = [] if data_list: for item in data_list: self.data_list.append(TrialTowerData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMExTowersResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_EX_TOWERS_RESPONSE) self.result = 1 self.data_list: List[ExTowerData] = [] if data_list: for item in data_list: self.data_list.append(ExTowerData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMExTowerQuestsResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_EX_TOWER_QUESTS_RESPONSE) self.result = 1 self.data_list: List[ExTowerQuestData] = [] if data_list: for item in data_list: self.data_list.append(ExTowerQuestData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMMenuDisplayEnemiesResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_MENU_DISPLAY_ENEMIES_RESPONSE) self.result = 1 self.data_list: List[MenuDisplayEnemyData] = [] if data_list: for item in data_list: self.data_list.append(MenuDisplayEnemyData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMMissionsResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_MISSIONS_RESPONSE) self.result = 1 self.data_list: List[MissionData] = [] if data_list: for item in data_list: self.data_list.append(MissionData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMMissionTablesResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_MISSION_TABLES_RESPONSE) self.result = 1 self.data_list: List[MissionTableData] = [] if data_list: for item in data_list: self.data_list.append(MissionTableData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMMissionDifficultiesResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_MISSION_DIFFICULTIES_RESPONSE) self.result = 1 self.data_list: List[MissionDifficultyData] = [] if data_list: for item in data_list: self.data_list.append(MissionDifficultyData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMBattleCamerasResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_BATTLE_CAMERAS_RESPONSE) self.result = 1 self.data_list: List[BattleCameraData] = [] if data_list: for item in data_list: self.data_list.append(BattleCameraData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMChatMainStoriesResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_CHAT_MAIN_STORIES_RESPONSE) self.result = 1 self.data_list: List[ChatMainStoryData] = [] if data_list: for item in data_list: self.data_list.append(ChatMainStoryData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMChatSideStoriesResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_CHAT_SIDE_STORIES_RESPONSE) self.result = 1 self.data_list: List[ChatSideStoryData] = [] if data_list: for item in data_list: self.data_list.append(ChatSideStoryData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMChatEventStoriesResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_CHAT_EVENT_STORIES_RESPONSE) self.result = 1 self.data_list: List[ChatEventStoryData] = [] if data_list: for item in data_list: self.data_list.append(ChatEventStoryData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMNavigatorCharasResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_NAVIGATOR_CHARAS_RESPONSE) self.result = 1 self.data_list: List[NavigatorCharaData] = [] if data_list: for item in data_list: self.data_list.append(NavigatorCharaData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMNavigatorCommentsResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_NAVIGATOR_COMMENTS_RESPONSE) self.result = 1 self.data_list: List[NavigatorCommentData] = [] if data_list: for item in data_list: self.data_list.append(NavigatorCommentData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMExBonusTablesResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_EX_BONUS_TABLES_RESPONSE) self.result = 1 self.data_list: List[ExBonusTableData] = [] if data_list: for item in data_list: self.data_list.append(ExBonusTableData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMExBonusConditionsResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_EX_BONUS_CONDITIONS_RESPONSE) self.result = 1 self.data_list: List[ExBonusConditionData] = [] if data_list: for item in data_list: self.data_list.append(ExBonusConditionData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMQuestRareDropsResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_QUEST_RARE_DROPS_RESPONSE) self.result = 1 self.data_list: List[QuestRareDropData] = [] if data_list: for item in data_list: self.data_list.append(QuestRareDropData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMQuestSpecialRareDropSettingsResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_QUEST_SPECIAL_RARE_DROP_SETTINGS_RESPONSE) self.result = 1 self.data_list: List[QuestSpecialRareDropSettingData] = [] if data_list: for item in data_list: self.data_list.append(QuestSpecialRareDropSettingData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMQuestSpecialRareDropsResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_QUEST_SPECIAL_RARE_DROPS_RESPONSE) self.result = 1 self.data_list: List[QuestSpecialRareDropData] = [] if data_list: for item in data_list: self.data_list.append(QuestSpecialRareDropData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMQuestTutorialsResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_QUEST_TUTORIALS_RESPONSE) self.result = 1 self.data_list: List[QuestTutorialData] = [] if data_list: for item in data_list: self.data_list.append(QuestTutorialData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMQuestPlayerTraceTablesResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_QUEST_PLAYER_TRACE_TABLES_RESPONSE) self.result = 1 self.data_list: List[QuestPlayerTraceTableData] = [] if data_list: for item in data_list: self.data_list.append(QuestPlayerTraceTableData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMQuestStillsResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_QUEST_STILLS_RESPONSE) self.result = 1 self.data_list: List[QuestStillData] = [] if data_list: for item in data_list: self.data_list.append(QuestStillData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMGashasResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_GASHAS_RESPONSE) self.result = 1 self.data_list: List[GashaData] = [] if data_list: for item in data_list: self.data_list.append(GashaData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMGashaHeadersResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_GASHA_HEADERS_RESPONSE) self.result = 1 self.data_list: List[GashaHeaderData] = [] if data_list: for item in data_list: self.data_list.append(GashaHeaderData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMGashaLotteryRaritiesResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_GASHA_LOTTERY_RARITIES_RESPONSE) self.result = 1 self.data_list: List[GashaLotteryRarityData] = [] if data_list: for item in data_list: self.data_list.append(GashaLotteryRarityData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMGashaPrizesResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_GASHA_PRIZES_RESPONSE) self.result = 1 self.data_list: List[GashaPrizeData] = [] if data_list: for item in data_list: self.data_list.append(GashaPrizeData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMComebackEventsResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_COMEBACK_EVENTS_RESPONSE) self.result = 1 self.data_list: List[ComebackEventData] = [] if data_list: for item in data_list: self.data_list.append(ComebackEventData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMAdBannersResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_AD_BANNERS_RESPONSE) self.result = 1 self.data_list: List[AdBannerData] = [] if data_list: for item in data_list: self.data_list.append(AdBannerData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMEventsResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_EVENTS_RESPONSE) self.result = 1 self.data_list: List[EventsData] = [] if data_list: for item in data_list: self.data_list.append(EventsData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMTreasureHuntsResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_TREASURE_HUNTS_RESPONSE) self.result = 1 self.data_list: List[TreasureHuntsData] = [] if data_list: for item in data_list: self.data_list.append(TreasureHuntsData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMTreasureHuntWholeTasksResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_TREASURE_HUNT_WHOLE_TASKS_RESPONSE) self.result = 1 self.data_list: List[TreasureHuntWholeTasksData] = [] if data_list: for item in data_list: self.data_list.append(TreasureHuntWholeTasksData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMTreasureHuntIndividualTasksResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_TREASURE_HUNT_INDIVIDUAL_TASKS_RESPONSE) self.result = 1 self.data_list: List[TreasureHuntIndividualTasksData] = [] if data_list: for item in data_list: self.data_list.append(TreasureHuntIndividualTasksData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMTreasureHuntSpecialEffectsResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_TREASURE_HUNT_SPECIAL_EFFECTS_RESPONSE) self.result = 1 self.data_list: List[TreasureHuntSpecialEffectsData] = [] if data_list: for item in data_list: self.data_list.append(TreasureHuntSpecialEffectsData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMTreasureHuntEventPointRewardCommonRewardsResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_TREASURE_HUNT_EVENT_POINT_REWARD_COMMON_REWARDS_RESPONSE) self.result = 1 self.data_list: List[TreasureHuntEventPointRewardCommonRewardsData] = [] if data_list: for item in data_list: self.data_list.append(TreasureHuntEventPointRewardCommonRewardsData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMTreasureHuntEventPointRewardTitlesResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_TREASURE_HUNT_EVENT_POINT_REWARD_TITLES_RESPONSE) self.result = 1 self.data_list: List[TreasureHuntEventPointRewardTitlesData] = [] if data_list: for item in data_list: self.data_list.append(TreasureHuntEventPointRewardTitlesData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMTreasureHuntTaskTextsResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_TREASURE_HUNT_TASK_TEXTS_RESPONSE) self.result = 1 self.data_list: List[TreasureHuntTaskTextData] = [] if data_list: for item in data_list: self.data_list.append(TreasureHuntTaskTextData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMBnidSerialCodesResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_BNID_SERIAL_CODES_RESPONSE) self.result = 1 self.data_list: List[BnidSerialCodeData] = [] if data_list: for item in data_list: self.data_list.append(BnidSerialCodeData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMBnidSerialCodeRewardsResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_BNID_SERIAL_CODE_REWARDS_RESPONSE) self.result = 1 self.data_list: List[BnidSerialCodeRewardData] = [] if data_list: for item in data_list: self.data_list.append(BnidSerialCodeRewardData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMSupportLogResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_SUPPORT_LOG_RESPONSE) self.result = 1 self.data_list: List[SupportLogData] = [] if data_list: for item in data_list: self.data_list.append(SupportLogData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMSupportLogTypesResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_SUPPORT_LOG_TYPES_RESPONSE) self.result = 1 self.data_list: List[SupportLogTypeData] = [] if data_list: for item in data_list: self.data_list.append(SupportLogTypeData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMEpisodeAppendsResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_EPISODE_APPENDS_RESPONSE) self.result = 1 self.data_list: List[EpisodeAppendData] = [] if data_list: for item in data_list: self.data_list.append(EpisodeAppendData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMQuestDefragMatchQuestsResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_QUEST_DEFRAG_MATCH_QUESTS_RESPONSE) self.result = 1 self.data_list: List[QuestDefragMatchQuestData] = [] if data_list: for item in data_list: self.data_list.append(QuestDefragMatchQuestData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMQuestDefragMatchQuestBossTablesResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_QUEST_DEFRAG_MATCH_QUEST_BOSS_TABLES_RESPONSE) self.result = 1 self.data_list: List[QuestDefragMatchQuestBossTableData] = [] if data_list: for item in data_list: self.data_list.append(QuestDefragMatchQuestBossTableData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMDefragMatchesResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_DEFRAG_MATCHES_RESPONSE) self.result = 1 self.data_list: List[DefragMatchData] = [] if data_list: for item in data_list: self.data_list.append(DefragMatchData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMDefragMatchSeedResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_DEFRAG_MATCH_SEED_RESPONSE) self.result = 1 self.data_list: List[DefragMatchSeedData] = [] if data_list: for item in data_list: self.data_list.append(DefragMatchSeedData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMDefragMatchSpecialEffectsResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_DEFRAG_MATCH_SPECIAL_EFFECTS_RESPONSE) self.result = 1 self.data_list: List[DefragMatchSpecialEffectData] = [] if data_list: for item in data_list: self.data_list.append(DefragMatchSpecialEffectData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMDefragMatchGradesResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_DEFRAG_MATCH_GRADES_RESPONSE) self.result = 1 self.data_list: List[DefragMatchGradeData] = [] if data_list: for item in data_list: self.data_list.append(DefragMatchGradeData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMDefragMatchCpuUnitsResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_DEFRAG_MATCH_CPU_UNITS_RESPONSE) self.result = 1 self.data_list: List[DefragMatchCpuUnitData] = [] if data_list: for item in data_list: self.data_list.append(DefragMatchCpuUnitData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMDefragMatchCpuSupportLogsResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_DEFRAG_MATCH_CPU_SUPPORT_LOGS_RESPONSE) self.result = 1 self.data_list: List[DefragMatchCpuSupportLogData] = [] if data_list: for item in data_list: self.data_list.append(DefragMatchCpuSupportLogData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMDefragMatchPeriodBonusesResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_DEFRAG_MATCH_PERIOD_BONUSES_RESPONSE) self.result = 1 self.data_list: List[DefragMatchPeriodBonusData] = [] if data_list: for item in data_list: self.data_list.append(DefragMatchPeriodBonusData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMDefragMatchRandomBonusTablesResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_DEFRAG_MATCH_RANDOM_BONUS_TABLES_RESPONSE) self.result = 1 self.data_list: List[DefragMatchRandomBonusTableData] = [] if data_list: for item in data_list: self.data_list.append(DefragMatchRandomBonusTableData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMDefragMatchRandomBonusConditionsResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_DEFRAG_MATCH_RANDOM_BONUS_CONDITIONS_RESPONSE) self.result = 1 self.data_list: List[DefragMatchRandomBonusConditionData] = [] if data_list: for item in data_list: self.data_list.append(DefragMatchRandomBonusConditionData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMDefragMatchRareDropsResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_DEFRAG_MATCH_RARE_DROPS_RESPONSE) self.result = 1 self.data_list: List[DefragMatchRareDropData] = [] if data_list: for item in data_list: self.data_list.append(DefragMatchRareDropData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMYuiMedalShopsResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_YUI_MEDAL_SHOPS_RESPONSE) self.result = 1 self.data_list: List[YuiMedalShopData] = [] if data_list: for item in data_list: self.data_list.append(YuiMedalShopData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMYuiMedalShopItemsResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_YUI_MEDAL_SHOP_ITEMS_RESPONSE) self.result = 1 self.data_list: List[YuiMedalShopItemData] = [] if data_list: for item in data_list: self.data_list.append(YuiMedalShopItemData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMEventScenesResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_EVENT_SCENES_RESPONSE) self.result = 1 self.data_list: List[EventSceneData] = [] if data_list: for item in data_list: self.data_list.append(EventSceneData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMGenericCampaignPeriodsResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_GENERIC_CAMPAIGN_PERIODS_RESPONSE) self.result = 1 self.data_list: List[GenericCampaignPeriodData] = [] if data_list: for item in data_list: self.data_list.append(GenericCampaignPeriodData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMBeginnerMissionsResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_BEGINNER_MISSIONS_RESPONSE) self.result = 1 self.data_list: List[BeginnerMissionData] = [] if data_list: for item in data_list: self.data_list.append(BeginnerMissionData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMBeginnerMissionConditionsResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_BEGINNER_MISSION_CONDITIONS_RESPONSE) self.result = 1 self.data_list: List[BeginnerMissionConditionData] = [] if data_list: for item in data_list: self.data_list.append(BeginnerMissionConditionData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMBeginnerMissionRewardsResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_BEGINNER_MISSION_REWARDS_RESPONSE) self.result = 1 self.data_list: List[BeginnerMissionRewardData] = [] if data_list: for item in data_list: self.data_list.append(BeginnerMissionRewardData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMBeginnerMissionSeatConditionsResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_BEGINNER_MISSION_SEAT_CONDITIONS_RESPONSE) self.result = 1 self.data_list: List[BeginnerMissionSeatConditionData] = [] if data_list: for item in data_list: self.data_list.append(BeginnerMissionSeatConditionData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMBeginnerMissionSeatRewardsResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_BEGINNER_MISSION_SEAT_REWARDS_RESPONSE) self.result = 1 self.data_list: List[BeginnerMissionSeatRewardData] = [] if data_list: for item in data_list: self.data_list.append(BeginnerMissionSeatRewardData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMEventItemsResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_EVENT_ITEMS_RESPONSE) self.result = 1 self.data_list: List[EventItemData] = [] if data_list: for item in data_list: self.data_list.append(EventItemData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMEventMonstersResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_EVENT_MONSTERS_RESPONSE) self.result = 1 self.data_list: List[EventMonsterData] = [] if data_list: for item in data_list: self.data_list.append(EventMonsterData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMYuiMedalBonusesResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_YUI_MEDAL_BONUSES_RESPONSE) self.result = 1 self.data_list: List[YuiMedalBonusData] = [] if data_list: for item in data_list: self.data_list.append(YuiMedalBonusData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMYuiMedalBonusConditionsResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_YUI_MEDAL_BONUS_CONDITIONS_RESPONSE) self.result = 1 self.data_list: List[YuiMedalBonusConditionData] = [] if data_list: for item in data_list: self.data_list.append(YuiMedalBonusConditionData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMGashaMedalsResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_GASHA_MEDALS_RESPONSE) self.result = 1 self.data_list: List[GashaMedalData] = [] if data_list: for item in data_list: self.data_list.append(GashaMedalData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMGashaMedalTypesResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_GASHA_MEDAL_TYPES_RESPONSE) self.result = 1 self.data_list: List[GashaMedalTypeData] = [] if data_list: for item in data_list: self.data_list.append(GashaMedalTypeData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMGashaMedalSettingsResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_GASHA_MEDAL_SETTINGS_RESPONSE) self.result = 1 self.data_list: List[GashaMedalSettingData] = [] if data_list: for item in data_list: self.data_list.append(GashaMedalSettingData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMGashaMedalBonusesResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_GASHA_MEDAL_BONUSES_RESPONSE) self.result = 1 self.data_list: List[GashaMedalBonusData] = [] if data_list: for item in data_list: self.data_list.append(GashaMedalBonusData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMGashaMedalShopsResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_GASHA_MEDAL_SHOPS_RESPONSE) self.result = 1 self.data_list: List[GashaMedalShopData] = [] if data_list: for item in data_list: self.data_list.append(GashaMedalShopData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMGashaMedalShopItemsResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_GASHA_MEDAL_SHOP_ITEMS_RESPONSE) self.result = 1 self.data_list: List[GashaMedalShopItemData] = [] if data_list: for item in data_list: self.data_list.append(GashaMedalShopItemData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMResEarnCampaignApplicationsResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_RES_EARN_CAMPAIGN_APPLICATIONS_RESPONSE) self.result = 1 self.data_list: List[ResEarnCampaignApplicationData] = [] if data_list: for item in data_list: self.data_list.append(ResEarnCampaignApplicationData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMResEarnCampaignApplicationProductsResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_RES_EARN_CAMPAIGN_APPLICATION_PRODUCTS_RESPONSE) self.result = 1 self.data_list: List[ResEarnCampaignApplicationProductData] = [] if data_list: for item in data_list: self.data_list.append(ResEarnCampaignApplicationProductData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMResEarnCampaignShopsResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_RES_EARN_CAMPAIGN_SHOPS_RESPONSE) self.result = 1 self.data_list: List[ResEarnCampaignShopData] = [] if data_list: for item in data_list: self.data_list.append(ResEarnCampaignShopData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMResEarnCampaignShopItemsResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_RES_EARN_CAMPAIGN_SHOP_ITEMS_RESPONSE) self.result = 1 self.data_list: List[ResEarnCampaignShopItemData] = [] if data_list: for item in data_list: self.data_list.append(ResEarnCampaignShopItemData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMPayingYuiMedalBonusesResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_PAYING_YUI_MEDAL_BONUSES_RESPONSE) self.result = 1 self.data_list: List[PayingYuiMedalBonusData] = [] if data_list: for item in data_list: self.data_list.append(PayingYuiMedalBonusData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMAcLoginBonusesResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_AC_LOGIN_BONUSES_RESPONSE) self.result = 1 self.data_list: List[AcLoginBonusData] = [] if data_list: for item in data_list: self.data_list.append(AcLoginBonusData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMPlayCampaignsResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_PLAY_CAMPAIGNS_RESPONSE) self.result = 1 self.data_list: List[PlayCampaignData] = [] if data_list: for item in data_list: self.data_list.append(PlayCampaignData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMPlayCampaignRewardsResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_PLAY_CAMPAIGN_REWARDS_RESPONSE) self.result = 1 self.data_list: List[PlayCampaignRewardData] = [] if data_list: for item in data_list: self.data_list.append(PlayCampaignRewardData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMGashaFreeCampaignsResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_GASHA_FREE_CAMPAIGNS_RESPONSE) self.result = 1 self.data_list: List[GashaFreeCampaignData] = [] if data_list: for item in data_list: self.data_list.append(GashaFreeCampaignData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMQuestDropBoostCampaignsResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_QUEST_DROP_BOOST_CAMPAIGNS_RESPONSE) self.result = 1 self.data_list: List[QuestDropBoostCampaignData] = [] if data_list: for item in data_list: self.data_list.append(QuestDropBoostCampaignData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMFirstTicketPurchaseCampaignsResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_FIRST_TICKET_PURCHASE_CAMPAIGNS_RESPONSE) self.result = 1 self.data_list: List[FirstTicketPurchaseCampaignData] = [] if data_list: for item in data_list: self.data_list.append(FirstTicketPurchaseCampaignData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMLinkedSiteRegCampaignsResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_LINKED_SITE_REG_CAMPAIGNS_RESPONSE) self.result = 1 self.data_list: List[LinkedSiteRegCampaignsData] = [] if data_list: for item in data_list: self.data_list.append(LinkedSiteRegCampaignsData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list) class SaoGetMLinkedSiteRegCampaignRewardsResponse(SaoBaseResponse): def __init__(self, data_list: List[Dict]) -> None: super().__init__(GameconnectCmd.GET_M_LINKED_SITE_REG_CAMPAIGN_REWARDS_RESPONSE) self.result = 1 self.data_list: List[LinkedSiteRegCampaignRewardData] = [] if data_list: for item in data_list: self.data_list.append(LinkedSiteRegCampaignRewardData.from_args(item)) def make(self) -> bytes: return super().make() \ + encode_byte(self.result) \ + encode_arr_cls(self.data_list)