@@ -12,9 +12,9 @@ class APIError extends Error {
1212 }
1313}
1414const AGENT_NAME = "s3si.ts" ;
15- const S3SI_VERSION = "0.2.1 " ;
15+ const S3SI_VERSION = "0.2.4 " ;
1616const NSOAPP_VERSION = "2.4.0" ;
17- const WEB_VIEW_VERSION = "2.0.0-18810d39 " ;
17+ const WEB_VIEW_VERSION = "2.0.0-bd36a652 " ;
1818const S3SI_LINK = "https://github.com/spacemeowx2/s3si.ts" ;
1919const USERAGENT = `${ AGENT_NAME } /${ S3SI_VERSION } (${ S3SI_LINK } )` ;
2020const 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