mirror of
https://gitea.tendokyu.moe/Hay1tsme/artemis.git
synced 2026-02-15 04:07:29 +08:00
add Gate 5,6 judgement
This commit is contained in:
@@ -11,7 +11,8 @@ import sqlalchemy as sa
|
|||||||
|
|
||||||
# revision identifiers, used by Alembic.
|
# revision identifiers, used by Alembic.
|
||||||
revision = 'bdf710616ba4'
|
revision = 'bdf710616ba4'
|
||||||
down_revision = '16f34bf7b968'
|
#TODO: change down_revision when final merge
|
||||||
|
down_revision = 'f6007bbf057d'
|
||||||
branch_labels = None
|
branch_labels = None
|
||||||
depends_on = None
|
depends_on = None
|
||||||
|
|
||||||
@@ -24,3 +24,89 @@ class Mai2PrismPlus(Mai2Prism):
|
|||||||
"returnCode": 1,
|
"returnCode": 1,
|
||||||
"apiName": "UpsertClientPlayTimeApi"
|
"apiName": "UpsertClientPlayTimeApi"
|
||||||
}
|
}
|
||||||
|
async def handle_get_game_kaleidx_scope_api_request(self, data: Dict) -> Dict:
|
||||||
|
return {
|
||||||
|
"gameKaleidxScopeList": [
|
||||||
|
{"gateId": 1, "phaseId": 6},
|
||||||
|
{"gateId": 2, "phaseId": 6},
|
||||||
|
{"gateId": 3, "phaseId": 6},
|
||||||
|
{"gateId": 4, "phaseId": 6},
|
||||||
|
{"gateId": 5, "phaseId": 6},
|
||||||
|
{"gateId": 6, "phaseId": 6},
|
||||||
|
{"gateId": 7, "phaseId": 6}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
async def handle_get_user_kaleidx_scope_api_request(self, data: Dict) -> Dict:
|
||||||
|
# kaleidxscope keyget condition judgement
|
||||||
|
# player may get key before GateFound
|
||||||
|
for gate in range(1,8):
|
||||||
|
if gate == 1 or gate == 4 or gate == 6:
|
||||||
|
condition_satisfy = 0
|
||||||
|
for condition in Mai2Constants.KALEIDXSCOPE_KEY_CONDITION[gate]:
|
||||||
|
score_list = await self.data.score.get_best_scores(user_id=data["userId"], song_id=condition)
|
||||||
|
if score_list:
|
||||||
|
condition_satisfy = condition_satisfy + 1
|
||||||
|
if len(Mai2Constants.KALEIDXSCOPE_KEY_CONDITION[gate]) == condition_satisfy:
|
||||||
|
new_kaleidxscope = {'gateId': gate, "isKeyFound": True}
|
||||||
|
await self.data.score.put_user_kaleidxscope(data["userId"], new_kaleidxscope)
|
||||||
|
|
||||||
|
elif gate == 2:
|
||||||
|
user_profile = await self.data.profile.get_profile_detail(user_id=data["userId"], version=self.version)
|
||||||
|
user_frame = user_profile["frameId"]
|
||||||
|
if user_frame == 459504:
|
||||||
|
playlogs = await self.data.score.get_playlogs(user_id=data["userId"], idx=0, limit=0)
|
||||||
|
|
||||||
|
playlog_dict = {}
|
||||||
|
for playlog in playlogs:
|
||||||
|
playlog_id = playlog["playlogId"]
|
||||||
|
if playlog_id not in playlog_dict:
|
||||||
|
playlog_dict[playlog_id] = []
|
||||||
|
playlog_dict[playlog_id].append(playlog["musicId"])
|
||||||
|
valid_playlogs = []
|
||||||
|
allowed_music = set(Mai2Constants.KALEIDXSCOPE_KEY_CONDITION[2])
|
||||||
|
for playlog_id, music_ids in playlog_dict.items():
|
||||||
|
|
||||||
|
if len(music_ids) != len(set(music_ids)):
|
||||||
|
continue
|
||||||
|
all_valid = True
|
||||||
|
for mid in music_ids:
|
||||||
|
if mid not in allowed_music:
|
||||||
|
all_valid = False
|
||||||
|
break
|
||||||
|
if all_valid:
|
||||||
|
valid_playlogs.append(playlog_id)
|
||||||
|
|
||||||
|
if valid_playlogs:
|
||||||
|
new_kaleidxscope = {'gateId': 2, "isKeyFound": True}
|
||||||
|
await self.data.score.put_user_kaleidxscope(data["userId"], new_kaleidxscope)
|
||||||
|
|
||||||
|
|
||||||
|
elif gate == 5:
|
||||||
|
|
||||||
|
playlogs = await self.data.score.get_playlogs(user_id=data["userId"], idx=0, limit=0)
|
||||||
|
allowed_music = set(Mai2Constants.KALEIDXSCOPE_KEY_CONDITION[5])
|
||||||
|
valid_playlogs = []
|
||||||
|
|
||||||
|
for playlog in playlogs:
|
||||||
|
if playlog["extBool2"] == 1 and playlog["musicId"] in allowed_music:
|
||||||
|
valid_playlogs.append(playlog["playlogId"]) # 直接记录 playlogId
|
||||||
|
if valid_playlogs:
|
||||||
|
new_kaleidxscope = {'gateId': 5, "isKeyFound": True}
|
||||||
|
await self.data.score.put_user_kaleidxscope(data["userId"], new_kaleidxscope)
|
||||||
|
|
||||||
|
kaleidxscope = await self.data.score.get_user_kaleidxscope_list(data["userId"])
|
||||||
|
|
||||||
|
if kaleidxscope is None:
|
||||||
|
return {"userId": data["userId"], "userKaleidxScopeList":[]}
|
||||||
|
|
||||||
|
kaleidxscope_list = []
|
||||||
|
for kaleidxscope_data in kaleidxscope:
|
||||||
|
tmp = kaleidxscope_data._asdict()
|
||||||
|
tmp.pop("user")
|
||||||
|
tmp.pop("id")
|
||||||
|
kaleidxscope_list.append(tmp)
|
||||||
|
return {
|
||||||
|
"userId": data["userId"],
|
||||||
|
"userKaleidxScopeList": kaleidxscope_list
|
||||||
|
}
|
||||||
@@ -148,8 +148,8 @@ playlog = Table(
|
|||||||
Column("extNum2", Integer),
|
Column("extNum2", Integer),
|
||||||
Column("extNum4", Integer),
|
Column("extNum4", Integer),
|
||||||
Column("extBool1", Boolean), # new with buddies
|
Column("extBool1", Boolean), # new with buddies
|
||||||
Column("extBool2", Boolean), # new with prism
|
Column("extBool2", Boolean), # new with prism IsRandomSelect
|
||||||
Column("extBool3", Boolean), # new with prism+
|
Column("extBool3", Boolean), # new with prism+ IsTrackSkip
|
||||||
Column("trialPlayAchievement", Integer),
|
Column("trialPlayAchievement", Integer),
|
||||||
mysql_charset="utf8mb4",
|
mysql_charset="utf8mb4",
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user