Skip to content

Commit 32ca45d

Browse files
committed
feat(plugins/community/splatoon): upgrade s3si
1 parent 25a8655 commit 32ca45d

File tree

1 file changed

+34
-22
lines changed
  • source/plugins/community/splatoon/s3si

1 file changed

+34
-22
lines changed

source/plugins/community/splatoon/s3si/index.ts

Lines changed: 34 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@ class APIError extends Error {
1212
}
1313
}
1414
const AGENT_NAME = "s3si.ts";
15-
const S3SI_VERSION = "0.2.1";
15+
const S3SI_VERSION = "0.2.4";
1616
const NSOAPP_VERSION = "2.4.0";
17-
const WEB_VIEW_VERSION = "2.0.0-18810d39";
17+
const WEB_VIEW_VERSION = "2.0.0-bd36a652";
1818
const S3SI_LINK = "https://github.com/spacemeowx2/s3si.ts";
1919
const USERAGENT = `${AGENT_NAME}/${S3SI_VERSION} (${S3SI_LINK})`;
2020
const DEFAULT_APP_USER_AGENT = "Mozilla/5.0 (Linux; Android 11; Pixel 5) " + "AppleWebKit/537.36 (KHTML, like Gecko) " + "Chrome/94.0.4606.61 Mobile Safari/537.36";
@@ -6194,10 +6194,10 @@ class StatInkExporter {
61946194
special_uses
61956195
};
61966196
}
6197-
async mapCoop({ groupInfo , detail }) {
6198-
const { dangerRate , resultWave , bossResult , myResult , memberResults , scale , playedTime , enemyResults , smellMeter } = detail;
6197+
async mapCoop({ gradeBefore , groupInfo , detail }) {
6198+
const { dangerRate , resultWave , bossResult , myResult , memberResults , scale , playedTime , enemyResults , smellMeter , waveResults } = detail;
61996199
const startedAt = Math.floor(new Date(playedTime).getTime() / 1000);
6200-
const golden_eggs = myResult.goldenDeliverCount + memberResults.reduce((acc, i)=>acc + i.goldenDeliverCount, 0);
6200+
const golden_eggs = waveResults.reduce((prev, i)=>prev + i.teamDeliverCount, 0);
62016201
const power_eggs = myResult.deliverCount + memberResults.reduce((p, i)=>p + i.deliverCount, 0);
62026202
const bosses = Object.fromEntries(enemyResults.map((i)=>[
62036203
b64Number(i.enemy.id),
@@ -6210,37 +6210,42 @@ class StatInkExporter {
62106210
const title_after = detail.afterGrade ? b64Number(detail.afterGrade.id).toString() : undefined;
62116211
const title_exp_after = detail.afterGradePoint;
62126212
let clear_waves;
6213-
if (detail.waveResults.length > 0) {
6214-
clear_waves = detail.waveResults.filter((i)=>i.waveNumber < 4).length - 1 + (resultWave === 0 ? 1 : 0);
6213+
if (waveResults.length > 0) {
6214+
clear_waves = waveResults.filter((i)=>i.waveNumber < 4).length - 1 + (resultWave === 0 ? 1 : 0);
62156215
} else {
62166216
clear_waves = 0;
62176217
}
62186218
let title_before = undefined;
62196219
let title_exp_before = undefined;
6220-
const expDiff = COOP_POINT_MAP[clear_waves];
6221-
if (nonNullable(title_after) && nonNullable(title_exp_after) && nonNullable(expDiff)) {
6222-
if (title_exp_after === 40 && expDiff === 20) {} else if (title_exp_after === 40 && expDiff < 0 && title_after !== "8") {} else if (title_exp_after === 999 && expDiff !== 0) {
6223-
title_before = title_after;
6224-
} else {
6225-
if (title_exp_after - expDiff >= 0) {
6220+
if (gradeBefore) {
6221+
title_before = b64Number(gradeBefore.grade.id).toString();
6222+
title_exp_before = gradeBefore.gradePoint;
6223+
} else {
6224+
const expDiff = COOP_POINT_MAP[clear_waves];
6225+
if (nonNullable(title_after) && nonNullable(title_exp_after) && nonNullable(expDiff)) {
6226+
if (title_exp_after === 40 && expDiff === 20) {} else if (title_exp_after === 40 && expDiff < 0 && title_after !== "8") {} else if (title_exp_after === 999 && expDiff !== 0) {
62266227
title_before = title_after;
6227-
title_exp_before = title_exp_after - expDiff;
62286228
} else {
6229-
title_before = (parseInt(title_after) - 1).toString();
6229+
if (title_exp_after - expDiff >= 0) {
6230+
title_before = title_after;
6231+
title_exp_before = title_exp_after - expDiff;
6232+
} else {
6233+
title_before = (parseInt(title_after) - 1).toString();
6234+
}
62306235
}
62316236
}
62326237
}
62336238
let fail_reason = null;
6234-
if (clear_waves !== 3 && detail.waveResults.length > 0) {
6235-
const lastWave = detail.waveResults[detail.waveResults.length - 1];
6239+
if (clear_waves !== 3 && waveResults.length > 0) {
6240+
const lastWave = waveResults[waveResults.length - 1];
62366241
if (lastWave.teamDeliverCount >= lastWave.deliverNorm) {
62376242
fail_reason = "wipe_out";
62386243
}
62396244
}
62406245
const result = {
62416246
uuid: await gameId(detail.id),
62426247
private: groupInfo?.mode === "PRIVATE_CUSTOM" ? "yes" : "no",
6243-
big_run: "no",
6248+
big_run: detail.rule === "BIG_RUN" ? "yes" : "no",
62446249
stage: b64Number(detail.coopStage.id).toString(),
62456250
danger_rate: dangerRate * 100,
62466251
clear_waves,
@@ -6261,7 +6266,7 @@ class StatInkExporter {
62616266
job_score: detail.jobScore,
62626267
job_rate: detail.jobRate,
62636268
job_bonus: detail.jobBonus,
6264-
waves: await Promise.all(detail.waveResults.map((w)=>this.mapWave(w))),
6269+
waves: await Promise.all(waveResults.map((w)=>this.mapWave(w))),
62656270
players: await Promise.all([
62666271
this.mapCoopPlayer(true, myResult),
62676272
...memberResults.map((p)=>this.mapCoopPlayer(false, p))
@@ -6793,15 +6798,22 @@ class GameFetcher {
67936798
return {
67946799
type: "CoopInfo",
67956800
listNode: null,
6796-
groupInfo: null
6801+
groupInfo: null,
6802+
gradeBefore: null
67976803
};
67986804
}
67996805
const { historyDetails , ...groupInfo } = group;
6800-
const listNode = historyDetails.nodes.find((i)=>i.id === id) ?? null;
6806+
const listNodeIdx = historyDetails.nodes.findIndex((i)=>i.id === id) ?? null;
6807+
const listNode = listNodeIdx !== null ? historyDetails.nodes[listNodeIdx] : null;
6808+
const listNodeBefore = listNodeIdx !== null ? historyDetails.nodes[listNodeIdx + 1] ?? null : null;
68016809
return {
68026810
type: "CoopInfo",
68036811
listNode,
6804-
groupInfo
6812+
groupInfo,
6813+
gradeBefore: listNodeBefore?.afterGrade && listNodeBefore.afterGradePoint ? {
6814+
grade: listNodeBefore.afterGrade,
6815+
gradePoint: listNodeBefore.afterGradePoint
6816+
} : null
68056817
};
68066818
}
68076819
async getBattleMetaById(id, vsMode) {

0 commit comments

Comments
 (0)