mirror of
https://gitea.tendokyu.moe/Hay1tsme/artemis.git
synced 2026-02-15 12:17:28 +08:00
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
from typing import List, Dict
|
||||
|
||||
from titles.wacca.handlers.base import BaseResponse
|
||||
from titles.wacca.handlers.base import BaseResponse, BaseRequest
|
||||
from titles.wacca.handlers.helpers import Notice
|
||||
|
||||
# ---advertise/GetNews---
|
||||
@@ -33,13 +33,33 @@ class GetNewsResponseV1(BaseResponse):
|
||||
|
||||
class GetNewsResponseV2(GetNewsResponseV1):
|
||||
stoppedProducts: list[int] = []
|
||||
|
||||
def make(self) -> Dict:
|
||||
super().make()
|
||||
self.params.append(self.stoppedProducts)
|
||||
|
||||
return super(GetNewsResponseV1, self).make()
|
||||
|
||||
class GetNewsResponseV3(GetNewsResponseV2):
|
||||
stoppedNavs: list[int] = []
|
||||
stoppedNavVoices: list[int] = []
|
||||
|
||||
def make(self) -> Dict:
|
||||
super().make()
|
||||
self.params.append(self.stoppedProducts)
|
||||
self.params.append(self.stoppedNavs)
|
||||
self.params.append(self.stoppedNavVoices)
|
||||
|
||||
return super(GetNewsResponseV1, self).make()
|
||||
|
||||
# ---advertise/GetRanking---
|
||||
class AdvertiseGetRankingRequest(BaseRequest):
|
||||
def __init__(self, data: Dict) -> None:
|
||||
super().__init__(data)
|
||||
self.resourceVer: int = self.params[0]
|
||||
|
||||
class AdvertiseGetRankingResponse(BaseResponse):
|
||||
def __init__(self) -> None:
|
||||
super().__init__()
|
||||
|
||||
def make(self) -> Dict:
|
||||
return super().make()
|
||||
@@ -1,4 +1,4 @@
|
||||
from typing import List, Dict, Any
|
||||
from typing import List, Optional, Any
|
||||
from enum import Enum
|
||||
|
||||
from titles.wacca.const import WaccaConstants
|
||||
@@ -41,9 +41,6 @@ class Notice():
|
||||
int(self.showWelcomeScreen), self.startTime, self.endTime, self.voiceline]
|
||||
|
||||
class UserOption():
|
||||
opt_id: int
|
||||
opt_val: Any
|
||||
|
||||
def __init__(self, opt_id: int = 0, opt_val: Any = 0) -> None:
|
||||
self.opt_id = opt_id
|
||||
self.opt_val = opt_val
|
||||
@@ -53,7 +50,7 @@ class UserOption():
|
||||
|
||||
class UserStatusV1():
|
||||
def __init__(self) -> None:
|
||||
self.userId: int = -1
|
||||
self.userId: int = 0
|
||||
self.username: str = ""
|
||||
self.userType: int = 1
|
||||
self.xp: int = 0
|
||||
@@ -62,10 +59,6 @@ class UserStatusV1():
|
||||
self.wp: int = 0
|
||||
self.titlePartIds: List[int] = [0, 0, 0]
|
||||
self.useCount: int = 0
|
||||
self.loginDays: int = 0
|
||||
self.loginConsecutive: int = 0
|
||||
self.loginConsecutiveDays: int = 0
|
||||
self.vipExpireTime: int = 0
|
||||
|
||||
def make(self) -> List:
|
||||
return [
|
||||
@@ -78,21 +71,25 @@ class UserStatusV1():
|
||||
self.wp,
|
||||
self.titlePartIds,
|
||||
self.useCount,
|
||||
self.loginDays,
|
||||
self.loginConsecutive,
|
||||
self.loginConsecutiveDays,
|
||||
self.vipExpireTime
|
||||
]
|
||||
|
||||
class UserStatusV2(UserStatusV1):
|
||||
def __init__(self) -> None:
|
||||
super().__init__()
|
||||
super().__init__()
|
||||
self.loginDays: int = 0
|
||||
self.loginConsecutive: int = 0
|
||||
self.loginConsecutiveDays: int = 0
|
||||
self.loginsToday: int = 0
|
||||
self.rating: int = 0
|
||||
self.rating: int = 0
|
||||
self.vipExpireTime: int = 0
|
||||
|
||||
def make(self) -> List:
|
||||
ret = super().make()
|
||||
|
||||
|
||||
ret.append(self.loginDays)
|
||||
ret.append(self.loginConsecutive)
|
||||
ret.append(self.loginConsecutiveDays)
|
||||
ret.append(self.vipExpireTime)
|
||||
ret.append(self.loginsToday)
|
||||
ret.append(self.rating)
|
||||
|
||||
@@ -336,7 +333,7 @@ class UserItemInfoV3(UserItemInfoV2):
|
||||
|
||||
class SongDetailClearCounts():
|
||||
def __init__(self, play_ct: int = 0, clear_ct: int = 0, ml_ct: int = 0, fc_ct: int = 0,
|
||||
am_ct: int = 0, counts: List[int] = None) -> None:
|
||||
am_ct: int = 0, counts: Optional[List[int]] = None) -> None:
|
||||
if counts is None:
|
||||
self.playCt = play_ct
|
||||
self.clearCt = clear_ct
|
||||
@@ -367,7 +364,7 @@ class SongDetailGradeCountsV1():
|
||||
masterCt: int
|
||||
|
||||
def __init__(self, d: int = 0, c: int = 0, b: int = 0, a: int = 0, aa: int = 0, aaa: int = 0, s: int = 0,
|
||||
ss: int = 0, sss: int = 0, master: int = 0, counts: List[int] = None) -> None:
|
||||
ss: int = 0, sss: int = 0, master: int = 0, counts: Optional[List[int]] = None) -> None:
|
||||
if counts is None:
|
||||
self.dCt = d
|
||||
self.cCt = c
|
||||
@@ -401,7 +398,7 @@ class SongDetailGradeCountsV2(SongDetailGradeCountsV1):
|
||||
ssspCt: int
|
||||
|
||||
def __init__(self, d: int = 0, c: int = 0, b: int = 0, a: int = 0, aa: int = 0, aaa: int = 0, s: int = 0,
|
||||
ss: int = 0, sss: int = 0, master: int = 0, sp: int = 0, ssp: int = 0, sssp: int = 0, counts: List[int] = None, ) -> None:
|
||||
ss: int = 0, sss: int = 0, master: int = 0, sp: int = 0, ssp: int = 0, sssp: int = 0, counts: Optional[List[int]] = None) -> None:
|
||||
super().__init__(d, c, b, a, aa, aaa, s, ss, sss, master, counts)
|
||||
if counts is None:
|
||||
self.spCt = sp
|
||||
@@ -464,25 +461,8 @@ class SongUpdateJudgementCounts():
|
||||
def make(self) -> List:
|
||||
return [self.marvCt, self.greatCt, self.goodCt, self.missCt]
|
||||
|
||||
class SongUpdateDetail():
|
||||
songId: int
|
||||
difficulty: int
|
||||
level: float
|
||||
score: int
|
||||
judgements: SongUpdateJudgementCounts
|
||||
maxCombo: int
|
||||
grade: WaccaConstants.GRADES
|
||||
flagCleared: bool
|
||||
flagMissless: bool
|
||||
flagFullcombo: bool
|
||||
flagAllMarvelous: bool
|
||||
flagGiveUp: bool
|
||||
skillPt: int
|
||||
fastCt: int
|
||||
slowCt: int
|
||||
flagNewRecord: bool
|
||||
|
||||
def __init__(self, data: List = None) -> None:
|
||||
class SongUpdateDetailV1():
|
||||
def __init__(self, data: List) -> None:
|
||||
if data is not None:
|
||||
self.songId = data[0]
|
||||
self.difficulty = data[1]
|
||||
@@ -498,8 +478,15 @@ class SongUpdateDetail():
|
||||
self.flagFullcombo = False if data[9] == 0 else True
|
||||
self.flagAllMarvelous = False if data[10] == 0 else True
|
||||
self.flagGiveUp = False if data[11] == 0 else True
|
||||
self.skillPt = data[12]
|
||||
self.fastCt = 0
|
||||
self.slowCt = 0
|
||||
self.flagNewRecord = False
|
||||
|
||||
self.skillPt = data[12]
|
||||
class SongUpdateDetailV2(SongUpdateDetailV1):
|
||||
def __init__(self, data: List) -> None:
|
||||
super().__init__(data)
|
||||
if data is not None:
|
||||
self.fastCt = data[13]
|
||||
self.slowCt = data[14]
|
||||
self.flagNewRecord = False if data[15] == 0 else True
|
||||
@@ -583,7 +570,7 @@ class GateDetailV2(GateDetailV1):
|
||||
return super().make() + [self.missionFlg]
|
||||
|
||||
class GachaInfo():
|
||||
def make() -> List:
|
||||
def make(self) -> List:
|
||||
return []
|
||||
|
||||
class LastSongDetail():
|
||||
@@ -609,17 +596,6 @@ class FriendDetail():
|
||||
def make(self) -> List:
|
||||
return []
|
||||
|
||||
class UserOption():
|
||||
id = 1
|
||||
val = 1
|
||||
|
||||
def __init__(self, id: int = 1, val: int = val) -> None:
|
||||
self.id = id
|
||||
self.val = val
|
||||
|
||||
def make(self) -> List:
|
||||
return [self.id, self.val]
|
||||
|
||||
class LoginBonusInfo():
|
||||
def __init__(self) -> None:
|
||||
self.tickets: List[TicketItem] = []
|
||||
@@ -682,19 +658,6 @@ class PlayType(Enum):
|
||||
PlayTypeCoop = 3
|
||||
PlayTypeStageup = 4
|
||||
|
||||
class SongRatingUpdate():
|
||||
song_id = 0
|
||||
difficulty = 0
|
||||
rating = 0
|
||||
|
||||
def __init__(self, song: int = 0, difficulty: int = 0, rating: int = 0) -> None:
|
||||
self.song_id = song
|
||||
self.difficulty = difficulty
|
||||
self.rating = rating
|
||||
|
||||
def make(self) -> List:
|
||||
return [self.song_id, self.difficulty, self.rating]
|
||||
|
||||
class StageInfo():
|
||||
danId: int = 0
|
||||
danLevel: int = 0
|
||||
@@ -740,7 +703,6 @@ class MusicUpdateDetailV1():
|
||||
self.lowestMissCount = 0
|
||||
self.maxSkillPts = 0
|
||||
self.locked = 0
|
||||
self.rating = 0
|
||||
|
||||
def make(self) -> List:
|
||||
return [
|
||||
@@ -753,10 +715,17 @@ class MusicUpdateDetailV1():
|
||||
self.lowestMissCount,
|
||||
self.maxSkillPts,
|
||||
self.locked,
|
||||
self.rating
|
||||
]
|
||||
|
||||
class MusicUpdateDetailV2(MusicUpdateDetailV1):
|
||||
def __init__(self) -> None:
|
||||
super().__init__()
|
||||
self.rating = 0
|
||||
|
||||
def make(self) -> List:
|
||||
return super().make() + [self.rating]
|
||||
|
||||
class MusicUpdateDetailV3(MusicUpdateDetailV2):
|
||||
def __init__(self) -> None:
|
||||
super().__init__()
|
||||
self.grades = SongDetailGradeCountsV2()
|
||||
|
||||
@@ -15,12 +15,22 @@ class HousingGetResponse(BaseResponse):
|
||||
return super().make()
|
||||
|
||||
# ---housing/start----
|
||||
class HousingStartRequest(BaseRequest):
|
||||
class HousingStartRequestV1(BaseRequest):
|
||||
def __init__(self, data: Dict) -> None:
|
||||
super().__init__(data)
|
||||
self.unknown0: str = self.params[0]
|
||||
self.errorLog: str = self.params[1]
|
||||
self.unknown2: str = self.params[2]
|
||||
self.info: List[HousingInfo] = []
|
||||
|
||||
for info in self.params[2]:
|
||||
self.info.append(HousingInfo(info[0], info[1]))
|
||||
|
||||
class HousingStartRequestV2(HousingStartRequestV1):
|
||||
def __init__(self, data: Dict) -> None:
|
||||
super(HousingStartRequestV1, self).__init__(data)
|
||||
self.unknown0: str = self.params[0]
|
||||
self.errorLog: str = self.params[1]
|
||||
self.creditLog: str = self.params[2]
|
||||
self.info: List[HousingInfo] = []
|
||||
|
||||
for info in self.params[3]:
|
||||
|
||||
@@ -23,14 +23,37 @@ class UserInfogetMyroomRequest(BaseRequest):
|
||||
super().__init__(data)
|
||||
self.game_id = int(self.params[0])
|
||||
|
||||
class UserInfogetMyroomResponse(BaseResponse):
|
||||
class UserInfogetMyroomResponseV1(BaseResponse):
|
||||
def __init__(self) -> None:
|
||||
super().__init__()
|
||||
self.titleViewBadge = 0
|
||||
self.iconViewBadge = 0
|
||||
self.trophyViewBadge = 0
|
||||
self.noteColorViewBadge = 0
|
||||
self.noteSoundViewBadge = 0
|
||||
self.userViewingInfo = []
|
||||
|
||||
def make(self) -> Dict:
|
||||
self.params = [
|
||||
0,0,0,0,0,[],0,0,0
|
||||
self.titleViewBadge,
|
||||
self.iconViewBadge,
|
||||
self.trophyViewBadge,
|
||||
self.noteColorViewBadge,
|
||||
self.noteSoundViewBadge,
|
||||
self.userViewingInfo,
|
||||
]
|
||||
|
||||
return super().make()
|
||||
|
||||
class UserInfogetMyroomResponseV2(UserInfogetMyroomResponseV1):
|
||||
def __init__(self) -> None:
|
||||
super().__init__()
|
||||
|
||||
def make(self) -> Dict:
|
||||
super().make()
|
||||
self.params += [0, 0, 0]
|
||||
return super(UserInfogetMyroomResponseV1, self).make()
|
||||
|
||||
# ---user/info/getRanking---
|
||||
class UserInfogetRankingRequest(BaseRequest):
|
||||
game_id = 0
|
||||
|
||||
@@ -25,7 +25,7 @@ class UserGoodsPurchaseResponse(BaseResponse):
|
||||
for ticket in tickets:
|
||||
self.tickets.append(TicketItem(ticket[0], ticket[1], ticket[2]))
|
||||
|
||||
def make(self) -> List:
|
||||
def make(self) -> Dict:
|
||||
tix = []
|
||||
for ticket in self.tickets:
|
||||
tix.append(ticket.make())
|
||||
|
||||
@@ -1,22 +1,28 @@
|
||||
from typing import List, Dict
|
||||
|
||||
from titles.wacca.handlers.base import BaseRequest, BaseResponse
|
||||
from titles.wacca.handlers.helpers import GenericItemRecv, SongUpdateDetail, TicketItem
|
||||
from titles.wacca.handlers.helpers import MusicUpdateDetailV1, MusicUpdateDetailV2
|
||||
from titles.wacca.handlers.helpers import SeasonalInfoV2, SeasonalInfoV1
|
||||
from titles.wacca.handlers.helpers import GenericItemRecv, SongUpdateDetailV2, TicketItem
|
||||
from titles.wacca.handlers.helpers import MusicUpdateDetailV2, MusicUpdateDetailV3
|
||||
from titles.wacca.handlers.helpers import SeasonalInfoV2, SeasonalInfoV1, SongUpdateDetailV1
|
||||
from titles.wacca.handlers.helpers import MusicUpdateDetailV1
|
||||
|
||||
# ---user/music/update---
|
||||
class UserMusicUpdateRequest(BaseRequest):
|
||||
class UserMusicUpdateRequestV1(BaseRequest):
|
||||
def __init__(self, data: Dict) -> None:
|
||||
super().__init__(data)
|
||||
self.profileId: int = self.params[0]
|
||||
self.songNumber: int = self.params[1]
|
||||
self.songDetail = SongUpdateDetail(self.params[2])
|
||||
self.songDetail = SongUpdateDetailV1(self.params[2])
|
||||
self.itemsObtained: List[GenericItemRecv] = []
|
||||
|
||||
for itm in data["params"][3]:
|
||||
self.itemsObtained.append(GenericItemRecv(itm[0], itm[1], itm[2]))
|
||||
|
||||
class UserMusicUpdateRequestV2(UserMusicUpdateRequestV1):
|
||||
def __init__(self, data: Dict) -> None:
|
||||
super().__init__(data)
|
||||
self.songDetail = SongUpdateDetailV2(self.params[2])
|
||||
|
||||
class UserMusicUpdateResponseV1(BaseResponse):
|
||||
def __init__(self) -> None:
|
||||
super().__init__()
|
||||
@@ -37,21 +43,22 @@ class UserMusicUpdateResponseV1(BaseResponse):
|
||||
class UserMusicUpdateResponseV2(UserMusicUpdateResponseV1):
|
||||
def __init__(self) -> None:
|
||||
super().__init__()
|
||||
self.songDetail = MusicUpdateDetailV2()
|
||||
self.seasonInfo = SeasonalInfoV2()
|
||||
|
||||
class UserMusicUpdateResponseV3(UserMusicUpdateResponseV2):
|
||||
def __init__(self) -> None:
|
||||
super().__init__()
|
||||
self.songDetail = MusicUpdateDetailV2()
|
||||
self.songDetail = MusicUpdateDetailV3()
|
||||
|
||||
# ---user/music/updateCoop---
|
||||
class UserMusicUpdateCoopRequest(UserMusicUpdateRequest):
|
||||
class UserMusicUpdateCoopRequest(UserMusicUpdateRequestV2):
|
||||
def __init__(self, data: Dict) -> None:
|
||||
super().__init__(data)
|
||||
self.coopData = self.params[4]
|
||||
|
||||
# ---user/music/updateVs---
|
||||
class UserMusicUpdateVsRequest(UserMusicUpdateRequest):
|
||||
class UserMusicUpdateVsRequest(UserMusicUpdateRequestV2):
|
||||
def __init__(self, data: Dict) -> None:
|
||||
super().__init__(data)
|
||||
self.vsData = self.params[4]
|
||||
@@ -77,7 +84,7 @@ class UserMusicUnlockResponse(BaseResponse):
|
||||
for ticket in tickets_remaining:
|
||||
self.tickets.append(TicketItem(ticket[0], ticket[1], ticket[2]))
|
||||
|
||||
def make(self) -> List:
|
||||
def make(self)-> Dict:
|
||||
tickets = []
|
||||
|
||||
for ticket in self.tickets:
|
||||
|
||||
@@ -65,11 +65,11 @@ class UserStatusGetDetailResponseV1(BaseResponse):
|
||||
self.userItems: UserItemInfoV1 = UserItemInfoV1()
|
||||
self.scores: List[BestScoreDetailV1] = []
|
||||
self.songPlayStatus: List[int] = [0,0]
|
||||
self.seasonInfo: SeasonalInfoV1 = []
|
||||
self.seasonInfo: SeasonalInfoV1 = SeasonalInfoV1()
|
||||
self.playAreaList: List = [ [0],[0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0],[0,0,0,0],[0,0,0,0,0,0,0],[0] ]
|
||||
self.songUpdateTime: int = 0
|
||||
|
||||
def make(self) -> List:
|
||||
def make(self)-> Dict:
|
||||
opts = []
|
||||
play_modes = []
|
||||
scores = []
|
||||
@@ -97,7 +97,7 @@ class UserStatusGetDetailResponseV1(BaseResponse):
|
||||
|
||||
return super().make()
|
||||
|
||||
def find_score_idx(self, song_id: int, difficulty: int = 1, start_idx: int = 0, stop_idx: int = None) -> Optional[int]:
|
||||
def find_score_idx(self, song_id: int, difficulty: int = 1, start_idx: int = 0, stop_idx: Optional[int] = None) -> Optional[int]:
|
||||
if stop_idx is None or stop_idx > len(self.scores):
|
||||
stop_idx = len(self.scores)
|
||||
|
||||
@@ -122,7 +122,7 @@ class UserStatusGetDetailResponseV2(UserStatusGetDetailResponseV1):
|
||||
self.gatchaInfo: List[GachaInfo] = []
|
||||
self.friendList: List[FriendDetail] = []
|
||||
|
||||
def make(self) -> List:
|
||||
def make(self)-> Dict:
|
||||
super().make()
|
||||
gates = []
|
||||
friends = []
|
||||
@@ -164,7 +164,7 @@ class UserStatusGetDetailResponseV4(UserStatusGetDetailResponseV3):
|
||||
self.bingoStatus: BingoDetail = BingoDetail(0)
|
||||
self.scores: List[BestScoreDetailV2] = []
|
||||
|
||||
def make(self) -> List:
|
||||
def make(self)-> Dict:
|
||||
super().make()
|
||||
self.params.append(self.bingoStatus.make())
|
||||
|
||||
@@ -187,7 +187,8 @@ class UserStatusLoginResponseV1(BaseResponse):
|
||||
self.firstLoginDaily = is_first_login_daily
|
||||
self.lastLoginDate = last_login_date
|
||||
|
||||
def make(self) -> List:
|
||||
def make(self)-> Dict:
|
||||
super().make()
|
||||
daily = []
|
||||
consec = []
|
||||
other = []
|
||||
@@ -205,25 +206,24 @@ class UserStatusLoginResponseV1(BaseResponse):
|
||||
return super().make()
|
||||
|
||||
class UserStatusLoginResponseV2(UserStatusLoginResponseV1):
|
||||
vipInfo: VipInfo
|
||||
lastLoginDate: int = 0
|
||||
|
||||
def __init__(self, is_first_login_daily: bool = False, last_login_date: int = 0) -> None:
|
||||
super().__init__(is_first_login_daily)
|
||||
self.lastLoginDate = last_login_date
|
||||
|
||||
self.vipInfo = VipInfo()
|
||||
|
||||
def make(self) -> List:
|
||||
def make(self)-> Dict:
|
||||
super().make()
|
||||
self.params.append(self.vipInfo.make())
|
||||
self.params.append(self.lastLoginDate)
|
||||
return super(UserStatusLoginResponseV1, self).make()
|
||||
|
||||
class UserStatusLoginResponseV3(UserStatusLoginResponseV2):
|
||||
unk: List = []
|
||||
def __init__(self, is_first_login_daily: bool = False, last_login_date: int = 0) -> None:
|
||||
super().__init__(is_first_login_daily, last_login_date)
|
||||
self.unk: List = []
|
||||
|
||||
def make(self) -> List:
|
||||
def make(self)-> Dict:
|
||||
super().make()
|
||||
self.params.append(self.unk)
|
||||
return super(UserStatusLoginResponseV1, self).make()
|
||||
@@ -242,7 +242,7 @@ class UserStatusCreateResponseV1(BaseResponse):
|
||||
self.userStatus.userId = userId
|
||||
self.userStatus.username = username
|
||||
|
||||
def make(self) -> List:
|
||||
def make(self)-> Dict:
|
||||
self.params = [
|
||||
self.userStatus.make()
|
||||
]
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
from typing import Dict, List
|
||||
from titles.wacca.handlers.base import BaseRequest, BaseResponse
|
||||
from titles.wacca.handlers.helpers import StageInfo, StageupClearType
|
||||
from titles.wacca.handlers.helpers import StageInfo, StageupClearType, GenericItemRecv
|
||||
|
||||
# --user/trial/get--
|
||||
class UserTrialGetRequest(BaseRequest):
|
||||
@@ -28,15 +28,18 @@ class UserTrialGetResponse(BaseResponse):
|
||||
class UserTrialUpdateRequest(BaseRequest):
|
||||
def __init__(self, data: Dict) -> None:
|
||||
super().__init__(data)
|
||||
self.profileId = self.params[0]
|
||||
self.stageId = self.params[1]
|
||||
self.stageLevel = self.params[2]
|
||||
self.profileId: int = self.params[0]
|
||||
self.stageId: int = self.params[1]
|
||||
self.stageLevel: int = self.params[2]
|
||||
self.clearType = StageupClearType(self.params[3])
|
||||
self.songScores = self.params[4]
|
||||
self.numSongsCleared = self.params[5]
|
||||
self.itemsObtained = self.params[6]
|
||||
self.songScores: List[int] = self.params[4]
|
||||
self.numSongsCleared: int = self.params[5]
|
||||
self.itemsObtained: List[GenericItemRecv] = []
|
||||
self.unk7: List = []
|
||||
|
||||
for x in self.params[6]:
|
||||
self.itemsObtained.append(GenericItemRecv(x[0], x[1], x[2]))
|
||||
|
||||
if len(self.params) == 8:
|
||||
self.unk7 = self.params[7]
|
||||
|
||||
|
||||
Reference in New Issue
Block a user