diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e43b0f9 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.DS_Store diff --git a/README.md b/README.md index 0d047ef..2da9cb5 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,69 @@ -# IIDX - -Plugin Version: **v1.4.1** - -This is A Core IIDX Plugin. - -Supported Versions: - -- HEROIC VERSE -- BISTROVER -- CastHour +# IIDX + +Plugin Version: **v1.4.4_a4** + +This is A Core IIDX Plugin. + +## Before Upgrade + - [!!] Your customize settings which were configurable in the Plugin Settings section will be reset. + - You must play once after applying this update, otherwise profile customize setting page will not render. + - Customize settings page is moved to Profiles -> (each profile) Detail -> Settings. + +## Supported Versions + - HEROIC VERSE + - BISTROVER + - CastHour + - RESIDENT + - EPOLIS + +## Features + - STEP UP + - DAN COURSES (EISEI/KIWAMI) + - RIVAL + - EVENT (WORLD TOURISM) + - ARENA (LOCAL) + - RANDOM LANE TICKET + - SONG SELECTION NOTES + +## Changelog + - Added Used Option Display support on Pacemaker. + - Added Eisei/Kiwami Dan Courses support. (Experimental) + - Added Arena support. (LOCAL only, Experimental, currently using hard-coded values) + - Added Random Lane Gacha support. (Experimental) + - Buying [Random Lane Ticket] won't do anything. + - Added Song Selection Notes support. (Experimental) + - Added Rival support. (Experimental) + - Pacemaker : Only [RIVAL (NUM)] and [RIVAL TOP] works. + - Setting Page : Must fill in-order otherwise it may cause unexpected behaviour. + - Your saved settings will not reflect on Rivals Setting page. + - Added Pacemaker Target Score support. (Experimental) + - Supported Type : [ALL/VENUE/STORE/RIVAL/SAME-DAN TOP] only + - Added BPL World Tourism Save support. + - Added Event Save support. + - Added Fixed Random Lane Ticket Setting on Customize Settings. (Added after randomly generated tickets) + - These are generated with expire date set to today, [Order By Expire Date] will reveal these first. + - Requirements : Pre-Calculated arrange_id values (0~5039 range) + - Input Form Format : value1,value2,value3... + - Added Phase Settings. [Plugin Settings] + - Added STORE TOP SCORE Display support on Song Select. (Experimental) + - Semi-migration, Only score data that played after this update will display. + - Added Random Lane Ticket Favorite support. + - Requirements : Must be in [0000000] (1~7 range) format. + - Input Form Format : value1,value2,value3... + - Updated Customize Lists. (This may cause unexpected behaviour on other versions) + - Moved Customize settings to Profiles + - Each profile can have its customized settings. + - Must edit both [customlist.ts, profile_detail.pug] in order to update customize lists. + - Fixed where Dan Class was unable to claim if you failed previously. + - Fixed where DP Play Records were saved incorrectly if you played the same song with different difficulty. + - Fixed where STEP UP data was unable to save since CastHour. + - Fixed where Enabling IIDXID Hide option makes some options invalid. + - Fixed where QPRO customize settings does not reflect on result screen. + - Fixed where music.reg response was invalid. + - Fixed where New Card was unable to register. + - Updated Customize [Lane Cover] Lists (RESIDENT_1208) + - Fixed where used options on Pacemaker were saved incorrectly. + - This will wipe all used options on pacemaker data, only saved data after this update will display. + - Enabled BPL Battle on RESIDENT. (LOCAL only, Experimental) + - Added Experimental EPOLIS support. (most of webui are broken) + - [EOL] diff --git a/data/27customlist.ts b/data/customlist.ts similarity index 57% rename from data/27customlist.ts rename to data/customlist.ts index bbf8919..7afe338 100644 --- a/data/27customlist.ts +++ b/data/customlist.ts @@ -1,352 +1,505 @@ -// 参考:bemaniwiki -export const frame_list: string[] = ["デフォルト"]; - -export const menumusic_list: string[] = ["デフォルト"]; - -export const noteburst_list: string[] = [ - "デフォルト", - "初代", - "9th style", - "IIDX RED(オレンジ爆発)", - "HAPPY SKY", - "DistorteD", - "GOLD", - "DJ TROOPERS", - "EMPRESS", - "SIRIUS", - "Resort Anthem", - "Lincle", - "tricoro", - "SPADA", - "オンリーワンボム", - "PENDUAL", - "copula", - "SINOBUZ", - "キャノンスパーク", - "Rootage", - "HEROIC VERSE", -]; - -export const turntable_list: string[] = [ - "デフォルト", - "トラン", - "JOJO", - "デルタ", - "オレンジディスク", - "DistorteD", - "GOLD", - "DJ TROOPERS", - "EMPRESS", - "SIRIUS", - "Resort Anthem", - "Lincle", - "tricoro", - "SPADA", - "灼熱", - "オンリーワンレコード", - "PENDUAL", - "copula", - "SINOBUZ", - "キャノンボーラーズ", - "Rootage", - "HEROIC VERSE", - "BPL", - "BPL ROUND1", - "BPL APINA VRAMeS", - "BPL SILKHAT", - "BPL レジャーランド", - "BPL SUPER NOVA Tohoku", - "BPL GAME PANIC", -]; - -export const lanecover_list: string[] = [ - "デフォルト", - "sigsig", - "内部フレーム", - "空", - "KAMAITACHI", - "タオル", - "コスモス", - "度胸兄弟", - "Blind Justice", - "迷彩", - "bloomin' feeling", - "Marie Antoinette(AC未使用)", //削除曲のため - "Elisha", - "Kung-fu Empire", - "Tune of beat#3", - "EMPRESS", - "Programmed World", - "3y3s", - "UMEGIRI", - "KANZAKI", - "Rock Da House", - "THE DOOR INTO RAINBOW", - "Aegis", - "Vermilion", - "Phoenix", - "Lucky Days", - "Almace", - "DIAMOND CROSSING", - "Mamonis", - "Ashemu", - "Bulluvegola", - "Beridzebeth", - "Levaslater", - "STN", - "Rche", - "Neulakyussra", - "Cybele", - "Cuvelia", - "Liberation", - "Praludium", - "少女アリスと箱庭幻想コンチェルト", - "Re:GENERATION", - "20 system bg", - "旋律のドグマ~Miserables~/TYPE A", - "旋律のドグマ~Miserables~/TYPE B", - "Elektric U-Phoria", - "MAGIC & LOVE", - "スパーダレリーフ", - "S!ck", - "CONCEPTUAL", - "ΕΛΠΙΣ", - "rumrum triplets", - "SYNC-ANTHEM", - "Thor's Hammer", - "Plan 8", - "仮想空間の旅人たち", - "8bit Princess", - "planarian", - "Dynamite1", - "龍と少女とデコヒーレンス", - "トリカゴノ鳳凰", - "Proof of the existence", - "BRAVE GLOW/機動怪獣リングール", - "BRAVE GLOW/トリコロイダー", - "VEGA/VEGAうさぎ", - "VEGA/中のひと", - "カジノファイヤーことみちゃん", - "New Lights", - "灼熱くんやきそば", - "即席!脳直★ミュージックシステム", - "キャトられ恋はモ~モク", - "オンリーワンカバー", - "ジザル", - "ジャックティーロ", - "ジャックハンス", - "イェンス", - "アムドゥシアン", - "マクスウェリオン", - "ラプラシア", - "ルシェ", - "スモモ", - "ファウラ", - "ベリゼベス", - "エルピス・キラ", - "フェリーラ", - "オールパトナ", - "あいむちゃん", - "人魚のPrim", - "アヤカシ二人", - "SHELTER OF THE MIND", - "Acid Pumper", - "X", - "ハーティー", - "Nightmare before oversleep", - "Highcharge Divolt", - "Godspeed(少年)", - "車掌イージス", - "GENERATE", - "Dynamite2", - "格闘乙女", - "レル DX2300系", - "つゆ太", - "La dolce primavera", - "AO-1", - "真 地獄超特急 -HELL or HELL-", - "モード", - "ミニョンヌ鉄道兄弟", - "冬椿", - "PAPAYAPA BASS", - "鴉", - "AsiaN distractive", - "TOGAKUSHI", - "Modular Technology", - "獅子霞麗ノ舞", - "Music is The Answer", - "!Viva!", - "SINOBUZ UI", - "ChaserXX", - "Amor De Verao", - "エディブルフラワーの独白", - "ハイ*ビスカス ft. Kanae Asaba", - "Midnight Lady", - "FUTURE is Dead", - "Break Stasis", - "草原の王女-軌跡を辿って-", - "Exhaust Hype", - "25UI", - "焔極OVERKILL", - "Breakin' Chain", - "津軽雪", - "Yellow Sketch(RX-Ver.S.P.L.)", - "Steel Edge", - "Go Ahead!!", - "Sky High(AC未使用)", - "イザナミノナゲキ", - "GuNGNiR", - "ディッシュウォッシャー◎彡おいわちゃん(AC未使用)", - "BroGamer", - "FUZIN RIZIN(AC未使用)", - "Mare Nectaris(AC未使用)", - "Quakes", - "Rave Cannon(AC未使用)", - "ECHIDNA", - "Snakey Kung-fu", - "刃図羅", - "忍恋花", - "法具「バズラ」", - "HADES", - "DEATH†ZIGOQ", - "東京神話", - "Initiation", - "EMERALDAS", - "Chemical Cookie", - "ナイトシティー・アヴァンチュール", - "シムルグの目醒め", - "n'pa pa BBQ", - "ANCHOR", - "IIDX AIR RACE", - "THE DAY OF JUBILATIONS", - "HEISEI", - "IDC feat.REVERBEE (Mo'Cuts Ver)", - "Yum Yum Jelly", - "夏の匂い。キミの残像。 ft. Kanae Asaba", - "Hurry Hurry", - "OVERTIME", - "ミストレス・アンに花束を", - "Ember Lights", - "Rootage", - "Urban Constellations", - "金野火織の金色提言", - "龍王の霊廟(Mausoleum Of The Primal Dragon)", - "Painful Fate", - "Drastic Dramatic", - "抱きしめてモナムール", - "Trill auf G", - "Lethal Weapon", - "HEROIC VERSE", - "Primitive Vibes", - "Calvados Queen", - "Ska-sh All Neurons!!", - "Moving on", - "Hyper Drive feat. ぷにぷに電機", - "THE BRAVE MUST DIE", - "曼荼羅恋々", - "Silly Love", - "Change Yourself", - "Virus Funk", - "BPL", - "BPL ROUND1", - "BPL APINA VRAMeS", - "BPL SILKHAT", - "BPL レジャーランド", - "BPL SUPER NOVA Tohoku", - "BPL GAME PANIC", -]; - -export const judge_list: string[] = [ - "デフォルト", - "デジタル", - "スマート", - "メタリックブルー", - "テクノ", - "ワイヤー", - "ABYSS", - "SPADA", - "ANCIENT", - "オンリーワンジャッジ", - "電光掲示板風", - "SINOBUZ", - "セグメント", - "Rootage", - "HEROIC VERSE", -]; - -export const notes_list: string[] = [ - "デフォルト", - "細いノーツ", - "極細ノーツ", - "ゴージャス", - "アクア", - "ギャル", - "フォトン", - "パステル", - "シンプルカラー", - "ライト", - "tricoro", - "バブル", -]; - -export const keybeam_list: string[] = [ - "デフォルト", - "ショート", - "ロング", - "オレンジ", - "ピンク", - "モノクロ", - "ベリーショート", - "ライトニング", - "オンリーワンビーム", - "コピュライト", - "CBビーム", - "HVビーム(AC未使用)", -]; - -export const fullcombo_list: string[] = [ - "デフォルト", - "IIDX RED", - "HAPPY SKY", - "DistorteD", - "GOLD", - "DJ TROOPERS", - "EMPRESS", - "SIRIUS", - "Resort Anthem", - "Lincle", - "tricoro", - "SPADA", - "オンリーワンフルコンボ", - "PENDUAL", - "copula", - "SINOBUZ", - "キャノンフィニッシュ", - "Rootage", - "HEROIC VERSE", -]; - -export const effect_list: string[] = [ - "OFF", - "ECHO / REVERB", - "COMPRESSOR / REVERB EX", - "CHORUS / FLANGER", - "GARGLE / DISTORTION", - "EQ ONLY" -]; - -export const bombsize_list: string[] = [ - "100%", - "70%", - "80%", - "90%", - "110%", - "120%", - "130%", -]; - -export const first_note_preview_list: string[] = [ - "default", - "Always ON", - "Always OFF", -]; +// 参考:bemaniwiki, +// https://discord.com/channels/162861213309599744/382177207851941889/1039433860938739712 +// https://discord.com/channels/1062739299986067477/1062740112347242608/1086257741326205038 +// renamed from 27customlist, may cause unexpected behaviour. + +export const frame_list: string[] = [ + "デフォルト", +]; + +export const menumusic_list: string[] = [ + "デフォルト", +]; + +export const noteburst_list: string[] = [ + "デフォルト", + "初代", + "9th Style", + "IIDX RED", + "HAPPY SKY", + "DistorteD", + "GOLD", + "DJ TROOPERS", + "EMPRESS", + "SIRIUS", + "Resort Anthem", + "Lincle", + "tricoro", + "SPADA", + "オンリーワンボム", + "PENDUAL", + "copula", + "SINOBUZ", + "CANNON BALLERS", + "Rootage", + "HEROIC VERSE", + "BISTROVERボム", + "いいねフラッシュ", + "RESIDENT" +]; + +export const turntable_list: string[] = [ + "デフォルト", + "トラン", + "JOJO", + "デルタ", + "オレンジディスク", + "DistorteD", + "GOLD", + "DJ TROOPERS", + "EMPRESS", + "SIRIUS", + "Resort Anthem", + "Lincle", + "tricoro", + "SPADA", + "灼熱", + "オンリーワンレコード", + "PENDUAL", + "copula", + "SINOBUZ", + "CANNON BALLERS", + "Rootage", + "HEROIC VERSE", + "BEMANI PRO LEAGUE", + "BPL ROUND1", + "BPL APINA VRAMeS", + "BPL SILKHAT", + "BPL レジャーランド", + "BPL SUPER NOVA Tohoku", + "BPL GAME PANIC", + "いちご", + "CastHour", + "CastHour2", + "BEMANI PRO LEAGUE SEASON 2", + "BPLS2 APINA VRAMeS", + "BPLS2 GiGO", + "BPLS2 GAME PANIC", + "BPLS2 SILKHAT", + "BPLS2 SUPERNOVA Tohoku", + "BPLS2 TAITO STATION Tradz", + "BPLS2 ROUND1", + "BPLS2 レジャーランド", + "RESIDENT", + "BEMANI PRO LEAGUE SEASON 3", +]; + +export const lanecover_list: string[] = [ + "デフォルト", + "SigSig", + "内部フレーム", + "空", + "KAMAITACHI", + "タオル", + "コスモス", + "度胸兄弟", + "Blind Justice", + "迷彩", + "bloomin feeling", + "Marie Antoinette", + "Elisha", + "Kung-fu Empire", + "Tune of beat#3", + "EMPRESS", + "Programmed World", + "3y3s", + "UMEGIRI", + "KANZAKI", + "Rock Da House", + "THE DOOR INTO RAINBOW", + "Aegis", + "Vermillion", + "Phoenix", + "Lucky Days", + "Almace", + "DIAMOND CROSSING", + "Mamonis", + "Ashemu", + "Bulluvegola", + "Beridzebeth", + "Levaslater", + "STN", + "Rche", + "Neulakyussra", + "Cybele", + "Cuvelia", + "Liberation", + "Praludium", + "少女アリスと箱庭幻想コンチェルト", + "ReGENERATION", + "20 system bg", + "旋律のドグマ~Miserables~/TYPE A", + "旋律のドグマ~Miserables~/TYPE B", + "Elektrick U-Phoria", + "MAGIC & LOVE", + "スパーダレリーフ", + "S!ck", + "CONCEPTUAL", + "ΕΛΠΙΣ", + "rumrum triplets", + "SYNC-ANTHEM", + "Thor's Hammer", + "Plan 8", + "仮想空間の旅人たち", + "8bit Princess", + "planarian", + "Dynamite", + "龍と少女とデコヒーレンス", + "トリカゴノ鳳凰", + "Proof of the existence", + "BRAVE GLOW/機動怪獣リングール", + "BRAVE GLOW/トリコロイダー", + "VEGA/VEGAうさぎ", + "VEGA/中のひと", + "カジノファイヤーことみちゃん", + "New Lights", + "灼熱くんやきそば", + "即席!脳直★ミュージックシステム", + "キャトられ恋はモ~モク", + "オンリーワンカバー", + "ジザル", + "ジャックティーロ", + "ジャックハンス", + "イェンス", + "アムドゥシアン", + "マクスウェリオン", + "ラプラシア", + "ルシェ", + "スモモ", + "ファウラ", + "ベリゼベス", + "エルピス・キラ", + "フェリーラ", + "オールパトナ", + "あいむちゃん", + "人魚のPrim", + "アヤカシ二人", + "SHELTER OF THE MIND", + "Acid Pumper", + "X", + "ハーティー", + "Nightmare before oversleep", + "Highcharge Divolt", + "Godspeed(少年)", + "車掌イージス", + "GENERATE", + "Dynamite", + "格闘乙女", + "レル DX2300系", + "つゆ太", + "La dolce primavera", + "AO-1", + "真 地獄超特急 -HELL or HELL-", + "モード", + "ミニョンヌ鉄道兄弟", + "冬椿", + "PAPAYAPA BASS", + "鴉", + "AsiaN distractive", + "TOGAKUSHI", + "Modular Technology", + "獅子霞麗ノ舞", + "Music is The Answer", + "!Viva!", + "SINOBUZ UI", + "ChaserXX", + "Amor De Verao", + "エディブルフラワーの独白", + "ハイ*ビスカス ft. Kanae Asaba", + "Midnight Lady", + "FUTURE is Dead", + "Break Stasis", + "草原の王女-軌跡を辿って-", + "Exhaust Hype", + "25UI", + "焔極OVERKILL", + "Breakin' Chain", + "津軽雪", + "Yellow Sketch(RX-Ver.S.P.L.)", + "Steel Edge", + "Go Ahead!!", + "Sky High", + "イザナミノナゲキ", + "GuNGNiR", + "ディッシュウォッシャー◎彡おいわちゃん", + "BroGamer", + "FUZIN RIZIN", + "Mare Nectaris", + "Quakes", + "Rave Cannon", + "ECHIDNA", + "Snakey Kung-fu", + "刃図羅", + "忍恋花", + "法具「バズラ」", + "HADES", + "DEATH†ZIGOQ", + "東京神話", + "Initiation", + "EMERALDAS", + "Chemical Cookie", + "ナイトシティー・アヴァンチュール", + "シムルグの目醒め", + "n'pa pa BBQ", + "ANCHOR", + "IIDX AIR RACE", + "THE DAY OF JUBILATIONS", + "HEISEI", + "IDC feat.REVERBEE", + "Yum Yum Jelly", + "夏の匂い。キミの残像。 ft. Kanae Asaba", + "Hurry Hurry", + "OVERTIME", + "ミストレス・アンに花束を", + "Ember Lights", + "Rootage", + "Urban Constellations", + "金野火織の金色提言", + "龍王の霊廟(Mausoleum Of The Primal Dragon)", + "Painful Fate", + "Drastic Dramatic", + "抱きしめてモナムール", + "Trill auf G", + "Lethal Weapon", + "HEROIC VERSE", + "Primitive Vibes", + "Calvados Queen", + "Ska-sh All Neurons!!", + "Moving on", + "Hyper Drive feat. ぷにぷに電機", + "THE BRAVE MUST DIE", + "曼荼羅恋々", + "Silly Love", + "Change Yourself", + "Virus Funk", + "BEMANI PRO LEAGUE", + "BPL ROUND1", + "BPL APINA VRAMeS", + "BPL SILKHAT", + "BPL レジャーランド", + "BPL SUPER NOVA Tohoku", + "BPL GAME PANIC", + "涙のテ・エストラーニョ・ムーチョ", + "∀", + "S-Bahn", + "Vitrum ", + "水無月の雫", + "Lovely Howdy Cowboy!!", + "WAKE UP NOW", + "魔法のかくれんぼ", + "POLKAMAИIA", + "POLKAMAИIA(2)", + "犬に雨傘", + "Ah Hah Yeah", + "HIGH VOLTAGE ", + "IIDX28汎用", + "Chewingood!!!", + "がっつり陰キャ!? 怪盗いいんちょの億劫", + "がっつり陰キャ!? 怪盗いいんちょの億劫(2)", + "魅惑のYUMMYスイーツ", + "度胸兄弟", + "STOIC HYPOTHESIS", + "GHOST", + "GIGA VIOLATE", + "Crank It", + "Horizons of Promise", + "Backyard Stars", + "Smashing Wedge", + "HEROIC VERSE Shutter", + "LIGHTNING MODEL", + "ARENA UI 2.0", + "華麗なる大犬円舞曲", + "BPL2021 BLACK", + "BPL2021 WHITE", + "召しませ!BISTROVER", + "ピンシェフくん", + "バッド・スイーツ、バッド・ドリーム", + "Sinus Iridum", + "ジェイ君とドゥイさん", + "あまいじかん", + "リフレナ", + "THE PEERLESS UNDER HEAVEN", + "二人ノ廃城幽踊宴", + "乱膳の舞姫", + "ハイテックトキオ", + "月とミルク", + "Ariah", + "LIVE DRIVING!! feat. 花たん", + "Wonderful Escape", + "GiGaGaHell", + "オールトの雲", + "Ventriloquist", + "DREAM OF SPACE UFO ABDUCTION", + "Skreaming for Salvation", + "No Day But Today!", + "CastHour", + "BEMANI PRO LEAGUE SEASON 2", + "BPLS2 APINA VRAMeS", + "BPLS2 GiGO", + "BPLS2 GAME PANIC", + "BPLS2 SILKHAT", + "BPLS2 SUPERNOVA Tohoku", + "BPLS2 TAITO STATION Tradz", + "BPLS2 ROUND1", + "BPLS2 レジャーランド", + "もにに", + "ピカグレ御守", + "ふるこんぼ御守", + "ANEMONE", + "お肉", + "WHA", + "ABSOLUTE EVIL", + "RAGE feat.H14 of LEONAIR", + "RESIDENT UI", + "B.O.D.Y.", + "Shadow World", + "TECHNOPHOBIA", + "Programmed Genom", + "C-C-C-N-N-N", + "儚キ戀ノ幻想譚", + "きゅんです。", + "Summerblue", + "罪過の聖堂", + "CUE CUE RESCUE", + "Sunny Day Vibes", + "BEMANI PRO LEAGUE SEASON 3", + "BPLS3 APINA VRAMeS", + "BPLS3 GiGO", + "BPLS3 GAME PANIC", + "BPLS3 SILK HAT", + "BPLS3 SUPERNOVA Tohoku", + "BPLS3 TAITO STATION Tradz", + "BPLS3 ROUND1", + "BPLS3 レジャーランド", +]; + +export const notes_list: string[] = [ + "通常ノーツ", + "ゴージャス", + "アクア", + "ギャル", + "フォトン", + "パステル", + "シンプルカラー", + "ライト", + "tricoro", + "バブル", +]; + +export const fullcombo_list: string[] = [ + "デフォルト", + "IIDX RED", + "HAPPY SKY", + "DistorteD", + "GOLD", + "DJ TROOPERS", + "EMPRESS", + "SIRIUS", + "Resort Anthem", + "Lincle", + "tricoro", + "SPADA", + "オンリーワンフルコンボ", + "PENDUAL", + "copula", + "SINOBUZ", + "CANNON BALLERS", + "Rootage", + "HEROIC VERSE", + "BISTROVER SLASH", + "CastHour", + "RESIDENT" +]; + +export const keybeam_list: string[] = [ + "デフォルト", + "オレンジ", + "ピンク", + "モノクロ", + "ライトニング", + "オンリーワンビーム", + "コピュライト", + "CBビーム", + "HEROIC VERSE", + "BISTROVER BURNER", + "フレネルビーム", + "RESIDENT", +]; + +export const judge_list: string[] = [ + "デフォルト", + "デジタル", + "スマート", + "メタリックブルー", + "テクノ", + "ワイヤー", + "ABYSS", + "SPADA", + "ANCIENT", + "オンリーワンジャッジ", + "電光掲示板風", + "SINOBUZ", + "セグメント", + "Rootage", + "HEROIC VERSE", + "BISTROVER JUDGE", + "CastHour", + "RESIDENT", +]; + +export const premium_skin_list: string[] = [ + "デフォルト", + "ピンシェフ", + "トラン", + "BPLS3 APINA", + "BPLS3 GiGO", + "BPLS3 GAME PANIC", + "BPLS3 SILKHAT", + "BPLS3 SUPERNOVA", + "BPLS3 TAITO Tradz", + "BPLS3 ROUND1", + "BPLS3 レジャーランド", +]; + +export const effect_list: string[] = [ + "OFF", + "ECHO / REVERB", + "COMPRESSOR / REVERB EX", + "CHORUS / FLANGER", + "GARGLE / DISTORTION", + "EQ ONLY" +]; + +export const bombsize_list: string[] = [ + "100%", + "70%", + "80%", + "90%", + "110%", + "120%", + "130%", +]; + +export const notesize_list = [ + "通常", + "極細", + "細", + "太", +]; + +export const notebeamsize_list = [ + "通常", + "ベリーショート", + "ショート", + "ロング", +]; + +export const first_note_preview_list: string[] = [ + "デフォルト", + "Always ON", + "Always OFF", +]; + +export const category_vox_list: string[] = [ + "デフォルト" +]; diff --git a/data/settingslist.ts b/data/settingslist.ts index 6e702de..b782769 100644 --- a/data/settingslist.ts +++ b/data/settingslist.ts @@ -1 +1 @@ -export const ShopRanking_list: string[] = ["PersonalBest","AllProfilesRanking"]; +export const ShopRanking_list: string[] = ["PersonalBest","AllProfilesRanking"]; diff --git a/handlers/IIDXgamesystem.ts b/handlers/IIDXgamesystem.ts new file mode 100644 index 0000000..e4e2155 --- /dev/null +++ b/handlers/IIDXgamesystem.ts @@ -0,0 +1,28 @@ +import { GetVersion } from "../util"; + +export const systeminfo: EPR = async (info, data, send) => { + const version = GetVersion(info); + + if (version == 27) { + send.pugFile("pug/27systeminfo.pug"); + } else if (version == 28) { + send.pugFile("pug/28systeminfo.pug"); + } else if (version == 29) { + send.pugFile("pug/29systeminfo.pug", { + boss: U.GetConfig("BossPhase"), + extra_boss: U.GetConfig("ExtraBossPhase"), + event_1_internal: U.GetConfig("Event1InternalPhase"), + }); + } else if (version == 30) { + send.pugFile("pug/30systeminfo.pug", { + boss: U.GetConfig("BossPhase"), + extra_boss: U.GetConfig("ExtraBossPhase"), + event_1_internal: U.GetConfig("Event1InternalPhase"), + }); + } else if (version == 31) { + send.pugFile("pug/31systeminfo.pug", { + boss: U.GetConfig("BossPhase"), + }); + } + else { send.success(); } +}; diff --git a/handlers/IIDXgrade.ts b/handlers/IIDXgrade.ts index 57f1931..9304393 100644 --- a/handlers/IIDXgrade.ts +++ b/handlers/IIDXgrade.ts @@ -1,92 +1,168 @@ -import { grade } from "../models/grade"; -import { GetVersion, IIDXidTorefid } from "../util"; -import { pc_data } from "../models/pc_data"; - -export const graderaised: EPR = async (info, data, send) => { - const iidxid = parseInt($(data).attr().iidxid); - const refid = await IIDXidTorefid(iidxid); - const version = GetVersion(info); - const style = parseInt($(data).attr().gtype); - const gid = parseInt($(data).attr().gid); - const cstage = parseInt($(data).attr().cstage); - const achi = parseInt($(data).attr().achi); - const grade = await DB.FindOne(refid, { - collection: "grade", - version: version, - style: style, - grade: gid, - }); - const pc_data = await DB.FindOne(refid, { - collection: "pc_data", - version: version, - }); - if (grade) { - if (cstage <= grade.dArray[2]) { - let archmax = Math.max(achi, grade.dArray[3]); - let cstagemax = Math.max(cstage, grade.dArray[2]); - await DB.Upsert( - refid, - { - collection: "grade", - version: version, - style: style, - grade: gid, - }, - { - $set: { - version: version, - style: style, - grade: gid, - dArray: [style, gid, cstagemax, archmax], - }, - } - ); - } - } else { - await DB.Upsert( - refid, - { - collection: "grade", - version: version, - style: style, - grade: gid, - }, - { - $set: { - version: version, - style: style, - grade: gid, - dArray: [style, gid, cstage, achi], - }, - } - ); - } - if (cstage == 4 && style == 0 && pc_data.sgid < gid) { - await DB.Upsert( - refid, - { - collection: "pc_data", - version: version, - }, - { - $set: { - sgid: gid, - }, - } - ); - } else if (cstage == 4 && style == 1 && pc_data.dgid < gid) { - await DB.Upsert( - refid, - { - collection: "pc_data", - version: version, - }, - { - $set: { - dgid: gid, - }, - } - ); - } - send.object(K.ATTR({ pnum: "1337" })); -}; +import { eisei_grade, grade } from "../models/grade"; +import { GetVersion, IIDXidTorefid } from "../util"; +import { pc_data } from "../models/pc_data"; + +export const graderaised: EPR = async (info, data, send) => { + const version = GetVersion(info); + const iidxid = parseInt($(data).attr().iidxid); + const refid = await IIDXidTorefid(iidxid); + const achi = parseInt($(data).attr().achi); + const cstage = parseInt($(data).attr().cstage); + const gid = parseInt($(data).attr().gid); + const style = parseInt($(data).attr().gtype); + const is_save = parseInt($(data).attr().is_save); + const is_ex = parseInt($(data).attr().is_ex); + const is_mirror = parseInt($(data).attr().is_mirror); + + const grade = await DB.FindOne(refid, { + collection: "grade", + version: version, + style: style, + grade: gid, + }); + const pc_data = await DB.FindOne(refid, { + collection: "pc_data", + version: version, + }); + + const isTDJ = !(_.isNil($(data).element("lightning_play_data"))); // use this element to determine [TDJ] instead of info.model // + const hasEiseiData = (!(_.isNil($(data).element("eisei_data"))) || !(_.isNil($(data).element("eisei_grade_data"))));; + + if (isTDJ && hasEiseiData) { + let eisei_clear_type: number; + let eisei_grade_id: number; + let eisei_grade_type: number; + let eisei_stage_num: number; + let eisei_option: number; + + let eisei_past_achievement: number[]; + let eisei_past_selected_course: number[]; + let eisei_max_past_achievement: number[]; + let eisei_max_past_selected_course: number[]; + + if (version == 27) { + eisei_clear_type = parseInt($(data).element("eisei_data").attr().clear_type); + eisei_grade_id = parseInt($(data).element("eisei_data").attr().grade_id); + eisei_grade_type = parseInt($(data).element("eisei_data").attr().grade_type); + eisei_stage_num = parseInt($(data).element("eisei_data").attr().stage_num); + + eisei_past_achievement = $(data).element("eisei_data").numbers("past_achievement"); + eisei_max_past_achievement = $(data).element("eisei_data").numbers("max_past_achievement"); + } if (version == 30) { + eisei_clear_type = parseInt($(data).element("eisei_data").attr().clear_type); + eisei_grade_id = parseInt($(data).element("eisei_data").attr().grade_id); + eisei_grade_type = parseInt($(data).element("eisei_data").attr().grade_type); + eisei_stage_num = parseInt($(data).element("eisei_data").attr().stage_num); + eisei_option = parseInt($(data).element("eisei_data").attr().option); + + eisei_past_achievement = $(data).element("eisei_data").numbers("past_achievement"); + eisei_past_selected_course = $(data).element("eisei_data").numbers("past_selected_course"); + eisei_max_past_achievement = $(data).element("eisei_data").numbers("max_past_achievement"); + eisei_max_past_selected_course = $(data).element("eisei_data").numbers("max_past_selected_course"); + } else { + eisei_clear_type = parseInt($(data).element("eisei_grade_data").attr().clear_type); + eisei_grade_id = parseInt($(data).element("eisei_grade_data").attr().grade_id); + eisei_grade_type = parseInt($(data).element("eisei_grade_data").attr().grade_type); + eisei_stage_num = parseInt($(data).element("eisei_grade_data").attr().stage_num); + + eisei_past_achievement = $(data).element("eisei_grade_data").numbers("past_achievement"); + eisei_past_selected_course = $(data).element("eisei_grade_data").numbers("past_selected_course"); + eisei_max_past_achievement = $(data).element("eisei_grade_data").numbers("max_past_achievement"); + eisei_max_past_selected_course = $(data).element("eisei_grade_data").numbers("max_past_selected_course"); + } + + await DB.Upsert( + refid, + { + collection: "eisei_grade", + version: version, + grade_type: eisei_grade_type, + grade_id: eisei_grade_id, + }, + { + $set: { + clear_type: eisei_clear_type, + stage_num: eisei_stage_num, + option: eisei_option, + + past_achievement: eisei_past_achievement, + past_selected_course: eisei_past_selected_course, + max_past_achievement: eisei_max_past_achievement, + max_past_selected_course: eisei_max_past_selected_course, + }, + } + ); + } else { + if (grade) { // UPSERT [GRADE] // + if (cstage >= grade.dArray[2] || achi >= grade.dArray[3]) { + let archmax = Math.max(achi, grade.dArray[3]); + let cstagemax = Math.max(cstage, grade.dArray[2]); + await DB.Upsert( + refid, + { + collection: "grade", + version: version, + style: style, + grade: gid, + }, + { + $set: { + version: version, + style: style, + grade: gid, + dArray: [style, gid, cstagemax, archmax], + }, + } + ); + } + } else { // INSERT [GRADE] // + await DB.Upsert( + refid, + { + collection: "grade", + version: version, + style: style, + grade: gid, + }, + { + $set: { + version: version, + style: style, + grade: gid, + dArray: [style, gid, cstage, achi], + }, + } + ); + } + + if (cstage == 4 && style == 0 && pc_data.sgid < gid) { // SINGLE [PROFILE] // + await DB.Upsert( + refid, + { + collection: "pc_data", + version: version, + }, + { + $set: { + sgid: gid, + }, + } + ); + } else if (cstage == 4 && style == 1 && pc_data.dgid < gid) { // DOUBLE [PROFILE] // + await DB.Upsert( + refid, + { + collection: "pc_data", + version: version, + }, + { + $set: { + dgid: gid, + }, + } + ); + } + } + + send.object(K.ATTR({ pnum: "1" })); +}; diff --git a/handlers/IIDXmusic.ts b/handlers/IIDXmusic.ts index 2768a02..ee4f09f 100644 --- a/handlers/IIDXmusic.ts +++ b/handlers/IIDXmusic.ts @@ -1,493 +1,1100 @@ -import { score, score_detail } from "../models/score"; -import { profile } from "../models/profile"; -import { shop_data } from "../models/shop_data"; -import { - base64decode, - ClidToRank, - GetVersion, - IIDXidTorefid, - DateToName, - refidToName, -} from "../util"; -import { pc_data } from "../models/pc_data"; -import { ShopRanking_list } from "../data/settingslist"; - -export const musicreg: EPR = async (info, data, send) => { - const iidxid = parseInt($(data).attr().iidxid); - const version = GetVersion(info); - const refid = await IIDXidTorefid(iidxid); - const profile = await DB.FindOne(refid, { - collection: "profile", - }); - const shop_data = await DB.FindOne({ - collection: "shop_data", - }); - const pc_data = await DB.FindOne(refid, { - collection: "pc_data", - version: version, - }); - const qpro = { - head: U.GetConfig("qpro_head"), - hair: U.GetConfig("qpro_hair"), - hand: U.GetConfig("qpro_hand"), - face: U.GetConfig("qpro_face"), - body: U.GetConfig("qpro_body"), - }; - - //譜面難易度(0がSPビギナー 4がSPレジェンダリア 5がDPビギナー(該当曲無し) 9がDPレジェンダリア) - const clid = parseInt($(data).attr().clid); - //musicid - const music_id = parseInt($(data).element("music_play_log").attr().music_id); - //SPが0 DPが1 - const style = parseInt($(data).element("music_play_log").attr().play_style); - //譜面難易度(0がビギナー 4がレジェンダリア) - const rank = parseInt($(data).element("music_play_log").attr().note_id); - //クリア(0:noplay 1:failed 2:assisted 3:easy 4:normal 5:hard 6:exhard 7:fc) - const clear = parseInt($(data).element("music_play_log").attr().clear_flg); - //exscore - const exscore = parseInt($(data).element("music_play_log").attr().ex_score); - //ミスカウント - const miss = parseInt($(data).element("music_play_log").attr().miss_num); - //途中落ちかどうか(途中落ち:0 完走:1) - const is_sudden_death = !$(data) - .element("music_play_log") - .bool("is_sudden_death"); - //ゴースト(base64) - const ghost = $(data) - .element("music_play_log") - .buffer("ghost") - .toString("base64"); - - let mArray = [-1, music_id, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1]; - let dbflg = 0; - let update = 1; - - const music_data: score | null = await DB.FindOne(refid, { - collection: "score", - music_id: music_id, - }); - - const score_temp: score_detail | null = await DB.FindOne( - refid, - { - collection: "score_detail", - music_id: music_id, - - clid: clid, - } - ); - - //mArrayがDB内に見つかったら代入 - - if (music_data) { - if (style == 0 && music_data.spmArray) { - mArray = music_data.spmArray; - dbflg = 1; - if ( - _.isNil(score_temp) && - (music_data.spmArray[rank + 2] != 0 || - music_data.spmArray[rank + 7] != 0) - ) { - await DB.Insert(refid, { - collection: "score_detail", - - music_id: music_id, - clid: clid, - - score: music_data.spmArray[rank + 7], - clflg: music_data.spmArray[rank + 2], - miss: music_data.spmArray[rank + 12], - time: Date.now() - 86400000, - }); - } - } else if (style == 1 && music_data.dpmArray) { - mArray = music_data.dpmArray; - dbflg = 1; - if ( - _.isNil(score_temp) && - (music_data.dpmArray[rank + 2] != 0 || - music_data.spmArray[rank + 7] != 0) - ) { - await DB.Insert(refid, { - collection: "score_detail", - - music_id: music_id, - clid: clid, - - score: music_data.dpmArray[rank + 7], - clflg: music_data.dpmArray[rank + 2], - miss: music_data.dpmArray[rank + 12], - time: Date.now() - 86400000, - }); - } - } - } - - //クリアランプ - mArray[rank + 2] = Math.max(clear, mArray[rank + 2]); - // 完走の場合ミスカウントセーブ - if (is_sudden_death) { - // -1の場合大小比較出来ない為 - if (mArray[rank + 12] == -1) { - mArray[rank + 12] = miss; - } else { - mArray[rank + 12] = Math.min(mArray[rank + 12], miss); - } - } - if (style == 0) { - if (mArray[rank + 7] < exscore || dbflg == 0) { - //スコア - mArray[rank + 7] = Math.max(exscore, mArray[rank + 7]); - await DB.Upsert( - refid, - { - collection: "score", - music_id: music_id, - }, - { - $set: { - music_id: music_id, - spmArray: mArray, - [clid]: ghost, - }, - } - ); - } else { - mArray[rank + 7] = Math.max(exscore, mArray[rank + 7]); - update = 0; - await DB.Upsert( - refid, - { - collection: "score", - music_id: music_id, - }, - { - $set: { - music_id: music_id, - spmArray: mArray, - }, - } - ); - } - } else if (style == 1) { - if (mArray[rank + 7] < exscore || dbflg == 0) { - mArray[rank + 7] = Math.max(exscore, mArray[rank + 7]); - await DB.Upsert( - refid, - { - collection: "score", - music_id: music_id, - }, - { - $set: { - music_id: music_id, - dpmArray: mArray, - [clid]: ghost, - }, - } - ); - } else { - mArray[rank + 7] = Math.max(exscore, mArray[rank + 7]); - update = 0; - await DB.Upsert( - refid, - { - collection: "score", - music_id: music_id, - }, - { - $set: { - music_id: music_id, - dpmArray: mArray, - }, - } - ); - } - } - - //スコア詳細 - await DB.Insert(refid, { - collection: "score_detail", - - music_id: music_id, - clid: clid, - - score: exscore, - clflg: clear, - miss: miss, - - time: Date.now(), - }); - - const result = { - shopdata: K.ATTR({ rank: "1" }), - LDJ: K.ATTR({ - clid: "1", - crate: "1000", - frate: "0", - mid: String(music_id), - }), - ranklist: { - data: [], - }, - }; - //スコア詳細ロード[スコア,クリアランプ] - const scores = ( - await DB.Find(refid, { - collection: "score_detail", - music_id: music_id, - - clid: clid, - }) - ).map((r) => [r.score, r.clflg, r.time]); - - scores.sort((a, b) => b[0] - a[0] || a[1] - b[1]); - - //スコアが5つの時削除(仮) - if (scores.length >= 5) { - const dscore = scores[4][0]; - const dclflg = scores[4][1]; - const dtime = scores[4][2]; - await DB.Remove(refid, { - collection: "score_detail", - - music_id: music_id, - clid: clid, - - score: dscore, - clflg: dclflg, - time: dtime, - }); - } - - if (ShopRanking_list.indexOf(U.GetConfig("ShopRanking")) == 0) { - //今プレイした順位を計算 - const currentrank = scores.findIndex( - (item) => item[0] == exscore && item[1] == clear - ); - - const now = Date.now(); - - scores.forEach((rankscore, index) => { - if (index == currentrank) { - result.ranklist.data.push( - K.ATTR({ - body: qpro.body, - clflg: String(rankscore[1]), - dgrade: String(pc_data.dgid), - face: qpro.face, - hair: qpro.hair, - hand: qpro.hand, - head: qpro.head, - iidx_id: String(profile.iidxid), - myFlg: "1", - name: profile.name, - opname: shop_data.shop_name, - pid: String(profile.pid), - rnum: String(index + 1), - score: String(rankscore[0]), - sgrade: String(pc_data.sgid), - update: String(update), - }) - ); - } else { - result.ranklist.data.push( - K.ATTR({ - body: qpro.body, - clflg: String(rankscore[1]), - dgrade: String(pc_data.dgid), - face: qpro.face, - hair: qpro.hair, - hand: qpro.hand, - head: qpro.head, - iidx_id: String(profile.iidxid), - myFlg: "0", - name: DateToName(now, rankscore[2]), - opname: shop_data.shop_name, - pid: String(profile.pid), - rnum: String(index + 1), - score: String(rankscore[0]), - sgrade: String(pc_data.sgid), - update: "0", - }) - ); - } - }); - } else if (ShopRanking_list.indexOf(U.GetConfig("ShopRanking")) == 1) { - let pscores: any[][]; - if (style == 0) { - pscores = ( - await DB.Find(null, { - collection: "score", - music_id: music_id, - spmArray: { $exists: true }, - }) - ).map((r) => [r.spmArray[rank + 7], r.spmArray[rank + 2], r.__refid]); - } else if (style == 1) { - pscores = ( - await DB.Find(null, { - collection: "score", - music_id: music_id, - dpmArray: { $exists: true }, - }) - ).map((r) => [r.dpmArray[rank + 7], r.dpmArray[rank + 2], r.__refid]); - } - pscores.sort((a, b) => b[0] - a[0]); - const currentrank = pscores.findIndex((item) => item[2] == refid); - - pscores = await Promise.all( - pscores.map(async (r) => [r[0], r[1], await refidToName(r[2])]) - ); - - pscores.forEach((rankscore, index) => { - if (index == currentrank) { - result.ranklist.data.push( - K.ATTR({ - body: qpro.body, - clflg: String(rankscore[1]), - dgrade: String(pc_data.dgid), - face: qpro.face, - hair: qpro.hair, - hand: qpro.hand, - head: qpro.head, - iidx_id: String(profile.iidxid), - myFlg: "1", - name: profile.name, - opname: shop_data.shop_name, - pid: String(profile.pid), - rnum: String(index + 1), - score: String(rankscore[0]), - sgrade: String(pc_data.sgid), - update: String(update), - }) - ); - } else if (rankscore[0] != 0 || rankscore[1] != 0) { - result.ranklist.data.push( - K.ATTR({ - body: qpro.body, - clflg: String(rankscore[1]), - dgrade: String(pc_data.dgid), - face: qpro.face, - hair: qpro.hair, - hand: qpro.hand, - head: qpro.head, - iidx_id: String(profile.iidxid), - myFlg: "0", - name: rankscore[2], - opname: shop_data.shop_name, - pid: String(profile.pid), - rnum: String(index + 1), - score: String(rankscore[0]), - sgrade: String(pc_data.sgid), - update: "0", - }) - ); - } - }); - } - - send.object(result); -}; - -export const musicgetrank: EPR = async (info, data, send) => { - const cltype = $(data).attr().cltype; - const iidxid = parseInt($(data).attr().iidxid); - const refid = await IIDXidTorefid(iidxid); - - const spmArray: any = ( - await DB.Find(refid, { - collection: "score", - spmArray: { $exists: true }, - }) - ).map((r) => r.spmArray); - spmArray.sort((a: number, b: number) => a[1] - b[1]); - - const dpmArray: any = ( - await DB.Find(refid, { - collection: "score", - dpmArray: { $exists: true }, - }) - ).map((r) => r.dpmArray); - dpmArray.sort((a: number, b: number) => a[1] - b[1]); - - const result: any = { - style: K.ATTR({ type: cltype }), - m: [], - best: K.ARRAY( - "u16", - [ - 65535, - 65535, - 65535, - 65535, - 65535, - 65535, - 65535, - 65535, - 65535, - 65535, - 65535, - 65535, - 65535, - 65535, - 65535, - 65535, - 65535, - 65535, - 65535, - 65535, - ], - { rno: "-1" } - ), - }; - if (cltype == "0") { - spmArray.forEach((m: number[]) => { - result.m.push(K.ARRAY("s16", m)); - }); - } else if (cltype == "1") { - dpmArray.forEach((m: number[]) => { - result.m.push(K.ARRAY("s16", m)); - }); - } - send.object(result); -}; - -export const musicappoint: EPR = async (info, data, send) => { - const iidxid = parseInt($(data).attr().iidxid); - const refid = await IIDXidTorefid(iidxid); - const music_id = parseInt($(data).attr().mid); - const clid = parseInt($(data).attr().clid); - const rank = ClidToRank(clid).rank; - const style = ClidToRank(clid).style; - let ghost: string, - score = 0; - const music_data_sp = await DB.FindOne(refid, { - collection: "score", - music_id: music_id, - spmArray: { $exists: true }, - [clid]: { $exists: true }, - }); - const music_data_dp = await DB.FindOne(refid, { - collection: "score", - music_id: music_id, - dpmArray: { $exists: true }, - [clid]: { $exists: true }, - }); - - if (style == 0 && music_data_sp) { - score = music_data_sp.spmArray[rank + 7]; - ghost = base64decode(music_data_sp[clid]); - send.object({ mydata: K.ITEM("bin", ghost, { score: String(score) }) }); - } else if (style == 1 && music_data_dp) { - score = music_data_dp.dpmArray[rank + 7]; - ghost = base64decode(music_data_dp[clid]); - send.object({ mydata: K.ITEM("bin", ghost, { score: String(score) }) }); - } else { - send.success(); - } -}; - -export const musiccrate: EPR = async (info, data, send) => { - const version = info.module; - send.pugFile("pug/crate.pug", { version }); -}; +import { score, score_detail, score_top } from "../models/score"; +import { profile } from "../models/profile"; +import { shop_data } from "../models/shop_data"; +import { pc_data } from "../models/pc_data"; +import { settings } from "../models/settings"; +import { rival } from "../models/rival"; +import { ShopRanking_list } from "../data/settingslist"; +import { + base64decode, + ClidToRank, + GetVersion, + IIDXidTorefid, + DateToName, + buffToHex, + refidToProfile, + refidToQpro, + refidToPd, +} from "../util"; + +export const musicreg: EPR = async (info, data, send) => { + const iidxid = parseInt($(data).attr().iidxid); + const version = GetVersion(info); + const versionStr = `IIDX${version}music`; + const refid = await IIDXidTorefid(iidxid); + const profile = await DB.FindOne(refid, { + collection: "profile", + }); + const shop_data = await DB.FindOne({ + collection: "shop_data", + }); + const pc_data = await DB.FindOne(refid, { + collection: "pc_data", + version: version, + }); + const settings = await DB.FindOne(refid, { + collection: "settings", + }); + const qpro = { + head: settings.qpro_head, + hair: settings.qpro_hair, + hand: settings.qpro_hand, + face: settings.qpro_face, + body: settings.qpro_body, + }; + + //譜面難易度(0がSPビギナー 4がSPレジェンダリア 5がDPビギナー(該当曲無し) 9がDPレジェンダリア) + const clid = parseInt($(data).attr().clid); + //musicid + const music_id = parseInt($(data).element("music_play_log").attr().music_id); + //SPが0 DPが1 + const style = parseInt($(data).element("music_play_log").attr().play_style); + //譜面難易度(0がビギナー 4がレジェンダリア) + const rank = parseInt($(data).element("music_play_log").attr().note_id); + //クリア(0:noplay 1:failed 2:assisted 3:easy 4:normal 5:hard 6:exhard 7:fc) + const clear = parseInt($(data).element("music_play_log").attr().clear_flg); + //exscore + const exscore = parseInt($(data).element("music_play_log").attr().ex_score); + //ミスカウント + const miss = parseInt($(data).element("music_play_log").attr().miss_num); + //途中落ちかどうか(途中落ち:0 完走:1) + const is_sudden_death = !$(data).element("music_play_log").bool("is_sudden_death"); + //ゴースト(base64) + const ghost = $(data).element("music_play_log").buffer("ghost").toString("base64"); + // ghost_gauge // + const ghost_gauge = $(data).element("music_play_log").buffer("ghost_gauge").toString("base64"); + const option = parseInt($(data).element("music_play_log").attr().option1); + const option_2 = parseInt($(data).element("music_play_log").attr().option2); + const rankside = parseInt($(data).attr().rankside); + + let mArray = [-1, music_id, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1]; + let optArray = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; + let opt2Array = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; + let dbflg = 0; + let update = 1; + + const music_data: score | null = await DB.FindOne(refid, { + collection: "score", + music_id: music_id, + }); + + const score_temp: score_detail | null = await DB.FindOne( + refid, + { + collection: "score_detail", + music_id: music_id, + + clid: clid, + } + ); + + //mArrayがDB内に見つかったら代入 + if (music_data) { + if (!_.isNil(music_data.optArray)) { + optArray = music_data.optArray; + opt2Array = music_data.opt2Array; + } + + if (style == 0 && music_data.spmArray) { + mArray = music_data.spmArray; + dbflg = 1; + + if (_.isNil(score_temp) && + (music_data.spmArray[rank + 2] != 0 || + music_data.spmArray[rank + 7] != 0) + ) { + await DB.Insert(refid, { + collection: "score_detail", + + music_id: music_id, + clid: clid, + + score: music_data.spmArray[rank + 7], + clflg: music_data.spmArray[rank + 2], + miss: music_data.spmArray[rank + 12], + time: Date.now() - 86400000, + }); + } + } else if (style == 1 && music_data.dpmArray) { + mArray = music_data.dpmArray; + dbflg = 1; + + if (_.isNil(score_temp) && + (music_data.dpmArray[rank + 2] != 0 || + music_data.dpmArray[rank + 7] != 0) + ) { + await DB.Insert(refid, { + collection: "score_detail", + + music_id: music_id, + clid: clid, + + score: music_data.dpmArray[rank + 7], + clflg: music_data.dpmArray[rank + 2], + miss: music_data.dpmArray[rank + 12], + time: Date.now() - 86400000, + }); + } + } + } + + //クリアランプ + mArray[rank + 2] = Math.max(clear, mArray[rank + 2]); + optArray[clid] = option; + opt2Array[clid] = option_2; + + // 完走の場合ミスカウントセーブ + if (is_sudden_death) { + // -1の場合大小比較出来ない為 + if (mArray[rank + 12] == -1) { + mArray[rank + 12] = miss; + } else { + mArray[rank + 12] = Math.min(mArray[rank + 12], miss); + } + } + if (style == 0) { + if (mArray[rank + 7] < exscore || dbflg == 0) { + //スコア + mArray[rank + 7] = Math.max(exscore, mArray[rank + 7]); + await DB.Upsert( + refid, + { + collection: "score", + music_id: music_id, + }, + { + $set: { + music_id: music_id, + spmArray: mArray, + [clid]: ghost, + + optArray: optArray, + opt2Array: opt2Array, + [clid + 10]: ghost_gauge, + }, + } + ); + } else { + mArray[rank + 7] = Math.max(exscore, mArray[rank + 7]); + update = 0; + await DB.Upsert( + refid, + { + collection: "score", + music_id: music_id, + }, + { + $set: { + music_id: music_id, + spmArray: mArray, + }, + } + ); + } + } else if (style == 1) { + if (mArray[rank + 7] < exscore || dbflg == 0) { + mArray[rank + 7] = Math.max(exscore, mArray[rank + 7]); + await DB.Upsert( + refid, + { + collection: "score", + music_id: music_id, + }, + { + $set: { + music_id: music_id, + dpmArray: mArray, + [clid]: ghost, + + optArray: optArray, + opt2Array: opt2Array, + [clid + 10]: ghost_gauge, + }, + } + ); + } else { + mArray[rank + 7] = Math.max(exscore, mArray[rank + 7]); + update = 0; + await DB.Upsert( + refid, + { + collection: "score", + music_id: music_id, + }, + { + $set: { + music_id: music_id, + dpmArray: mArray, + }, + } + ); + } + } + + //スコア詳細 + await DB.Insert(refid, { + collection: "score_detail", + + music_id: music_id, + clid: clid, + + score: exscore, + clflg: clear, + miss: miss, + + time: Date.now(), + }); + + //スコア詳細ロード[スコア,クリアランプ] + const scores = ( + await DB.Find(refid, { + collection: "score_detail", + music_id: music_id, + + clid: clid, + }) + ).map((r) => [r.score, r.clflg, r.time]); + + scores.sort((a, b) => b[0] - a[0] || a[1] - b[1]); + + //スコアが5つの時削除(仮) + if (scores.length >= 5) { + const dscore = scores[4][0]; + const dclflg = scores[4][1]; + const dtime = scores[4][2]; + await DB.Remove(refid, { + collection: "score_detail", + + music_id: music_id, + clid: clid, + + score: dscore, + clflg: dclflg, + time: dtime, + }); + } + + let ranklist = []; + if (ShopRanking_list.indexOf(U.GetConfig("ShopRanking")) == 0) { + //今プレイした順位を計算 + const currentrank = scores.findIndex( + (item) => item[0] == exscore && item[1] == clear + ); + + const now = Date.now(); + + scores.forEach((rankscore, index) => { + if (index == currentrank) { + ranklist.push({ + body: String(qpro.body), + clflg: String(rankscore[1]), + dgrade: String(pc_data.dgid), + face: String(qpro.face), + hair: String(qpro.hair), + hand: String(qpro.hand), + head: String(qpro.head), + iidx_id: String(profile.iidxid), + myFlg: "1", + name: profile.name, + opname: shop_data.shop_name, + pid: String(profile.pid), + rnum: String(index + 1), + score: String(rankscore[0]), + sgrade: String(pc_data.sgid), + update: String(update), + }); + } else { + ranklist.push({ + body: String(qpro.body), + clflg: String(rankscore[1]), + dgrade: String(pc_data.dgid), + face: String(qpro.face), + hair: String(qpro.hair), + hand: String(qpro.hand), + head: String(qpro.head), + iidx_id: String(profile.iidxid), + myFlg: "0", + name: DateToName(now, rankscore[2]), + opname: shop_data.shop_name, + pid: String(profile.pid), + rnum: String(index + 1), + score: String(rankscore[0]), + sgrade: String(pc_data.sgid), + update: "0", + }); + } + }); + } else if (ShopRanking_list.indexOf(U.GetConfig("ShopRanking")) == 1) { + let pscores: any[][]; + if (style == 0) { + pscores = ( + await DB.Find(null, { + collection: "score", + music_id: music_id, + spmArray: { $exists: true }, + }) + ).map((r) => [r.spmArray[rank + 7], r.spmArray[rank + 2], r.__refid]); + } else if (style == 1) { + pscores = ( + await DB.Find(null, { + collection: "score", + music_id: music_id, + dpmArray: { $exists: true }, + }) + ).map((r) => [r.dpmArray[rank + 7], r.dpmArray[rank + 2], r.__refid]); + } + pscores.sort((a, b) => b[0] - a[0]); + const currentrank = pscores.findIndex((item) => item[2] == refid); + + pscores = await Promise.all( + pscores.map(async (r) => [ + r[0], + r[1], + await refidToProfile(r[2]), + await refidToQpro(r[2]), + await refidToPd(r[2]) + ]) + ); + + pscores.forEach((rankscore, index) => { + if (index == currentrank) { + ranklist.push({ + body: String(qpro.body), + clflg: String(rankscore[1]), + dgrade: String(pc_data.dgid), + face: String(qpro.face), + hair: String(qpro.hair), + hand: String(qpro.hand), + head: String(qpro.head), + iidx_id: String(profile.iidxid), + myFlg: "1", + name: profile.name, + opname: shop_data.shop_name, + pid: String(profile.pid), + rnum: String(index + 1), + score: String(rankscore[0]), + sgrade: String(pc_data.sgid), + update: String(update), + }); + } else if (rankscore[0] != 0 || rankscore[1] != 0) { + ranklist.push({ + body: String(rankscore[3][3]), + clflg: String(rankscore[1]), + dgrade: String(rankscore[4][1]), + face: String(rankscore[3][2]), + hair: String(rankscore[3][0]), + hand: String(rankscore[3][4]), + head: String(rankscore[3][1]), + iidx_id: String(rankscore[2][2]), + myFlg: "0", + name: rankscore[2][0], + opname: shop_data.shop_name, + pid: String(rankscore[2][1]), + rnum: String(index + 1), + score: String(rankscore[0]), + sgrade: String(rankscore[4][0]), + update: "0", + }); + } + }); + } + + // score_top // + const score_top: score_top | null = await DB.FindOne(null, { + collection: "score_top", + play_style: style, + music_id: music_id, + }); + let tmp_names = ["", "", "", "", ""]; + let tmp_scores = [-1, -1, -1, -1, -1]; + let tmp_clflgs = [-1, -1, -1, -1, -1]; + let tmp_clid = clid; + if (style == 1) tmp_clid -= 5; + if (_.isNil(score_top)) { + if (mArray[rank + 7] > exscore) { // migration // + tmp_names[tmp_clid] = profile.name; + tmp_scores[tmp_clid] = mArray[rank + 7]; + tmp_clflgs[tmp_clid] = mArray[rank + 2]; + } else { + tmp_names[tmp_clid] = profile.name; + tmp_scores[tmp_clid] = Number(exscore); + tmp_clflgs[tmp_clid] = Number(clear); + } + + await DB.Upsert({ + collection: "score_top", + play_style: style, + music_id: music_id + }, + { + $set: { + names: tmp_names, + scores: tmp_scores, + clflgs: tmp_clflgs, + } + } + ); + } else { + if (score_top.scores[tmp_clid] < mArray[rank + 7]) { // migration // + score_top.names[tmp_clid] = profile.name; + score_top.scores[tmp_clid] = mArray[rank + 7]; + score_top.clflgs[tmp_clid] = mArray[rank + 2]; + } else if (score_top.scores[tmp_clid] < exscore) { + score_top.names[tmp_clid] = profile.name; + score_top.scores[tmp_clid] = Number(exscore); + score_top.clflgs[tmp_clid] = Number(clear); + } + + await DB.Upsert({ + collection: "score_top", + play_style: style, + music_id: music_id, + }, + { + $set: { + names: score_top.names, + scores: score_top.scores, + clflgs: score_top.clflgs, + } + }); + } + + send.pugFile("pug/musicreg.pug", { + version: versionStr, + + total_user_num: ranklist.length, + music_id, + clid, + rankside, + + ranklist, + }); +}; + +export const musicgetrank: EPR = async (info, data, send) => { + const version = GetVersion(info); + const versionStr = `IIDX${version}music`; + const cltype = parseInt($(data).attr().cltype); + const iidxid = parseInt($(data).attr().iidxid); + const refid = await IIDXidTorefid(iidxid); + + const spmArray: any = ( + await DB.Find(refid, { + collection: "score", + spmArray: { $exists: true }, + }) + ).map((r) => r.spmArray); + spmArray.sort((a: number, b: number) => a[1] - b[1]); + + const dpmArray: any = ( + await DB.Find(refid, { + collection: "score", + dpmArray: { $exists: true }, + }) + ).map((r) => r.dpmArray); + dpmArray.sort((a: number, b: number) => a[1] - b[1]); + + const rival_refids = [ + [parseInt($(data).attr().iidxid0), await IIDXidTorefid(parseInt($(data).attr().iidxid0))], + [parseInt($(data).attr().iidxid1), await IIDXidTorefid(parseInt($(data).attr().iidxid1))], + [parseInt($(data).attr().iidxid2), await IIDXidTorefid(parseInt($(data).attr().iidxid2))], + [parseInt($(data).attr().iidxid3), await IIDXidTorefid(parseInt($(data).attr().iidxid3))], + [parseInt($(data).attr().iidxid4), await IIDXidTorefid(parseInt($(data).attr().iidxid4))], + [parseInt($(data).attr().iidxid5), await IIDXidTorefid(parseInt($(data).attr().iidxid5))], + ]; + + const result: any = { + style: cltype, + m: [], + top: [], + }; + + if (cltype == 0) { + spmArray.forEach((m: number[]) => { + result.m.push(m); + }); + } else if (cltype == 1) { + dpmArray.forEach((m: number[]) => { + result.m.push(m); + }); + } + + for (let i = 0; i < rival_refids.length; i++) { + if (_.isNaN(rival_refids[i][0])) continue; + if (version <= 29 && i > 4) continue; + + if (cltype == 0) { + let rival_spmArray: any = ( + await DB.Find(String(rival_refids[i][1]), { + collection: "score", + spmArray: { $exists: true }, + }) + ).map((r) => r.spmArray); + rival_spmArray.sort((a: number, b: number) => a[1] - b[1]); + + rival_spmArray.forEach((m: number[]) => { + m[0] = i; + + result.m.push(m); + }); + } else if (cltype == 1) { + let rival_dpmArray: any = ( + await DB.Find(String(rival_refids[i][1]), { + collection: "score", + dpmArray: { $exists: true }, + }) + ).map((r) => r.dpmArray); + rival_dpmArray.sort((a: number, b: number) => a[1] - b[1]); + + rival_dpmArray.forEach((m: number[]) => { + m[0] = i; + + result.m.push(m); + }); + } + } + + const score_top = await DB.Find({ + collection: "score_top", + play_style: cltype, + }); + + if (score_top.length > 0) { + score_top.forEach((res) => { + result.top.push(res); + }); + } + + send.pugFile("pug/musicgetrank.pug", { + version: versionStr, + + style: result.style, + mArray: result.m, + tArray: result.top, + }); +}; + +export const musicappoint: EPR = async (info, data, send) => { + const version = GetVersion(info); + const iidxid = parseInt($(data).attr().iidxid); + const refid = await IIDXidTorefid(iidxid); + const music_id = parseInt($(data).attr().mid); + const clid = parseInt($(data).attr().clid); + const ctype = parseInt($(data).attr().ctype); + const subtype = parseInt($(data).attr().subtype); + const rank = ClidToRank(clid).rank; + const style = ClidToRank(clid).style; + + // MY DATA // + const music_data_sp = await DB.FindOne(refid, { + collection: "score", + music_id: music_id, + spmArray: { $exists: true }, + [clid]: { $exists: true }, + }); + const music_data_dp = await DB.FindOne(refid, { + collection: "score", + music_id: music_id, + dpmArray: { $exists: true }, + [clid]: { $exists: true }, + }); + + let ghost: string, + ghost_gauge: string, + score = 0, + option = 0, + option_2 = 0, + versionStr = `IIDX${version}music`; + + // OTHERS // + let other_refid, + other_md_sp, + other_md_dp, + other_pc_data, + other_profile, + other_score, + other_ghost, + other_ghostGauge, + other_option, + other_option2, + other_achieve, + other_name, + other_pid, + other_iidxid, + oGhost = null; + + /* ctype + *[-1] - DEFAULT + * [1] - RIVAL + * [2] - ALL TOP + * [3] - ALL AVG. + * [4] - LOCATION TOP + * [5] - LOCATION AVG. + * [6] - SAME DAN TOP + * [7] - SAME DAN AVG. + * [8] - RIVAL TOP + * [9] - RIVAL AVG. + * [10] - STORE TOP + * [13] - RIVAL NEXT + * [14] - STORE ROTATE + * [15] - RIVAL ROTATE + */ + + // OTHERS // + if (ctype == 1 && !(_.isNaN(subtype))) { // RIVAL // + other_refid = await IIDXidTorefid(subtype); + other_md_sp = await DB.FindOne(other_refid, { + collection: "score", + music_id: music_id, + spmArray: { $exists: true }, + [clid]: { $exists: true }, + }); + other_md_dp = await DB.FindOne(other_refid, { + collection: "score", + music_id: music_id, + dpmArray: { $exists: true }, + [clid]: { $exists: true }, + }); + other_pc_data = await refidToPd(other_refid); + other_profile = await refidToProfile(other_refid); + + other_name = other_profile[0]; + other_pid = other_profile[1]; + other_iidxid = other_profile[2]; + + if (style == 0 && other_md_sp) { + other_score = other_md_sp.spmArray[rank + 7]; + + if (_.isNil(other_md_sp[clid + 10])) { + other_option = 0; + other_option2 = 0; + + other_ghostGauge = "00"; + } else { + if (_.isNil(other_md_sp.optArray)) { + other_option = 0; + other_option2 = 0; + } else { + other_option = other_md_sp.optArray[clid]; + other_option2 = other_md_sp.opt2Array[clid]; + } + + other_ghostGauge = buffToHex(base64decode(other_md_sp[clid + 10])); + } + + other_ghost = buffToHex(base64decode(other_md_sp[clid])); + + other_achieve = other_pc_data[0]; + } else if (style == 1 && other_md_dp) { + other_score = other_md_dp.dpmArray[rank + 7]; + + if (_.isNil(other_md_dp[clid + 10])) { + other_option = 0; + other_option2 = 0; + + other_ghostGauge = "00"; + } else { + if (_.isNil(other_md_dp.optArray)) { + other_option = 0; + other_option2 = 0; + } else { + other_option = other_md_dp.optArray[clid]; + other_option2 = other_md_dp.opt2Array[clid]; + } + + other_ghostGauge = buffToHex(base64decode(other_md_dp[clid + 10])); + } + + other_ghost = buffToHex(base64decode(other_md_dp[clid])); + + other_achieve = other_pc_data[1]; + } + } + else if (ctype == 8) { // RIVAL TOP // + let rival_ghost = []; + let rival_refids = await DB.Find(refid, { + collection: "rival", + play_style: (style + 1), + rival_refid: { $exists: true }, + }); + + for (let i = 0; i < rival_refids.length; i++) { + if (style == 0) { + other_md_sp = await DB.FindOne(String(rival_refids[i].rival_refid), { + collection: "score", + music_id: music_id, + spmArray: { $exists: true }, + [clid]: { $exists: true }, + }); + + if (!(_.isNil(other_md_sp))) + rival_ghost.push(other_md_sp); + } else if (style == 1) { + other_md_dp = await DB.FindOne(String(rival_refids[i].rival_refid), { + collection: "score", + music_id: music_id, + dpmArray: { $exists: true }, + [clid]: { $exists: true }, + }); + + if (!(_.isNil(other_md_dp))) + rival_ghost.push(other_md_dp); + } + } + + if (style == 0 && rival_ghost.length > 0) { + rival_ghost.sort((a: score, b: score) => b.spmArray[rank + 7] - a.spmArray[rank + 7]); + + other_refid = rival_ghost[0].__refid; + other_pc_data = await refidToPd(other_refid); + other_profile = await refidToProfile(other_refid); + + other_name = other_profile[0]; + other_pid = other_profile[1]; + other_iidxid = other_profile[2]; + + other_score = rival_ghost[0].spmArray[rank + 7]; + + if (_.isNil(rival_ghost[0][clid + 10])) { + other_option = 0; + other_option2 = 0; + + other_ghostGauge = "00"; + } else { + if (_.isNil(rival_ghost[0].optArray)) { + other_option = 0; + other_option2 = 0; + } else { + other_option = rival_ghost[0].optArray[clid]; + other_option2 = rival_ghost[0].opt2Array[clid]; + } + + other_ghostGauge = buffToHex(base64decode(rival_ghost[0][clid + 10])); + } + + other_ghost = buffToHex(base64decode(rival_ghost[0][clid])); + other_achieve = other_pc_data[0]; + } else if (style == 1 && rival_ghost.length > 1) { + rival_ghost.sort((a: score, b: score) => b.dpmArray[rank + 7] - a.dpmArray[rank + 7]); + + other_refid = rival_ghost[0].__refid; + other_pc_data = await refidToPd(other_refid); + other_profile = await refidToProfile(other_refid); + + other_name = other_profile[0]; + other_pid = other_profile[1]; + other_iidxid = other_profile[2]; + + other_score = rival_ghost[0].dpmArray[rank + 7]; + + if (_.isNil(rival_ghost[0][clid + 10])) { + other_option = 0; + other_option2 = 0; + + other_ghostGauge = "00"; + } else { + if (_.isNil(rival_ghost[0].optArray)) { + other_option = 0; + other_option2 = 0; + } else { + other_option = rival_ghost[0].optArray[clid]; + other_option2 = rival_ghost[0].opt2Array[clid]; + } + + other_ghostGauge = buffToHex(base64decode(rival_ghost[0][clid + 10])); + } + + other_ghost = buffToHex(base64decode(rival_ghost[0][clid])); + other_achieve = other_pc_data[1]; + } + } + else if (ctype == 2 || ctype == 4 || ctype == 10) { // ALL, VENUE, STORE TOP // + other_md_sp = await DB.Find(null, { + collection: "score", + music_id: music_id, + spmArray: { $exists: true }, + [clid]: { $exists: true }, + }); + other_md_dp = await DB.Find(null, { + collection: "score", + music_id: music_id, + dpmArray: { $exists: true }, + [clid]: { $exists: true }, + }); + + if (style == 0 && other_md_sp.length > 0) { + other_md_sp.sort((a: score, b: score) => b.spmArray[rank + 7] - a.spmArray[rank + 7]); + + other_refid = other_md_sp[0].__refid; + other_pc_data = await refidToPd(other_refid); + other_profile = await refidToProfile(other_refid); + + other_name = other_profile[0]; + other_pid = other_profile[1]; + other_iidxid = other_profile[2]; + + other_score = other_md_sp[0].spmArray[rank + 7]; + + if (_.isNil(other_md_sp[0][clid + 10])) { + other_option = 0; + other_option2 = 0; + + other_ghostGauge = "00"; + } else { + if (_.isNil(other_md_sp[0].optArray)) { + other_option = 0; + other_option2 = 0; + } else { + other_option = other_md_sp[0].optArray[clid]; + other_option2 = other_md_sp[0].opt2Array[clid]; + } + + other_ghostGauge = buffToHex(base64decode(other_md_sp[0][clid + 10])); + } + + other_ghost = buffToHex(base64decode(other_md_sp[0][clid])); + other_achieve = other_pc_data[0]; + } else if (style == 1 && other_md_dp.length > 0) { + other_md_dp.sort((a: score, b: score) => b.dpmArray[rank + 7] - a.dpmArray[rank + 7]); + + other_refid = other_md_dp[0].__refid; + other_pc_data = await refidToPd(other_refid); + other_profile = await refidToProfile(other_refid); + + other_name = other_profile[0]; + other_pid = other_profile[1]; + other_iidxid = other_profile[2]; + + other_score = other_md_dp[0].dpmArray[rank + 7]; + + if (_.isNil(other_md_dp[0][clid + 10])) { + other_option = 0; + other_option2 = 0; + + other_ghostGauge = "00"; + } else { + if (_.isNil(other_md_dp[0].optArray)) { + other_option = 0; + other_option2 = 0; + } else { + other_option = other_md_dp[0].optArray[clid]; + other_option2 = other_md_dp[0].opt2Array[clid]; + } + + other_ghostGauge = buffToHex(base64decode(other_md_dp[0][clid + 10])); + } + + other_ghost = buffToHex(base64decode(other_md_dp[0][clid])); + other_achieve = other_pc_data[1]; + } + } + else if (ctype == 6) { // SAME DAN TOP // + const my_data = await DB.FindOne(refid, { + collection: "pc_data", + version: version, + }); + let dArray = []; // music_datas // + + if (style == 0) { + let same_dan = await DB.Find(null, { + collection: "pc_data", + version: version, + sgid: my_data.sgid, + }); + + if (same_dan.length > 0) { + for (let a = 0; a < same_dan.length; a++) { + let other_md = await DB.FindOne(same_dan[a].__refid, { + collection: "score", + music_id: music_id, + spmArray: { $exists: true }, + [clid]: { $exists: true }, + }); + + if (!(_.isNil(other_md))) + dArray.push(other_md); + } + + if (dArray.length > 0) { + dArray.sort((a: score, b: score) => b.spmArray[rank + 7] - a.spmArray[rank + 7]); + + other_refid = dArray[0].__refid; + other_pc_data = await refidToPd(other_refid); + other_profile = await refidToProfile(other_refid); + + other_name = other_profile[0]; + other_pid = other_profile[1]; + other_iidxid = other_profile[2]; + + other_score = dArray[0].spmArray[rank + 7]; + + if (_.isNil(dArray[0][clid + 10])) { + other_option = 0; + other_option2 = 0; + + other_ghostGauge = "00"; + } else { + if (_.isNil(dArray[0].optArray)) { + other_option = 0; + other_option2 = 0; + } else { + other_option = dArray[0].optArray[clid]; + other_option2 = dArray[0].opt2Array[clid]; + } + + other_ghostGauge = buffToHex(base64decode(dArray[0][clid + 10])); + } + + other_ghost = buffToHex(base64decode(dArray[0][clid])); + other_achieve = other_pc_data[0]; + } + } + } else { + let same_dan = await DB.Find(null, { + collection: "pc_data", + version: version, + dgid: my_data.dgid, + }); + + if (same_dan.length > 0) { + for (let a = 0; a < same_dan.length; a++) { + let other_md = await DB.FindOne(same_dan[a].__refid, { + collection: "score", + music_id: music_id, + dpmArray: { $exists: true }, + [clid]: { $exists: true }, + }); + + if (!(_.isNil(other_md))) + dArray.push(other_md); + } + + if (dArray.length > 0) { + dArray.sort((a: score, b: score) => b.dpmArray[rank + 7] - a.dpmArray[rank + 7]); + + other_refid = dArray[0].__refid; + other_pc_data = await refidToPd(other_refid); + other_profile = await refidToProfile(other_refid); + + other_name = other_profile[0]; + other_pid = other_profile[1]; + other_iidxid = other_profile[2]; + + other_score = dArray[0].dpmArray[rank + 7]; + + if (_.isNil(dArray[0][clid + 10])) { + other_option = 0; + other_option2 = 0; + + other_ghostGauge = "00"; + } else { + if (_.isNil(dArray[0].optArray)) { + other_option = 0; + other_option2 = 0; + } else { + other_option = dArray[0].optArray[clid]; + other_option2 = dArray[0].opt2Array[clid]; + } + + other_ghostGauge = buffToHex(base64decode(dArray[0][clid + 10])); + } + + other_ghost = buffToHex(base64decode(dArray[0][clid])); + + other_achieve = other_pc_data[1]; + } + } + } + } + + if (!(_.isNil(other_ghost))) { + if (_.isNil(other_option)) { + other_option = 0; + other_option2 = 0; + } + + oGhost = { + ghost: other_ghost, + score: other_score, + achieve: other_achieve, + pid: other_pid, + name: other_name, + iidxid: other_iidxid, + ghostGauge: other_ghostGauge, + option: other_option, + option2: other_option2, + }; + } + + // MY DATA // + if (style == 0 && music_data_sp) { + score = music_data_sp.spmArray[rank + 7]; + + if (_.isNil(music_data_sp[clid + 10])) { + option = 0; + option_2 = 0; + + ghost_gauge = "00"; + } else { + if (_.isNil(music_data_sp.optArray)) { + option = 0; + option_2 = 0; + } else { + option = music_data_sp.optArray[clid]; + option_2 = music_data_sp.opt2Array[clid]; + } + + ghost_gauge = buffToHex(base64decode(music_data_sp[clid + 10])); + } + + ghost = buffToHex(base64decode(music_data_sp[clid])); + } else if (style == 1 && music_data_dp) { + score = music_data_dp.dpmArray[rank + 7]; + + if (_.isNil(music_data_dp[clid + 10])) { + option = 0; + option_2 = 0; + + ghost_gauge = "00"; + } else { + if (_.isNil(music_data_dp.optArray)) { + option = 0; + option_2 = 0; + } else { + option = music_data_dp.optArray[clid]; + option_2 = music_data_dp.opt2Array[clid]; + } + + ghost_gauge = buffToHex(base64decode(music_data_dp[clid + 10])); + } + + ghost = buffToHex(base64decode(music_data_dp[clid])); + } + + if (!(_.isNil(ghost)) || !(_.isNil(other_ghost))) { + send.pugFile("pug/musicappoint.pug", { + version: versionStr, + + ghost, + ghost_gauge, + option: option, + option_2: option_2, + + oGhost, + }); + } else { + send.success(); + } +}; + +export const musiccrate: EPR = async (info, data, send) => { + const version = info.module; + + send.pugFile("pug/crate.pug", { version }); +}; + +export const musicretry: EPR = async (info, data, send) => { + const version = info.module; + + send.pugFile("pug/musicretry.pug", { version }); +}; diff --git a/handlers/IIDXpc.ts b/handlers/IIDXpc.ts index 61c2f46..14bb680 100644 --- a/handlers/IIDXpc.ts +++ b/handlers/IIDXpc.ts @@ -1,706 +1,2428 @@ -import { settings } from "../models/settings"; -import { pc_data, IIDX27_pc_data,IIDX28_pc_data, IIDX29_pc_data} from "../models/pc_data"; -import { shop_data } from "../models/shop_data"; -import { profile } from "../models/profile"; -import { grade } from "../models/grade"; -import { GetVersion, IDToCode, AppendSettingConverter } from "../util"; -import { - first_note_preview_list, - bombsize_list, - effect_list, -} from "../data/27customlist"; -import { - frame_list, - fullcombo_list, - judge_list, - keybeam_list, - lanecover_list, - menumusic_list, - noteburst_list, - notes_list, - turntable_list, -} from "../data/27customlist"; - -export const pccommon: EPR = async (info, data, send) => { - const version = GetVersion(info); - if (version == 27) { - send.pugFile("pug/27pccommon.pug"); - } - if (version == 28){ - send.pugFile("pug/28pccommon.pug"); - } - if (version == 29){ - send.pugFile("pug/29pccommon.pug"); - } -}; - -export const pcoldget: EPR = async (info, data, send) => { - const refid = $(data).attr().rid; - const profile = await DB.FindOne(refid, { collection: "profile" }); - if (profile) { - send.success(); - } else { - send.deny(); - } -}; - -export const pcgetname: EPR = async (info, data, send) => { - const refid = $(data).attr().rid; - const profile = await DB.FindOne(refid, { collection: "profile" }); - send.object( - K.ATTR({ - idstr: profile.iidxidstr, - name: profile.name, - pid: String(profile.pid), - }) - ); -}; - -export const pctakeover: EPR = async (info, data, send) => { - const refid = $(data).attr().rid; - const profile = await DB.FindOne(refid, { collection: "profile" }); - const version = GetVersion(info); - let pc_data: object; - - if (version == 27) { - pc_data = IIDX27_pc_data; - } - if (version == 28){ - pc_data = IIDX28_pc_data; - } - if (version == 29){ - pc_data = IIDX29_pc_data; - } - - await DB.Upsert( - refid, - { - collection: "profile", - }, - { - $set: { - name: $(data).attr().name, - pid: parseInt($(data).attr().pid), - iidxid: profile.iidxid, - iidxidstr: profile.iidxidstr, - refid: refid, - }, - } - ); - await DB.Upsert( - refid, - { - collection: "pc_data", - version: version, - }, - { - $set: pc_data, - } - ); - send.object( - K.ATTR({ - id: String(profile.iidxid), - }) - ); -}; - -export const pcreg: EPR = async (info, data, send) => { - const id = _.random(10000000, 99999999); - const id_str = IDToCode(id); - const refid = $(data).attr().cid.split('|')[0]; - const version = GetVersion(info); - let pc_data: object; - - if (version == 27) { - pc_data = IIDX27_pc_data; - } - if (version == 28){ - pc_data = IIDX28_pc_data; - } - if (version == 29){ - pc_data = IIDX29_pc_data; - } - - await DB.Upsert( - refid, - { - collection: "profile", - }, - { - $set: { - name: $(data).attr().name, - pid: parseInt($(data).attr().pid), - iidxid: id, - iidxidstr: id_str, - refid: refid, - }, - } - ); - await DB.Upsert( - refid, - { - collection: "pc_data", - version: version, - }, - { - $set: pc_data, - } - ); - - send.object( - K.ATTR({ - id: id, - id_str: id_str, - // status: "0", - }) - ); -}; - -export const pcget: EPR = async (info, data, send) => { - const refid = $(data).attr().rid; - const version = GetVersion(info); - const pc_data = await DB.FindOne(refid, { - collection: "pc_data", - version: version, - }); - if (_.isNil(pc_data)) { - send.deny(); - } else { - const profile = await DB.FindOne(refid, { collection: "profile" }); - const shop_data = await DB.FindOne({ - collection: "shop_data", - }); - const dArray = ( - await DB.Find(refid, { - collection: "grade", - version: version, - }) - ).map((r) => r.dArray); - dArray.sort((a, b) => a[0] - b[0] || a[1] - b[1]); - const settings: settings = { - frame: frame_list.indexOf(U.GetConfig("frame")), - menu_music: menumusic_list.indexOf(U.GetConfig("menu_music")), - note_burst: noteburst_list.indexOf(U.GetConfig("note_burst")), - turntable: turntable_list.indexOf(U.GetConfig("turntable")), - lane_cover: lanecover_list.indexOf(U.GetConfig("lane_cover")), - pacemaker_cover: lanecover_list.indexOf(U.GetConfig("pacemaker_cover")), - note_skin: notes_list.indexOf(U.GetConfig("note_skin")), - judge_font: judge_list.indexOf(U.GetConfig("judge_font")), - note_beam: keybeam_list.indexOf(U.GetConfig("note_beam")), - full_combo_splash: fullcombo_list.indexOf( - U.GetConfig("full_combo_splash") - ), - score_folders: Boolean(U.GetConfig("score_folders")), - clear_folders: Boolean(U.GetConfig("clear_folders")), - difficulty_folders: Boolean(U.GetConfig("difficulty_folders")), - alphabet_folders: Boolean(U.GetConfig("alphabet_folders")), - hide_playcount: Boolean(U.GetConfig("hide_playcount")), - disable_graphcutin: Boolean(U.GetConfig("disable_graphcutin")), - classic_hispeed: Boolean(U.GetConfig("classic_hispeed")), - hide_iidxid: Boolean(U.GetConfig("hide_iidxid")), - disable_musicpreview: Number(U.GetConfig("disable_musicpreview")), - vefx_lock: Number(U.GetConfig("vefx_lock")), - effect: effect_list.indexOf(U.GetConfig("effect")), - bomb_size: bombsize_list.indexOf(U.GetConfig("bomb_size")), - disable_hcn_color: Number(U.GetConfig("disable_hcn_color")), - first_note_preview: first_note_preview_list.indexOf( - U.GetConfig("first_note_preview") - ), - qpro_head: U.GetConfig("qpro_head"), - qpro_hair: U.GetConfig("qpro_hair"), - qpro_hand: U.GetConfig("qpro_hand"), - qpro_face: U.GetConfig("qpro_face"), - qpro_body: U.GetConfig("qpro_body"), - }; - - const appendsetting = AppendSettingConverter( - settings.score_folders, - settings.clear_folders, - settings.difficulty_folders, - settings.alphabet_folders, - settings.hide_playcount, - settings.disable_graphcutin, - settings.classic_hispeed, - settings.hide_iidxid - ); - - if (version == 27) { - send.pugFile("pug/27get.pug", { - settings, - profile, - appendsetting, - pc_data, - shop_data, - dArray, - }); - } - if (version == 28) { - send.pugFile("pug/28get.pug", { - settings, - profile, - appendsetting, - pc_data, - shop_data, - dArray, - }); - } - if (version == 29) { - send.pugFile("pug/29get.pug", { - settings, - profile, - appendsetting, - pc_data, - shop_data, - dArray, - }); - } - } -}; - -export const pcsave: EPR = async (info, data, send) => { - const refid = $(data).attr().cid.split('|')[0]; - const cltype = parseInt($(data).attr().cltype); - const version = GetVersion(info); - const pc_data = await DB.FindOne(refid, { - collection: "pc_data", - version: version, - }); - let spnum = pc_data.spnum, - dpnum = pc_data.dpnum, - sprank = pc_data.sprank, - sppoint = pc_data.sppoint, - dprank = pc_data.dprank, - dppoint = pc_data.dppoint, - spradar = pc_data.spradar, - dpradar = pc_data.dpradar, - dp_clear_mission_clear = pc_data.dp_clear_mission_clear, - dp_clear_mission_level = pc_data.dp_clear_mission_level, - dp_dj_mission_clear = pc_data.dp_dj_mission_clear, - dp_dj_mission_level = pc_data.dp_dj_mission_level, - dp_level = pc_data.dp_level, - dp_mission_point = pc_data.dp_mission_point, - dp_mplay = pc_data.dp_mplay, - enemy_damage = pc_data.enemy_damage, - total_point = pc_data.total_point, - progress = pc_data.progress, - sp_clear_mission_clear = pc_data.sp_clear_mission_clear, - sp_clear_mission_level = pc_data.sp_clear_mission_level, - sp_dj_mission_clear = pc_data.sp_dj_mission_clear, - sp_dj_mission_level = pc_data.sp_dj_mission_level, - sp_level = pc_data.sp_level, - sp_mission_point = pc_data.sp_mission_point, - sp_mplay = pc_data.sp_mplay, - tips_read_list = pc_data.tips_read_list; - //enemy_defeat_flg = pc_data.enemy_defeat_flg; - //mission_clear_num = pc_data.mission_clear_num; - - let d_liflen = 0, - s_liflen = 0, - ngrade = 0; - if (cltype == 0) { - spnum = pc_data.spnum + 1; - dpnum = pc_data.dpnum; - } - if (cltype == 1) { - spnum = pc_data.spnum + 1; - //dpnumって何 - dpnum = pc_data.dpnum + 1; - } - //liflenが存在したとき - if ($(data).attr().d_lift) { - d_liflen = parseInt($(data).attr().d_lift); - } - if ($(data).attr().s_lift) { - s_liflen = parseInt($(data).attr().s_lift); - } - - if (!_.isNil($(data).attr("step").dp_clear_mission_clear)) { - dp_clear_mission_clear = parseInt( - $(data).attr("step").dp_clear_mission_clear - ); - dp_clear_mission_level = parseInt( - $(data).attr("step").dp_clear_mission_level - ); - dp_dj_mission_clear = parseInt($(data).attr("step").dp_dj_mission_clear); - dp_dj_mission_level = parseInt($(data).attr("step").dp_dj_mission_level); - dp_level = parseInt($(data).attr("step").dp_level); - dp_mission_point = parseInt($(data).attr("step").dp_mission_point); - dp_mplay = parseInt($(data).attr("step").dp_mplay); - enemy_damage = parseInt($(data).attr("step").enemy_damage); - total_point = parseInt($(data).attr("step").total_point); - progress = parseInt($(data).attr("step").progress); - sp_clear_mission_clear = parseInt( - $(data).attr("step").sp_clear_mission_clear - ); - sp_clear_mission_level = parseInt( - $(data).attr("step").sp_clear_mission_level - ); - sp_dj_mission_clear = parseInt($(data).attr("step").sp_dj_mission_clear); - sp_dj_mission_level = parseInt($(data).attr("step").sp_dj_mission_level); - sp_level = parseInt($(data).attr("step").sp_level); - sp_mission_point = parseInt($(data).attr("step").sp_mission_point); - sp_mplay = parseInt($(data).attr("step").sp_mplay); - tips_read_list = parseInt($(data).attr("step").tips_read_list); - enemy_defeat_flg = parseInt($(data).attr("step").enemy_defeat_flg); - mission_clear_num = parseInt($(data).attr("step").mission_clear_num); - } - - if ($(data).attr("dj_rank.1").style == "1") { - sprank = $(data).element("dj_rank").numbers("rank"); - sppoint = $(data).element("dj_rank").numbers("point"); - dprank = $(data).element("dj_rank.1").numbers("rank"); - dppoint = $(data).element("dj_rank.1").numbers("point"); - } else if ($(data).attr("dj_rank").style == "0") { - sprank = $(data).element("dj_rank").numbers("rank"); - sppoint = $(data).element("dj_rank").numbers("point"); - dprank = pc_data.dprank; - dppoint = pc_data.dppoint; - } else if ($(data).attr("dj_rank").style == "1") { - sprank = pc_data.sprank; - sppoint = pc_data.sppoint; - dprank = $(data).element("dj_rank").numbers("rank"); - dppoint = $(data).element("dj_rank").numbers("point"); - } else { - sprank = pc_data.sprank; - sppoint = pc_data.sppoint; - dprank = pc_data.dprank; - dppoint = pc_data.dppoint; - } - - if ($(data).attr("notes_radar.1").style == "1") { - spradar = $(data).element("notes_radar").numbers("radar_score"); - dpradar = $(data).element("notes_radar.1").numbers("radar_score"); - } else if ($(data).attr("notes_radar").style == "0") { - spradar = $(data).element("notes_radar").numbers("radar_score"); - dpradar = pc_data.dpradar; - } else if ($(data).attr("notes_radar").style == "1") { - spradar = pc_data.spradar; - dpradar = $(data).element("notes_radar").numbers("radar_score"); - } else { - spradar = pc_data.spradar; - dpradar = pc_data.dpradar; - } - if (version == 27) { - await DB.Upsert( - refid, - { - collection: "pc_data", - version: version, - }, - { - $set: { - deller: - pc_data.deller + parseInt($(data).element("deller").attr().deller), - - trophy: $(data) - .element("achievements") - .bigints("trophy") - .slice(0, 10) - .map(String), - - sprank: sprank, - sppoint: sppoint, - dprank: dprank, - dppoint: dppoint, - - spradar: spradar, - dpradar: dpradar, - - dp_clear_mission_clear: dp_clear_mission_clear, - dp_clear_mission_level: dp_clear_mission_level, - dp_dj_mission_clear: dp_dj_mission_clear, - dp_dj_mission_level: dp_dj_mission_level, - dp_level: dp_level, - dp_mission_point: dp_mission_point, - dp_mplay: dp_mplay, - enemy_damage: enemy_damage, - progress: progress, - sp_clear_mission_clear: sp_clear_mission_clear, - sp_clear_mission_level: sp_clear_mission_level, - sp_dj_mission_clear: sp_dj_mission_clear, - sp_dj_mission_level: sp_dj_mission_level, - sp_level: sp_level, - sp_mission_point: sp_mission_point, - sp_mplay: sp_mplay, - tips_read_list: tips_read_list, - - dpnum: dpnum, - d_auto_scrach: parseInt($(data).attr().d_auto_scrach), - d_camera_layout: parseInt($(data).attr().d_camera_layout), - d_disp_judge: parseInt($(data).attr().d_disp_judge), - d_gauge_disp: parseInt($(data).attr().d_gauge_disp), - d_ghost_score: parseInt($(data).attr().d_ghost_score), - d_gno: parseInt($(data).attr().d_gno), - d_graph_score: parseInt($(data).attr().d_graph_score), - d_gtype: parseInt($(data).attr().d_gtype), - d_hispeed: parseFloat($(data).attr().d_hispeed), - d_judge: parseInt($(data).attr().d_judge), - d_judgeAdj: parseInt($(data).attr().d_judgeAdj), - d_lane_brignt: parseInt($(data).attr().d_lane_brignt), - d_liflen: d_liflen, - d_notes: parseFloat($(data).attr().d_notes), - d_opstyle: parseInt($(data).attr().d_opstyle), - d_pace: parseInt($(data).attr().d_pace), - d_sdlen: parseInt($(data).attr().d_sdlen), - d_sdtype: parseInt($(data).attr().d_sdtype), - d_sorttype: parseInt($(data).attr().d_sorttype), - d_timing: parseInt($(data).attr().d_timing), - d_tsujigiri_disp: parseInt($(data).attr().d_tsujigiri_disp), - dach: parseInt($(data).attr().d_achi), - dp_opt: $(data).attr().dp_opt, - dp_opt2: $(data).attr().dp_opt2, - d_sub_gno: parseInt($(data).attr().d_sub_gno), - - gpos: parseInt($(data).attr().gpos), - mode: parseInt($(data).attr().mode), - pmode: parseInt($(data).attr().pmode), - rtype: parseInt($(data).attr().rtype), - - spnum: spnum, - s_auto_scrach: parseInt($(data).attr().s_auto_scrach), - s_camera_layout: parseInt($(data).attr().s_camera_layout), - s_disp_judge: parseInt($(data).attr().s_disp_judge), - s_gauge_disp: parseInt($(data).attr().s_gauge_disp), - s_ghost_score: parseInt($(data).attr().s_ghost_score), - s_gno: parseInt($(data).attr().s_gno), - s_graph_score: parseInt($(data).attr().s_graph_score), - s_gtype: parseInt($(data).attr().s_gtype), - s_hispeed: parseFloat($(data).attr().s_hispeed), - s_judge: parseInt($(data).attr().s_judge), - s_judgeAdj: parseInt($(data).attr().s_judgeAdj), - s_lane_brignt: parseInt($(data).attr().s_lane_brignt), - s_liflen: s_liflen, - s_notes: parseFloat($(data).attr().s_notes), - s_opstyle: parseInt($(data).attr().s_opstyle), - s_pace: parseInt($(data).attr().s_pace), - s_sdlen: parseInt($(data).attr().s_sdlen), - s_sdtype: parseInt($(data).attr().s_sdtype), - s_sorttype: parseInt($(data).attr().s_sorttype), - s_timing: parseInt($(data).attr().s_timing), - s_tsujigiri_disp: parseInt($(data).attr().s_tsujigiri_disp), - sach: parseInt($(data).attr().s_achi), - sp_opt: $(data).attr().sp_opt, - s_sub_gno: parseInt($(data).attr().s_sub_gno), - }, - } - ); - } - if (version == 28) { - await DB.Upsert( - refid, - { - collection: "pc_data", - version: version, - }, - { - $set: { - deller: - pc_data.deller + parseInt($(data).element("deller").attr().deller), - - trophy: $(data) - .element("achievements") - .bigints("trophy") - .slice(0, 10) - .map(String), - - sprank: sprank, - sppoint: sppoint, - dprank: dprank, - dppoint: dppoint, - - spradar: spradar, - dpradar: dpradar, - - dp_clear_mission_clear: dp_clear_mission_clear, - dp_clear_mission_level: dp_clear_mission_level, - dp_dj_mission_clear: dp_dj_mission_clear, - dp_dj_mission_level: dp_dj_mission_level, - dp_level: dp_level, - dp_mission_point: dp_mission_point, - dp_mplay: dp_mplay, - enemy_damage: enemy_damage, - progress: progress, - sp_clear_mission_clear: sp_clear_mission_clear, - sp_clear_mission_level: sp_clear_mission_level, - sp_dj_mission_clear: sp_dj_mission_clear, - sp_dj_mission_level: sp_dj_mission_level, - sp_level: sp_level, - sp_mission_point: sp_mission_point, - sp_mplay: sp_mplay, - tips_read_list: tips_read_list, - - dpnum: dpnum, - d_auto_scrach: parseInt($(data).attr().d_auto_scrach), - d_camera_layout: parseInt($(data).attr().d_camera_layout), - d_disp_judge: parseInt($(data).attr().d_disp_judge), - d_gauge_disp: parseInt($(data).attr().d_gauge_disp), - d_ghost_score: parseInt($(data).attr().d_ghost_score), - d_gno: parseInt($(data).attr().d_gno), - d_graph_score: parseInt($(data).attr().d_graph_score), - d_gtype: parseInt($(data).attr().d_gtype), - d_hispeed: parseFloat($(data).attr().d_hispeed), - d_judge: parseInt($(data).attr().d_judge), - d_judgeAdj: parseInt($(data).attr().d_judgeAdj), - d_lane_brignt: parseInt($(data).attr().d_lane_brignt), - d_liflen: d_liflen, - d_notes: parseFloat($(data).attr().d_notes), - d_opstyle: parseInt($(data).attr().d_opstyle), - d_pace: parseInt($(data).attr().d_pace), - d_sdlen: parseInt($(data).attr().d_sdlen), - d_sdtype: parseInt($(data).attr().d_sdtype), - d_sorttype: parseInt($(data).attr().d_sorttype), - d_timing: parseInt($(data).attr().d_timing), - d_tsujigiri_disp: parseInt($(data).attr().d_tsujigiri_disp), - dach: parseInt($(data).attr().d_achi), - dp_opt: $(data).attr().dp_opt, - dp_opt2: $(data).attr().dp_opt2, - d_sub_gno: parseInt($(data).attr().d_sub_gno), - - gpos: parseInt($(data).attr().gpos), - mode: parseInt($(data).attr().mode), - pmode: parseInt($(data).attr().pmode), - rtype: parseInt($(data).attr().rtype), - ngrade: parseInt($(data).attr().ngrade), - - spnum: spnum, - s_auto_scrach: parseInt($(data).attr().s_auto_scrach), - s_camera_layout: parseInt($(data).attr().s_camera_layout), - s_disp_judge: parseInt($(data).attr().s_disp_judge), - s_gauge_disp: parseInt($(data).attr().s_gauge_disp), - s_ghost_score: parseInt($(data).attr().s_ghost_score), - s_gno: parseInt($(data).attr().s_gno), - s_graph_score: parseInt($(data).attr().s_graph_score), - s_gtype: parseInt($(data).attr().s_gtype), - s_hispeed: parseFloat($(data).attr().s_hispeed), - s_judge: parseInt($(data).attr().s_judge), - s_judgeAdj: parseInt($(data).attr().s_judgeAdj), - s_lane_brignt: parseInt($(data).attr().s_lane_brignt), - s_liflen: s_liflen, - s_notes: parseFloat($(data).attr().s_notes), - s_opstyle: parseInt($(data).attr().s_opstyle), - s_pace: parseInt($(data).attr().s_pace), - s_sdlen: parseInt($(data).attr().s_sdlen), - s_sdtype: parseInt($(data).attr().s_sdtype), - s_sorttype: parseInt($(data).attr().s_sorttype), - s_timing: parseInt($(data).attr().s_timing), - s_tsujigiri_disp: parseInt($(data).attr().s_tsujigiri_disp), - sach: parseInt($(data).attr().s_achi), - sp_opt: $(data).attr().sp_opt, - s_sub_gno: parseInt($(data).attr().s_sub_gno), - }, - } - ); - } - if (version == 29) { - await DB.Upsert( - refid, - { - collection: "pc_data", - version: version, - }, - { - $set: { - deller: - pc_data.deller + parseInt($(data).element("deller").attr().deller), - - trophy: $(data) - .element("achievements") - .bigints("trophy") - .slice(0, 10) - .map(String), - - sprank: sprank, - sppoint: sppoint, - dprank: dprank, - dppoint: dppoint, - - spradar: spradar, - dpradar: dpradar, - - dp_clear_mission_clear: dp_clear_mission_clear, - dp_clear_mission_level: dp_clear_mission_level, - dp_dj_mission_clear: dp_dj_mission_clear, - dp_dj_mission_level: dp_dj_mission_level, - dp_level: dp_level, - dp_mission_point: dp_mission_point, - dp_mplay: dp_mplay, - enemy_damage: enemy_damage, - total_point: total_point, - progress: progress, - sp_clear_mission_clear: sp_clear_mission_clear, - sp_clear_mission_level: sp_clear_mission_level, - sp_dj_mission_clear: sp_dj_mission_clear, - sp_dj_mission_level: sp_dj_mission_level, - sp_level: sp_level, - sp_mission_point: sp_mission_point, - sp_mplay: sp_mplay, - tips_read_list: tips_read_list, - //enemy_defeat_flg: enemy_defeat_flg, - //mission_clear_num: mission_clear_num, - - dpnum: dpnum, - d_auto_scrach: parseInt($(data).attr().d_auto_scrach), - d_camera_layout: parseInt($(data).attr().d_camera_layout), - d_disp_judge: parseInt($(data).attr().d_disp_judge), - d_gauge_disp: parseInt($(data).attr().d_gauge_disp), - d_ghost_score: parseInt($(data).attr().d_ghost_score), - d_gno: parseInt($(data).attr().d_gno), - d_graph_score: parseInt($(data).attr().d_graph_score), - d_gtype: parseInt($(data).attr().d_gtype), - d_hispeed: parseFloat($(data).attr().d_hispeed), - d_judge: parseInt($(data).attr().d_judge), - d_judgeAdj: parseInt($(data).attr().d_judgeAdj), - d_lane_brignt: parseInt($(data).attr().d_lane_brignt), - d_liflen: d_liflen, - d_notes: parseFloat($(data).attr().d_notes), - d_opstyle: parseInt($(data).attr().d_opstyle), - d_pace: parseInt($(data).attr().d_pace), - d_sdlen: parseInt($(data).attr().d_sdlen), - d_sdtype: parseInt($(data).attr().d_sdtype), - d_sorttype: parseInt($(data).attr().d_sorttype), - d_timing: parseInt($(data).attr().d_timing), - d_tsujigiri_disp: parseInt($(data).attr().d_tsujigiri_disp), - dach: parseInt($(data).attr().d_achi), - dp_opt: $(data).attr().dp_opt, - dp_opt2: $(data).attr().dp_opt2, - d_sub_gno: parseInt($(data).attr().d_sub_gno), - - gpos: parseInt($(data).attr().gpos), - mode: parseInt($(data).attr().mode), - pmode: parseInt($(data).attr().pmode), - rtype: parseInt($(data).attr().rtype), - ngrade: parseInt($(data).attr().ngrade), - - spnum: spnum, - s_auto_scrach: parseInt($(data).attr().s_auto_scrach), - s_camera_layout: parseInt($(data).attr().s_camera_layout), - s_disp_judge: parseInt($(data).attr().s_disp_judge), - s_gauge_disp: parseInt($(data).attr().s_gauge_disp), - s_ghost_score: parseInt($(data).attr().s_ghost_score), - s_gno: parseInt($(data).attr().s_gno), - s_graph_score: parseInt($(data).attr().s_graph_score), - s_gtype: parseInt($(data).attr().s_gtype), - s_hispeed: parseFloat($(data).attr().s_hispeed), - s_judge: parseInt($(data).attr().s_judge), - s_judgeAdj: parseInt($(data).attr().s_judgeAdj), - s_lane_brignt: parseInt($(data).attr().s_lane_brignt), - s_liflen: s_liflen, - s_notes: parseFloat($(data).attr().s_notes), - s_opstyle: parseInt($(data).attr().s_opstyle), - s_pace: parseInt($(data).attr().s_pace), - s_sdlen: parseInt($(data).attr().s_sdlen), - s_sdtype: parseInt($(data).attr().s_sdtype), - s_sorttype: parseInt($(data).attr().s_sorttype), - s_timing: parseInt($(data).attr().s_timing), - s_tsujigiri_disp: parseInt($(data).attr().s_tsujigiri_disp), - sach: parseInt($(data).attr().s_achi), - sp_opt: $(data).attr().sp_opt, - s_sub_gno: parseInt($(data).attr().s_sub_gno), - s_auto_adjust: parseInt($(data).attr().s_auto_adjust), - d_auto_adjust: parseInt($(data).attr().d_auto_adjust), - }, - } - ); - } - send.success(); -}; +import { pc_data, IIDX27_pc_data, IIDX28_pc_data, IIDX29_pc_data, IIDX30_pc_data, IIDX31_pc_data } from "../models/pc_data"; +import { shop_data } from "../models/shop_data"; +import { profile } from "../models/profile"; +import { grade, eisei_grade, eisei_grade_data } from "../models/grade"; +import { lightning_musicmemo, musicmemo_data, lightning_musicmemo_old, musicmemo_data_old, musicfilter_data, lightning_musicfilter } from "../models/music_memo"; +import { lightning_settings, lightning_playdata, TDJ_settings, TDJ_settings_old, TDJ_playdata } from "../models/lightning"; +import { settings, settings_data } from "../models/settings"; +import { rival, rival_data } from "../models/rival"; +import { world_tourism } from "../models/world_tourism"; +import { GetVersion, IDToCode, AppendSettingConverter, randomIntRange, IIDXidTorefid, refidToQpro, refidToPd, refidToProfile } from "../util"; + +export const pccommon: EPR = async (info, data, send) => { + const version = GetVersion(info); + + if (version == 27) { + send.pugFile("pug/27pccommon.pug", { + beat: U.GetConfig("BeatPhase"), + expert: U.GetConfig("ExpertPhase"), + expert_secret: U.GetConfig("ExpertSecretPhase"), + boss: U.GetConfig("BossPhase"), + system_voice: U.GetConfig("SystemVoicePhase"), + extra_boss: U.GetConfig("ExtraBossPhase"), + event_1: U.GetConfig("Event1Phase"), + }); + } else if (version == 28) { + send.pugFile("pug/28pccommon.pug", { + beat: U.GetConfig("BeatPhase"), + expert: U.GetConfig("ExpertPhase"), + expert_secret: U.GetConfig("ExpertSecretPhase"), + boss: U.GetConfig("BossPhase"), + system_voice: U.GetConfig("SystemVoicePhase"), + extra_boss: U.GetConfig("ExtraBossPhase"), + event_1: U.GetConfig("Event1Phase"), + movie_upload: U.GetConfig("MovieUpload"), + }); + } else if (version == 29) { + send.pugFile("pug/29pccommon.pug", { + beat: U.GetConfig("BeatPhase"), + expert: U.GetConfig("ExpertPhase"), + expert_secret: U.GetConfig("ExpertSecretPhase"), + boss: U.GetConfig("BossPhase"), + system_voice: U.GetConfig("SystemVoicePhase"), + extra_boss: U.GetConfig("ExtraBossPhase"), + event_1: U.GetConfig("Event1Phase"), + movie_upload: U.GetConfig("MovieUpload"), + }); + } else if (version == 30) { + send.pugFile("pug/30pccommon.pug", { + beat: U.GetConfig("BeatPhase"), + system_voice: U.GetConfig("SystemVoicePhase"), + movie_upload: U.GetConfig("MovieUpload"), + }); + } else if (version == 31) { + send.pugFile("pug/31pccommon.pug", { + beat: U.GetConfig("BeatPhase"), + system_voice: U.GetConfig("SystemVoicePhase"), + movie_upload: U.GetConfig("MovieUpload"), + }); + } +}; + +export const pcoldget: EPR = async (info, data, send) => { + const refid = $(data).attr().rid; + const profile = await DB.FindOne(refid, { collection: "profile" }); + if (profile) { + send.success(); + } else { + send.deny(); + } +}; + +export const pcgetname: EPR = async (info, data, send) => { + const refid = $(data).attr().rid; + const profile = await DB.FindOne(refid, { collection: "profile" }); + send.object( + K.ATTR({ + idstr: profile.iidxidstr, + name: profile.name, + pid: String(profile.pid), + }) + ); +}; + +export const pctakeover: EPR = async (info, data, send) => { + const refid = $(data).attr().rid; + const profile = await DB.FindOne(refid, { collection: "profile" }); + const version = GetVersion(info); + let pc_data: object; + + if (version == 27) { + pc_data = IIDX27_pc_data; + } else if (version == 28) { + pc_data = IIDX28_pc_data; + } else if (version == 29) { + pc_data = IIDX29_pc_data; + } else if (version == 30) { + pc_data = IIDX30_pc_data; + } else if (version == 31) { + pc_data = IIDX31_pc_data; + } + + await DB.Upsert( + refid, + { + collection: "profile", + }, + { + $set: { + name: $(data).attr().name, + pid: parseInt($(data).attr().pid), + iidxid: profile.iidxid, + iidxidstr: profile.iidxidstr, + refid: refid, + }, + } + ); + await DB.Upsert( + refid, + { + collection: "pc_data", + version: version, + }, + { + $set: pc_data, + } + ); + send.object( + K.ATTR({ + id: String(profile.iidxid), + }) + ); +}; + +export const pcreg: EPR = async (info, data, send) => { + const id = _.random(10000000, 99999999); + const id_str = IDToCode(id); + const refid = $(data).attr().cid.split('|')[0]; + const version = GetVersion(info); + let pc_data: object; + let lightning_settings: object; + let lightning_playdata: object; + + if (version == 27) { + pc_data = IIDX27_pc_data; + lightning_settings = TDJ_settings_old; + lightning_playdata = TDJ_playdata; + } else if (version == 28) { + pc_data = IIDX28_pc_data; + lightning_settings = TDJ_settings_old; + lightning_playdata = TDJ_playdata; + } else if (version == 29) { + pc_data = IIDX29_pc_data; + lightning_settings = TDJ_settings; + lightning_playdata = TDJ_playdata; + } else if (version == 30) { + pc_data = IIDX30_pc_data; + lightning_settings = TDJ_settings; + lightning_playdata = TDJ_playdata; + } else if (version == 31) { + pc_data = IIDX31_pc_data; + lightning_settings = TDJ_settings; + lightning_playdata = TDJ_playdata; + } + + await DB.Upsert( + refid, + { + collection: "profile", + }, + { + $set: { + name: $(data).attr().name, + pid: parseInt($(data).attr().pid), + iidxid: id, + iidxidstr: id_str, + refid: refid, + }, + } + ); + await DB.Upsert( + refid, + { + collection: "pc_data", + version: version, + }, + { + $set: pc_data, + } + ); + await DB.Upsert( + refid, + { + collection: "settings", + }, + { + $set: settings_data + } + ); + await DB.Upsert( + refid, + { + collection: "lightning_settings", + version: version, + }, + { + $set: lightning_settings, + } + ); + await DB.Upsert( + refid, + { + collection: "lightning_playdata", + version: version, + }, + { + $set: lightning_playdata, + } + ); + + send.object( + K.ATTR({ + id: String(id), + id_str: id_str, + // status: "0", + }) + ); +}; + +export const pcget: EPR = async (info, data, send) => { + const refid = $(data).attr().rid; + const version = GetVersion(info); + const pc_data = await DB.FindOne(refid, { + collection: "pc_data", + version: version, + }); + if (_.isNil(pc_data)) { + send.deny(); + } else { + const profile = await DB.FindOne(refid, { collection: "profile" }); + const shop_data = await DB.FindOne({ + collection: "shop_data", + }); + const dArray = ( + await DB.Find(refid, { + collection: "grade", + version: version, + }) + ).map((r) => r.dArray); + dArray.sort((a, b) => a[0] - b[0] || a[1] - b[1]); + let settings: settings = await DB.FindOne(refid, { collection: "settings" }); + if (_.isNil(settings)) { // settings migration // + await DB.Upsert( + refid, + { + collection: "settings", + }, + { + $set: settings_data + } + ) + settings = { ...settings_data, collection: "settings" } + } + if (_.isNil(settings.rival_folders)) { // settings migration #2 // + await DB.Upsert(refid, { collection: "settings" }, { + $set: { + rival_folders: true, + rival_clear_folders: true, + rival_shop_info: true, + rival_played: true, + } + }); + + settings.rival_folders = true; + settings.rival_clear_folders = true; + settings.rival_shop_info = true; + settings.rival_played = true; + } + if (_.isNil(settings.rival_played)) { // settings migration #3 // + await DB.Upsert(refid, { collection: "settings" }, { + $set: { + rival_played: true, + } + }); + + settings.rival_played = true; + } + if (_.isNil(settings.skin_bgm_flg)) { // settings migration #4 // + await DB.Upsert(refid, { collection: "settings" }, { + $set: { + skin_bgm_flg: 0, + skin_frame_flg: 0, + skin_lane_flg: 0, + } + }); + + settings.skin_bgm_flg = 0; + settings.skin_frame_flg = 0; + settings.skin_lane_flg = 0; + } + const appendsetting = AppendSettingConverter( + settings.score_folders, + settings.clear_folders, + settings.difficulty_folders, + settings.alphabet_folders, + settings.rival_folders, + settings.rival_clear_folders, + settings.rival_shop_info, + settings.hide_playcount, + settings.disable_graphcutin, + settings.classic_hispeed, + settings.rival_played, + settings.hide_iidxid + ); + let rivals = await DB.Find(refid, { collection: "rival" }); + let world_tourism = await DB.Find(refid, { collection: "world_tourism" }); + let event_1 = await DB.Find(refid, { collection: "event_1", version: version }); + let event_1s = await DB.Find(refid, { collection: "event_1_sub", version: version }); + + let lightning_settings = await DB.FindOne(refid, { collection: "lightning_settings", version: version }); + let lightning_playdata = await DB.FindOne(refid, { collection: "lightning_playdata", version: version }); + let lightning_musicmemo = await DB.Find(refid, { collection: "lightning_musicmemo", version: version }); + let lightning_musicmemo_old = await DB.Find(refid, { collection: "lightning_musicmemo_old", version: version }); + let lightning_eisei = await DB.Find(refid, { collection: "eisei_grade", version: version }); + let lightning_musicfilter = await DB.Find(refid, { collection: "lightning_musicfilter", version: version }); + + // migration parts // + if (_.isNil(lightning_settings) || _.isNil(lightning_playdata)) { // lightning save support // + if (version >= 29) { + await DB.Upsert( + refid, + { + collection: "lightning_settings", + version: version, + }, + { + $set: TDJ_settings, + } + ); + } else { + await DB.Upsert( + refid, + { + collection: "lightning_settings", + version: version, + }, + { + $set: TDJ_settings_old, + } + ); + } + + await DB.Upsert( + refid, + { + collection: "lightning_playdata", + version: version, + }, + { + $set: TDJ_playdata, + } + ); + + lightning_settings = await DB.FindOne(refid, { collection: "lightning_settings", version: version }); + lightning_playdata = await DB.FindOne(refid, { collection: "lightning_playdata", version: version }); + } + if (_.isNil(profile.language)) { // language save support // + await DB.Upsert( + refid, + { + collection: "profile", + }, + { + $set: { + language: -1 + } + } + ); + + profile.language = -1; + } + if (_.isNil(pc_data.sp_fluctuation) && version == 30) { // new attributes // + await DB.Upsert( + refid, + { + collection: "pc_data", + version: version, + }, + { + $set: { + sp_fluctuation: 0, + dp_fluctuation: 0, + } + } + ); + + pc_data.sp_fluctuation = 0; + pc_data.dp_fluctuation = 0; + } + if (_.isNil(pc_data.s_timing_split) && version == 30) { // bad migration // + await DB.Upsert( + refid, + { + collection: "pc_data", + version: version, + }, + { + $set: { + s_timing_split: 0, + d_timing_split: 0, + s_visualization: 0, + d_visualization: 0, + } + } + ); + + pc_data.s_timing_split = 0; + pc_data.d_timing_split = 0; + pc_data.s_visualization = 0; + pc_data.d_visualization = 0; + } + if (_.isNil(pc_data.event_last_select_gym_id) && version == 27) { // HEROIC VERSE event_1 // + await DB.Upsert( + refid, + { + collection: "pc_data", + version: version, + }, + { + $set: { + event_play_num: 0, + event_last_select_gym_id: 0, + } + } + ); + + pc_data.event_play_num = 0; + pc_data.event_last_select_gym_id = 0; + } + if (_.isNil(pc_data.event_story_prog) && version == 28) { // BISTROVER event_1 // + await DB.Upsert( + refid, + { + collection: "pc_data", + version: version, + }, + { + $set: { + event_play_num: 0, + event_story_prog: 0, + event_last_select_area_id: 0, + event_failed_num: 0, + } + } + ); + + pc_data.event_play_num = 0; + pc_data.event_story_prog = 0; + pc_data.event_last_select_area_id = 0; + pc_data.event_failed_num = 0; + } + if (_.isNil(pc_data.event_last_platform_id) && version == 29) { // CastHour event_1 // + await DB.Upsert( + refid, + { + collection: "pc_data", + version: version, + }, + { + $set: { + event_play_num: 0, + event_last_platform_id: 0, + event_last_platform_type: 0, + } + } + ); + + pc_data.event_play_num = 0; + pc_data.event_last_platform_id = 0; + pc_data.event_last_platform_type = 0; + } + if (_.isNil(pc_data.event_last_select_flyer_id) && version == 30) { // RESIDENT event_1 // + await DB.Upsert( + refid, + { + collection: "pc_data", + version: version, + }, + { + $set: { + event_play_num: 0, + event_last_select_flyer_id: 0, + } + } + ); + + pc_data.event_play_num = 0; + pc_data.event_last_select_flyer_id = 0; + } + + // music_memo // + let mArray = []; + if (lightning_musicmemo.length > 0 && version >= 30) { + lightning_musicmemo.forEach((res) => { + let musicmemo_data: musicmemo_data = { + folder_idx: res.folder_idx, + folder_name: res.folder_name, + play_style: res.play_style, + + music_ids: res.music_ids, + } + + mArray.push(musicmemo_data); + }); + mArray.sort((a: musicmemo_data, b: musicmemo_data): number => a.play_style - b.play_style || a.folder_idx - b.folder_idx); + } else if (lightning_musicmemo_old.length > 0 && version >= 27) { + lightning_musicmemo_old.forEach((res) => { + let musicmemo_data: musicmemo_data_old = { + music_idx: res.music_idx, + play_style: res.play_style, + + music_id: res.music_id, + } + + mArray.push(musicmemo_data); + }); + mArray.sort((a: musicmemo_data_old, b: musicmemo_data_old): number => a.play_style - b.play_style || a.music_idx - b.music_idx); + } + + let fArray = []; + if (lightning_musicfilter.length > 0 && version >= 31) { + lightning_musicfilter.forEach((res) => { + let musicfilter_data: musicfilter_data = { + play_style: res.play_style, + folder_id: res.folder_id, + filter_id: res.filter_id, + + is_valid: res.is_valid, + value0: res.value0, + value1: res.value1, + } + + fArray.push(musicfilter_data); + }); + fArray.sort((a: musicfilter_data, b: musicfilter_data): number => a.play_style - b.play_style || a.folder_id - b.folder_id); + } + + // eisei_grade_data // + let eArray = []; + if (lightning_eisei.length > 0) { + lightning_eisei.forEach((res) => { + let eisei_data: eisei_grade_data = { + grade_type: res.grade_type, + grade_id: res.grade_id, + stage_num: res.stage_num, + clear_type: res.clear_type, + option: res.option, + + past: res.past_achievement, + selected_course: res.past_selected_course, + max_past: res.max_past_achievement, + max_selected_course: res.max_past_selected_course, + } + + eArray.push(eisei_data); + }); + eArray.sort((a: eisei_grade_data, b: eisei_grade_data): number => a.grade_type - b.grade_type || a.grade_id - b.grade_id); + } + + // rivals // + let rArray = []; + if (rivals.length > 0) { + for (let a = 0; a < rivals.length; a++) { + if (version <= 29 && rivals[a].index > 4) continue; + + let profile = await refidToProfile(rivals[a].rival_refid); + let pc_data = await refidToPd(rivals[a].rival_refid); + let qprodata = await refidToQpro(rivals[a].rival_refid); + + let rival_data: rival_data = { + play_style: rivals[a].play_style, + index: rivals[a].index, + + is_robo: false, + + profile: profile, + pc_data: pc_data, + qprodata: qprodata, + } + + rArray.push(rival_data); + } + rArray.sort((a: rival_data, b: rival_data): number => a.play_style - b.play_style || a.index - b.index); + } + + // world_tourism // + let wArray = []; + if (world_tourism.length > 0) { + for (let wt of world_tourism) { + let world_tourism_data = { + tour_id: wt.tour_id, + progress: wt.progress, + } + + wArray.push(world_tourism_data); + } + wArray.sort((a, b) => a.tour_id - b.tour_id); + } + + // event_1 // + let evtArray = [], evtArray2 = []; + if (event_1.length > 0) { + for (let evt of event_1) { + evtArray.push(evt); + } + } + if (event_1s.length > 0) { + for (let evt of event_1s) { + evtArray2.push(evt); + } + } + + if (version == 27) { + send.pugFile("pug/27get.pug", { + settings, + profile, + appendsetting, + pc_data, + shop_data, + dArray, + lightning_settings, + lightning_playdata, + eArray, + rArray, + evtArray, + }); + } else if (version == 28) { + send.pugFile("pug/28get.pug", { + profile, + settings, + appendsetting, + pc_data, + shop_data, + dArray, + lightning_settings, + lightning_playdata, + mArray, + eArray, + rArray, + wArray, + evtArray, + }); + } else if (version == 29) { + send.pugFile("pug/29get.pug", { + profile, + settings, + appendsetting, + pc_data, + shop_data, + dArray, + lightning_settings, + lightning_playdata, + mArray, + eArray, + rArray, + wArray, + evtArray, + evtArray2, + }); + } else if (version == 30) { + send.pugFile("pug/30get.pug", { + profile, + settings, + appendsetting, + pc_data, + shop_data, + dArray, + lightning_settings, + lightning_playdata, + mArray, + eArray, + rArray, + wArray, + evtArray, + evtArray2, + }); + } else if (version == 31) { + send.pugFile("pug/31get.pug", { + profile, + settings, + appendsetting, + pc_data, + shop_data, + dArray, + lightning_settings, + lightning_playdata, + mArray, + fArray, + eArray, + rArray, + wArray, + evtArray, + evtArray2, + }); + } + } +}; + +export const pcsave: EPR = async (info, data, send) => { + const version = GetVersion(info); + const cltype = parseInt($(data).attr().cltype); + const refid = await IIDXidTorefid(parseInt($(data).attr().iidxid)); // temporarily using this function to fix save // + const profile = await DB.FindOne(refid, { + collection: "profile", + }); + const pc_data = await DB.FindOne(refid, { + collection: "pc_data", + version: version, + }); + const lightning_playdata = await DB.FindOne(refid, { + collection: "lightning_playdata", + version: version, + }); + const lightning_settings = await DB.FindOne(refid, { + collection: "lightning_settings", + version: version, + }); + + const isTDJ = !(_.isNil($(data).element("lightning_play_data"))); // use this element to determine [TDJ] instead of info.model // + const hasStepUpData = !(_.isNil($(data).element("step"))); + const hasLanguageData = !(_.isNil($(data).element("language_setting"))); + const hasTowerData = !(_.isNil($(data).element("tower_data"))); + const hasMusicMemo = !(_.isNil($(data).element("music_memo"))); + const hasWorldTourism = !(_.isNil($(data).element("world_tourism_data"))); + const hasEventData = !(_.isNil($(data).element("event1"))) || !(_.isNil($(data).element("event_1"))); + const hasBadgeData = !(_.isNil($(data).element("badge"))); + const hasMusicFilter = !(_.isNil($(data).element("music_filter"))); + const hasSkinData = !(_.isNil($(data).element("skin_equip"))); + const hasTDJSkinData = !(_.isNil($(data).element("tdjskin_equip"))); + + let spnum = pc_data.spnum, + dpnum = pc_data.dpnum, + sprank = pc_data.sprank, + sppoint = pc_data.sppoint, + dprank = pc_data.dprank, + dppoint = pc_data.dppoint, + spradar = pc_data.spradar, + dpradar = pc_data.dpradar; + + // stepup // + let dp_clear_mission_clear = pc_data.dp_clear_mission_clear, + dp_clear_mission_level = pc_data.dp_clear_mission_level, + dp_dj_mission_clear = pc_data.dp_dj_mission_clear, + dp_dj_mission_level = pc_data.dp_dj_mission_level, + dp_level = pc_data.dp_level, + dp_mission_point = pc_data.dp_mission_point, + dp_mplay = pc_data.dp_mplay, + enemy_damage = pc_data.enemy_damage, + total_point = pc_data.total_point, + progress = pc_data.progress, + sp_clear_mission_clear = pc_data.sp_clear_mission_clear, + sp_clear_mission_level = pc_data.sp_clear_mission_level, + sp_dj_mission_clear = pc_data.sp_dj_mission_clear, + sp_dj_mission_level = pc_data.sp_dj_mission_level, + sp_level = pc_data.sp_level, + sp_mission_point = pc_data.sp_mission_point, + sp_mplay = pc_data.sp_mplay, + tips_read_list = pc_data.tips_read_list, + enemy_defeat_flg = pc_data.enemy_defeat_flg, + mission_clear_num = pc_data.mission_clear_num, + sp_fluctuation = pc_data.sp_fluctuation, + dp_fluctuation = pc_data.dp_fluctuation; + + // lightning // + let lightning_spnum = lightning_playdata.sp_num, + lightning_dpnum = lightning_playdata.dp_num; + let lightning_skin = lightning_settings.skin, + lightning_skin_2 = lightning_settings.skin_2, + lightning_headphone_vol = lightning_settings.headphone_vol, + lightning_resistance_sp_1 = lightning_settings.resistance_sp_left, + lightning_resistance_sp_2 = lightning_settings.resistance_sp_right, + lightning_resistance_dp_1 = lightning_settings.resistance_dp_left, + lightning_resistance_dp_2 = lightning_settings.resistance_dp_right, + lightning_vefx = lightning_settings.vefx, + lightning_light = lightning_settings.light, + lightning_concentration = lightning_settings.concentration, + lightning_keyboard_kind = lightning_settings.keyboard_kind; + + // IIDX Tower // + let tower_kbd = profile.tower_kbd, + tower_scr = profile.tower_scr; + + // event_1 // + let event_play_num = pc_data.event_play_num; + + let d_liflen = 0, + s_liflen = 0, + ngrade = 0; + + if (cltype == 0) { + spnum = pc_data.spnum + 1; + dpnum = pc_data.dpnum; + } + if (cltype == 1) { + spnum = pc_data.spnum; + dpnum = pc_data.dpnum + 1; + } + + //liflenが存在したとき + if ($(data).attr().d_lift) { + d_liflen = parseInt($(data).attr().d_lift); + } + if ($(data).attr().s_lift) { + s_liflen = parseInt($(data).attr().s_lift); + } + + // lightning_playcount // + if (isTDJ) { + if (cltype == 0) { + lightning_spnum = lightning_playdata.sp_num + 1; + lightning_dpnum = lightning_playdata.dp_num; + } + if (cltype == 1) { + lightning_spnum = lightning_playdata.sp_num; + lightning_dpnum = lightning_playdata.dp_num + 1; + } + } + + // IIDX Tower // + if (hasTowerData) { + if (_.isNil(tower_kbd) || _.isNil(tower_scr)) { tower_kbd = 0; tower_scr = 0; } + tower_kbd += parseInt($(data).element("tower_data").attr().keyboard); + tower_scr += parseInt($(data).element("tower_data").attr().scratch); + } + + // stepup // + if (hasStepUpData) { + dp_clear_mission_clear = parseInt( + $(data).attr("step").dp_clear_mission_clear + ); + dp_clear_mission_level = parseInt( + $(data).attr("step").dp_clear_mission_level + ); + dp_dj_mission_clear = parseInt($(data).attr("step").dp_dj_mission_clear); + dp_dj_mission_level = parseInt($(data).attr("step").dp_dj_mission_level); + dp_level = parseInt($(data).attr("step").dp_level); + dp_mission_point = parseInt($(data).attr("step").dp_mission_point); + dp_mplay = parseInt($(data).attr("step").dp_mplay); + enemy_damage = parseInt($(data).attr("step").enemy_damage); + total_point = parseInt($(data).attr("step").total_point); + progress = parseInt($(data).attr("step").progress); + sp_clear_mission_clear = parseInt( + $(data).attr("step").sp_clear_mission_clear + ); + sp_clear_mission_level = parseInt( + $(data).attr("step").sp_clear_mission_level + ); + sp_dj_mission_clear = parseInt($(data).attr("step").sp_dj_mission_clear); + sp_dj_mission_level = parseInt($(data).attr("step").sp_dj_mission_level); + sp_level = parseInt($(data).attr("step").sp_level); + sp_mission_point = parseInt($(data).attr("step").sp_mission_point); + sp_mplay = parseInt($(data).attr("step").sp_mplay); + tips_read_list = parseInt($(data).attr("step").tips_read_list); + enemy_defeat_flg = parseInt($(data).attr("step").enemy_defeat_flg); + mission_clear_num = parseInt($(data).attr("step").mission_clear_num); + sp_fluctuation = parseInt($(data).attr("step").sp_fluctuation); + dp_fluctuation = parseInt($(data).attr("step").dp_fluctuation); + } + + if ($(data).attr("dj_rank.1").style == "1") { + sprank = $(data).element("dj_rank").numbers("rank"); + sppoint = $(data).element("dj_rank").numbers("point"); + dprank = $(data).element("dj_rank.1").numbers("rank"); + dppoint = $(data).element("dj_rank.1").numbers("point"); + } else if ($(data).attr("dj_rank").style == "0") { + sprank = $(data).element("dj_rank").numbers("rank"); + sppoint = $(data).element("dj_rank").numbers("point"); + dprank = pc_data.dprank; + dppoint = pc_data.dppoint; + } else if ($(data).attr("dj_rank").style == "1") { + sprank = pc_data.sprank; + sppoint = pc_data.sppoint; + dprank = $(data).element("dj_rank").numbers("rank"); + dppoint = $(data).element("dj_rank").numbers("point"); + } else { + sprank = pc_data.sprank; + sppoint = pc_data.sppoint; + dprank = pc_data.dprank; + dppoint = pc_data.dppoint; + } + + if ($(data).attr("notes_radar.1").style == "1") { + spradar = $(data).element("notes_radar").numbers("radar_score"); + dpradar = $(data).element("notes_radar.1").numbers("radar_score"); + } else if ($(data).attr("notes_radar").style == "0") { + spradar = $(data).element("notes_radar").numbers("radar_score"); + dpradar = pc_data.dpradar; + } else if ($(data).attr("notes_radar").style == "1") { + spradar = pc_data.spradar; + dpradar = $(data).element("notes_radar").numbers("radar_score"); + } else { + spradar = pc_data.spradar; + dpradar = pc_data.dpradar; + } + + // lightning_settings // + let music_memo = []; + let music_filter = []; + if (isTDJ) { + lightning_headphone_vol = parseInt($(data).element("lightning_setting").attr().headphone_vol); + + lightning_resistance_sp_1 = parseInt($(data).element("lightning_setting").attr().resistance_sp_left); + lightning_resistance_sp_2 = parseInt($(data).element("lightning_setting").attr().resistance_sp_right); + lightning_resistance_dp_1 = parseInt($(data).element("lightning_setting").attr().resistance_dp_left); + lightning_resistance_dp_2 = parseInt($(data).element("lightning_setting").attr().resistance_dp_right); + + lightning_vefx = $(data).element("lightning_setting").numbers("slider"); + lightning_light = $(data).element("lightning_setting").numbers("light"); + + lightning_concentration = $(data).element("lightning_setting").number("concentration"); + + lightning_keyboard_kind = parseInt($(data).element("lightning_setting").attr().keyboard_kind); + + if (hasMusicMemo) { + if (version >= 30) { + $(data).element("music_memo").elements("folder").forEach((res) => { + let musicmemo_data: musicmemo_data = { + folder_idx: parseInt(res.attr().folder_id), + folder_name: res.attr().name, + play_style: parseInt(res.attr().play_style), + + music_ids: res.numbers("music_id"), + }; + + music_memo.push(musicmemo_data); + }); + } else if (version >= 27) { + $(data).element("music_memo").elements("music").forEach((res) => { + let musicmemo_data: musicmemo_data_old = { + music_idx: parseInt(res.attr().index), + music_id: parseInt(res.attr().music_id), + play_style: parseInt(res.attr().play_style), + }; + + music_memo.push(musicmemo_data); + }); + } + } + + if (hasMusicFilter) { + $(data).element("music_filter").elements("folder").forEach((res) => { + let musicfilter_data: musicfilter_data = { + play_style: parseInt(res.attr().play_style), + folder_id: parseInt(res.attr().folder_id), + filter_id: parseInt(res.attr().filter_id), + is_valid: res.bool("is_valid"), + value0: parseInt(res.attr().value0), + value1: parseInt(res.attr().value1), + }; + + music_filter.push(musicfilter_data); + }); + } + } + + let wt_data = []; + if (hasWorldTourism) { + $(data).elements("world_tourism_data").forEach((res) => { + let tourInfo = { + tour_id: parseInt(res.attr().tour_id), + progress: parseInt(res.attr().progress), + } + + wt_data.push(tourInfo); + }); + + wt_data.forEach((res) => { + DB.Upsert( + refid, + { + collection: "world_tourism", + version: version, + tour_id: parseInt(res.tour_id), + }, + { + $set: { + progress: parseInt(res.progress), + } + } + ); + }); + } + + let event_data, event_sub_data, eArray = []; + if (hasEventData) { + if (_.isNil(event_play_num)) { event_play_num = 0; } + event_play_num += 1; + + if (version == 27) { + $(data).element("event1").elements("gym_data").forEach((res) => { + event_data = { + gym_id: res.attr().gym_id, + play_num: res.attr().play_num, + gauge_spirit: res.attr().gauge_spirit, + gauge_technique: res.attr().gauge_technique, + gauge_body: res.attr().gauge_body, + boss_attack_num: res.attr().boss_attack_num, + boss_damage: res.attr().boss_damage, + disp_lounge_list: res.attr().disp_lounge_list, + stb_type: res.attr().stb_type, + is_complete: res.number("is_complete"), + is_gauge_max: res.number("is_gauge_max"), + } + + eArray.push(event_data); + }); + } + else if (version == 28) { + $(data).element("event_1").elements("area_data").forEach((res) => { + event_data = { + area_id: res.attr().area_id, + play_num: res.attr().play_num, + recipe_prog0: res.attr().recipe_prog0, + recipe_prog1: res.attr().recipe_prog1, + recipe_prog2: res.attr().recipe_prog2, + recipe_prog3: res.attr().recipe_prog3, + recipe_prog4: res.attr().recipe_prog4, + recipe_prog5: res.attr().recipe_prog5, + operation_num: res.attr().operation_num, + operation_prog: res.attr().operation_prog, + last_select_recipe: res.attr().last_select_recipe, + area_prog: res.attr().area_prog, + is_complete: res.number("is_complete"), + } + + eArray.push(event_data); + }); + } + else if (version == 29) { + $(data).element("event_1").elements("watch_data").forEach((res) => { + if (!(_.isNil(res.element("channel")))) { + event_data = { + last_select_channel: res.attr().last_select_channel, + platform_id: res.attr().platform_id, + platform_prog: res.attr().platform_prog, + play_num: res.attr().play_num, + }; + + event_sub_data = { + platform_id: res.attr().platform_id, + channel_id: res.element("channel").attr().channel_id, + gauge: res.element("channel").attr().gauge, + channel_play_num: res.element("channel").attr().play_num, + is_complete: res.element("channel").number("is_complete"), + } + } else { + event_data = { + last_select_channel: res.attr().last_select_channel, + platform_id: res.attr().platform_id, + platform_prog: res.attr().platform_prog, + play_num: res.attr().play_num, + } + + event_sub_data = { + platform_id: res.attr().platform_id, + channel_id: 0, + gauge: 0, + channel_play_num: 0, + is_complete: 0, + } + } + + eArray.push([event_data, event_sub_data]); + }); + } + else if (version == 30) { + $(data).element("event_1").elements("flyer_data").forEach((res) => { + if (!(_.isNil(res.element("genre_data")))) { + event_data = { + last_select_genre: res.attr().last_select_genre, + flyer_id: res.attr().flyer_id, + flyer_prog: res.attr().flyer_prog, + play_num: res.attr().play_num, + skill_param: res.attr().skill_param, + }; + + event_sub_data = { + flyer_id: res.attr().flyer_id, + genre_id: res.element("genre_data").attr().genre_id, + gauge: res.element("genre_data").attr().gauge, + genre_playnum: res.element("genre_data").attr().play_num, + is_complete: res.element("genre_data").number("is_complete"), + } + } else { + event_data = { + last_select_genre: res.attr().last_select_genre, + flyer_id: res.attr().flyer_id, + flyer_prog: res.attr().flyer_prog, + play_num: res.attr().play_num, + skill_param: res.attr().skill_param, + }; + + event_sub_data = { + flyer_id: res.attr().flyer_id, + genre_id: 0, + gauge: 0, + genre_playnum: 0, + is_complete: 0, + } + } + + eArray.push([event_data, event_sub_data]); + }); + } + } + + let badge_data = []; + if (hasBadgeData) { + // possible multiple data if flg_id exists // + /* [save (total : 6) ] + today_recommend (flg) + weekly_recommend (flg) + visitor (flg_id, flg) [1] + notes_rader (flg_id, flg) [2] + world_tourism (flg) + event1 (flg_id, flg) [10] + */ + + /* [get] + category_id // 0~9 + badge_flg_id + badge_flg + */ + + let badge = $(data).element("badge"); + if (!(_.isNil(badge.element("today_recommend")))) { + let badgeInfo = { + category_id: "today_recommend", + flg: parseInt(badge.element("today_recommend").attr().flg), + }; + + badge_data.push(badgeInfo); + } + + if (!(_.isNil(badge.element("weekly_recommend")))) { + let badgeInfo = { + category_id: "weekly_recommend", + flg: parseInt(badge.element("weekly_recommend").attr().flg), + }; + + badge_data.push(badgeInfo); + } + + if (!(_.isNil(badge.element("visitor")))) { + badge.elements("visitor").forEach((res) => { + let badgeInfo = { + category_id: "visitor", + flg_id: parseInt(res.attr().flg_id), + flg: parseInt(res.attr().flg), + }; + + badge_data.push(badgeInfo); + }); + } + + if (!(_.isNil(badge.element("notes_radar")))) { + badge.elements("notes_radar").forEach((res) => { + let badgeInfo = { + category_id: "notes_radar", + flg_id: parseInt(res.attr().flg_id), + flg: parseInt(res.attr().flg), + }; + + badge_data.push(badgeInfo); + }); + } + + if (!(_.isNil(badge.element("world_tourism")))) { + let badgeInfo = { + category_id: "world_tourism", + flg: parseInt(badge.element("world_tourism").attr().flg), + }; + + badge_data.push(badgeInfo); + } + + if (!(_.isNil(badge.element("event1")))) { + badge.elements("event1").forEach((res) => { + let badgeInfo = { + category_id: "event1", + flg_id: parseInt(res.attr().flg_id), + flg: parseInt(res.attr().flg), + }; + + badge_data.push(badgeInfo); + }); + } + + // TODO:: Figure category_name to category_id // + } + + // cursed // + if (hasSkinData) { + let skinData = $(data).elements("skin_equip"); + let note_burst, bomb_size, turntable, judge_font, + note_skin, note_size, lane_cover, pacemaker_cover, + lift_cover, note_beam, note_beam_size, full_combo_splash; + + skinData.forEach((res) => { + if (parseInt(res.attr().skin_id) == 1) { note_burst = parseInt(res.attr().skin_no); } + else if (parseInt(res.attr().skin_id) == 2) { bomb_size = parseInt(res.attr().skin_no); } + else if (parseInt(res.attr().skin_id) == 3) { turntable = parseInt(res.attr().skin_no); } + else if (parseInt(res.attr().skin_id) == 4) { judge_font = parseInt(res.attr().skin_no); } + else if (parseInt(res.attr().skin_id) == 5) { note_skin = parseInt(res.attr().skin_no); } + else if (parseInt(res.attr().skin_id) == 6) { note_size = parseInt(res.attr().skin_no); } + + else if (parseInt(res.attr().skin_id) == 13) { lane_cover = parseInt(res.attr().skin_no); } + else if (parseInt(res.attr().skin_id) == 14) { pacemaker_cover = parseInt(res.attr().skin_no); } + else if (parseInt(res.attr().skin_id) == 15) { lift_cover = parseInt(res.attr().skin_no); } + else if (parseInt(res.attr().skin_id) == 16) { note_beam = parseInt(res.attr().skin_no); } + else if (parseInt(res.attr().skin_id) == 17) { note_beam_size = parseInt(res.attr().skin_no); } + else if (parseInt(res.attr().skin_id) == 18) { full_combo_splash = parseInt(res.attr().skin_no); } + }); + + await DB.Upsert( + refid, + { + collection: "settings", + }, + { + $set: { + note_burst, + bomb_size, + turntable, + judge_font, + note_skin, + note_size, + + lane_cover, + pacemaker_cover, + lift_cover, + note_beam, + note_beam_size, + full_combo_splash, + } + }); + } + + if (isTDJ && hasTDJSkinData) { + let skinData = $(data).elements("tdjskin_equip"); + let premium_area; + + skinData.forEach((res) => { + if (parseInt(res.attr().skin_id) == 0) { premium_area = parseInt(res.attr().skin_no); } + }); + + await DB.Upsert( + refid, + { + collection: "settings", + }, + { + $set: { + premium_area, + } + }); + } + + if (version == 27) { + await DB.Upsert( + refid, + { + collection: "pc_data", + version: version, + }, + { + $set: { + deller: + pc_data.deller + parseInt($(data).element("deller").attr().deller), + + trophy: $(data) + .element("achievements") + .bigints("trophy") + .slice(0, 10) + .map(String), + + sprank: sprank, + sppoint: sppoint, + dprank: dprank, + dppoint: dppoint, + + spradar: spradar, + dpradar: dpradar, + + dp_clear_mission_clear: dp_clear_mission_clear, + dp_clear_mission_level: dp_clear_mission_level, + dp_dj_mission_clear: dp_dj_mission_clear, + dp_dj_mission_level: dp_dj_mission_level, + dp_level: dp_level, + dp_mission_point: dp_mission_point, + dp_mplay: dp_mplay, + enemy_damage: enemy_damage, + progress: progress, + sp_clear_mission_clear: sp_clear_mission_clear, + sp_clear_mission_level: sp_clear_mission_level, + sp_dj_mission_clear: sp_dj_mission_clear, + sp_dj_mission_level: sp_dj_mission_level, + sp_level: sp_level, + sp_mission_point: sp_mission_point, + sp_mplay: sp_mplay, + tips_read_list: tips_read_list, + + dpnum: dpnum, + d_auto_scrach: parseInt($(data).attr().d_auto_scrach), + d_camera_layout: parseInt($(data).attr().d_camera_layout), + d_disp_judge: parseInt($(data).attr().d_disp_judge), + d_gauge_disp: parseInt($(data).attr().d_gauge_disp), + d_ghost_score: parseInt($(data).attr().d_ghost_score), + d_gno: parseInt($(data).attr().d_gno), + d_graph_score: parseInt($(data).attr().d_graph_score), + d_gtype: parseInt($(data).attr().d_gtype), + d_hispeed: parseFloat($(data).attr().d_hispeed), + d_judge: parseInt($(data).attr().d_judge), + d_judgeAdj: parseInt($(data).attr().d_judgeAdj), + d_lane_brignt: parseInt($(data).attr().d_lane_brignt), + d_liflen: d_liflen, + d_notes: parseFloat($(data).attr().d_notes), + d_opstyle: parseInt($(data).attr().d_opstyle), + d_pace: parseInt($(data).attr().d_pace), + d_sdlen: parseInt($(data).attr().d_sdlen), + d_sdtype: parseInt($(data).attr().d_sdtype), + d_sorttype: parseInt($(data).attr().d_sorttype), + d_timing: parseInt($(data).attr().d_timing), + d_tsujigiri_disp: parseInt($(data).attr().d_tsujigiri_disp), + dach: parseInt($(data).attr().d_achi), + dp_opt: $(data).attr().dp_opt, + dp_opt2: $(data).attr().dp_opt2, + d_sub_gno: parseInt($(data).attr().d_sub_gno), + + gpos: parseInt($(data).attr().gpos), + mode: parseInt($(data).attr().mode), + pmode: parseInt($(data).attr().pmode), + rtype: parseInt($(data).attr().rtype), + + spnum: spnum, + s_auto_scrach: parseInt($(data).attr().s_auto_scrach), + s_camera_layout: parseInt($(data).attr().s_camera_layout), + s_disp_judge: parseInt($(data).attr().s_disp_judge), + s_gauge_disp: parseInt($(data).attr().s_gauge_disp), + s_ghost_score: parseInt($(data).attr().s_ghost_score), + s_gno: parseInt($(data).attr().s_gno), + s_graph_score: parseInt($(data).attr().s_graph_score), + s_gtype: parseInt($(data).attr().s_gtype), + s_hispeed: parseFloat($(data).attr().s_hispeed), + s_judge: parseInt($(data).attr().s_judge), + s_judgeAdj: parseInt($(data).attr().s_judgeAdj), + s_lane_brignt: parseInt($(data).attr().s_lane_brignt), + s_liflen: s_liflen, + s_notes: parseFloat($(data).attr().s_notes), + s_opstyle: parseInt($(data).attr().s_opstyle), + s_pace: parseInt($(data).attr().s_pace), + s_sdlen: parseInt($(data).attr().s_sdlen), + s_sdtype: parseInt($(data).attr().s_sdtype), + s_sorttype: parseInt($(data).attr().s_sorttype), + s_timing: parseInt($(data).attr().s_timing), + s_tsujigiri_disp: parseInt($(data).attr().s_tsujigiri_disp), + sach: parseInt($(data).attr().s_achi), + sp_opt: $(data).attr().sp_opt, + s_sub_gno: parseInt($(data).attr().s_sub_gno), + }, + } + ); + + // lightning_stuffs // + if (isTDJ) { + await DB.Upsert( + refid, + { + collection: "lightning_playdata", + version: version, + }, + { + $set: { + sp_num: lightning_spnum, + dp_num: lightning_dpnum, + }, + } + ); + + await DB.Upsert( + refid, + { + collection: "lightning_settings", + version: version, + }, + { + $set: { + skin: lightning_skin, + skin_2: lightning_skin_2, + + headphone_vol: lightning_headphone_vol, + + resistance_sp_left: lightning_resistance_sp_1, + resistance_sp_right: lightning_resistance_sp_2, + resistance_dp_left: lightning_resistance_dp_1, + resistance_dp_right: lightning_resistance_dp_2, + + vefx: lightning_vefx, + light: lightning_light, + concentration: lightning_concentration, + }, + } + ); + } + + // language // + if (hasLanguageData) { + await DB.Upsert( + refid, + { + collection: "profile", + }, + { + $set: { + language: parseInt($(data).element("language_setting").attr().language), + }, + } + ); + } + + // event_1 // + if (hasEventData) { + await DB.Upsert( + refid, + { + collection: "pc_data", + version: version, + }, + { + $set: { + event_play_num: event_play_num, + event_last_select_gym_id: parseInt($(data).element("event1").attr().last_select_gym_id), + } + }); + + eArray.forEach((res) => { + DB.Upsert( + refid, + { + collection: "event_1", + version: version, + gym_id: res.gym_id + }, + { + $set: res, + }); + }); + } + } + else if (version == 28) { + await DB.Upsert( + refid, + { + collection: "pc_data", + version: version, + }, + { + $set: { + deller: + pc_data.deller + parseInt($(data).element("deller").attr().deller), + + trophy: $(data) + .element("achievements") + .bigints("trophy") + .slice(0, 10) + .map(String), + + sprank: sprank, + sppoint: sppoint, + dprank: dprank, + dppoint: dppoint, + + spradar: spradar, + dpradar: dpradar, + + dp_clear_mission_clear: dp_clear_mission_clear, + dp_clear_mission_level: dp_clear_mission_level, + dp_dj_mission_clear: dp_dj_mission_clear, + dp_dj_mission_level: dp_dj_mission_level, + dp_level: dp_level, + dp_mission_point: dp_mission_point, + dp_mplay: dp_mplay, + enemy_damage: enemy_damage, + progress: progress, + sp_clear_mission_clear: sp_clear_mission_clear, + sp_clear_mission_level: sp_clear_mission_level, + sp_dj_mission_clear: sp_dj_mission_clear, + sp_dj_mission_level: sp_dj_mission_level, + sp_level: sp_level, + sp_mission_point: sp_mission_point, + sp_mplay: sp_mplay, + tips_read_list: tips_read_list, + + dpnum: dpnum, + d_auto_scrach: parseInt($(data).attr().d_auto_scrach), + d_camera_layout: parseInt($(data).attr().d_camera_layout), + d_disp_judge: parseInt($(data).attr().d_disp_judge), + d_gauge_disp: parseInt($(data).attr().d_gauge_disp), + d_ghost_score: parseInt($(data).attr().d_ghost_score), + d_gno: parseInt($(data).attr().d_gno), + d_graph_score: parseInt($(data).attr().d_graph_score), + d_gtype: parseInt($(data).attr().d_gtype), + d_hispeed: parseFloat($(data).attr().d_hispeed), + d_judge: parseInt($(data).attr().d_judge), + d_judgeAdj: parseInt($(data).attr().d_judgeAdj), + d_lane_brignt: parseInt($(data).attr().d_lane_brignt), + d_liflen: d_liflen, + d_notes: parseFloat($(data).attr().d_notes), + d_opstyle: parseInt($(data).attr().d_opstyle), + d_pace: parseInt($(data).attr().d_pace), + d_sdlen: parseInt($(data).attr().d_sdlen), + d_sdtype: parseInt($(data).attr().d_sdtype), + d_sorttype: parseInt($(data).attr().d_sorttype), + d_timing: parseInt($(data).attr().d_timing), + d_tsujigiri_disp: parseInt($(data).attr().d_tsujigiri_disp), + dach: parseInt($(data).attr().d_achi), + dp_opt: $(data).attr().dp_opt, + dp_opt2: $(data).attr().dp_opt2, + d_sub_gno: parseInt($(data).attr().d_sub_gno), + + gpos: parseInt($(data).attr().gpos), + mode: parseInt($(data).attr().mode), + pmode: parseInt($(data).attr().pmode), + rtype: parseInt($(data).attr().rtype), + ngrade: parseInt($(data).attr().ngrade), + + spnum: spnum, + s_auto_scrach: parseInt($(data).attr().s_auto_scrach), + s_camera_layout: parseInt($(data).attr().s_camera_layout), + s_disp_judge: parseInt($(data).attr().s_disp_judge), + s_gauge_disp: parseInt($(data).attr().s_gauge_disp), + s_ghost_score: parseInt($(data).attr().s_ghost_score), + s_gno: parseInt($(data).attr().s_gno), + s_graph_score: parseInt($(data).attr().s_graph_score), + s_gtype: parseInt($(data).attr().s_gtype), + s_hispeed: parseFloat($(data).attr().s_hispeed), + s_judge: parseInt($(data).attr().s_judge), + s_judgeAdj: parseInt($(data).attr().s_judgeAdj), + s_lane_brignt: parseInt($(data).attr().s_lane_brignt), + s_liflen: s_liflen, + s_notes: parseFloat($(data).attr().s_notes), + s_opstyle: parseInt($(data).attr().s_opstyle), + s_pace: parseInt($(data).attr().s_pace), + s_sdlen: parseInt($(data).attr().s_sdlen), + s_sdtype: parseInt($(data).attr().s_sdtype), + s_sorttype: parseInt($(data).attr().s_sorttype), + s_timing: parseInt($(data).attr().s_timing), + s_tsujigiri_disp: parseInt($(data).attr().s_tsujigiri_disp), + sach: parseInt($(data).attr().s_achi), + sp_opt: $(data).attr().sp_opt, + s_sub_gno: parseInt($(data).attr().s_sub_gno), + }, + } + ); + + // lightning_stuffs // + if (isTDJ) { + await DB.Upsert( + refid, + { + collection: "lightning_playdata", + version: version, + }, + { + $set: { + sp_num: lightning_spnum, + dp_num: lightning_dpnum, + }, + } + ); + + await DB.Upsert( + refid, + { + collection: "lightning_settings", + version: version, + }, + { + $set: { + skin: lightning_skin, + skin_2: lightning_skin_2, + + headphone_vol: lightning_headphone_vol, + + resistance_sp_left: lightning_resistance_sp_1, + resistance_sp_right: lightning_resistance_sp_2, + resistance_dp_left: lightning_resistance_dp_1, + resistance_dp_right: lightning_resistance_dp_2, + + vefx: lightning_vefx, + light: lightning_light, + concentration: lightning_concentration, + }, + } + ); + + if (hasMusicMemo) { + music_memo.forEach((res) => { + DB.Upsert( + refid, + { + collection: "lightning_musicmemo_old", + version: version, + music_idx: res.music_idx, + play_style: res.play_style, + }, + { + $set: { + music_id: res.music_id, + }, + }); + }); + } + } + + // language // + if (hasLanguageData) { + await DB.Upsert( + refid, + { + collection: "profile", + }, + { + $set: { + language: parseInt($(data).element("language_setting").attr().language), + }, + } + ); + } + + // event_1 // + if (hasEventData) { + await DB.Upsert( + refid, + { + collection: "pc_data", + version: version, + }, + { + $set: { + event_play_num: event_play_num, + event_story_prog: parseInt($(data).element("event_1").attr().story_prog), + event_last_select_area_id: parseInt($(data).element("event_1").attr().last_select_area_id), + event_failed_num: parseInt($(data).element("event_1").attr().failed_num), + } + }); + + eArray.forEach((res) => { + DB.Upsert(refid, { + collection: "event_1", + version: version, + area_id: res.area_id + }, + { + $set: res, + }); + }); + } + } + else if (version == 29) { + await DB.Upsert( + refid, + { + collection: "pc_data", + version: version, + }, + { + $set: { + deller: + pc_data.deller + parseInt($(data).element("deller").attr().deller), + + trophy: $(data) + .element("achievements") + .bigints("trophy") + .slice(0, 10) + .map(String), + + sprank: sprank, + sppoint: sppoint, + dprank: dprank, + dppoint: dppoint, + + spradar: spradar, + dpradar: dpradar, + + dp_level: dp_level, + dp_mplay: dp_mplay, + enemy_damage: enemy_damage, + enemy_defeat_flg: enemy_defeat_flg, + mission_clear_num: mission_clear_num, + progress: progress, + sp_level: sp_level, + sp_mplay: sp_mplay, + tips_read_list: tips_read_list, + total_point: total_point, + + dpnum: dpnum, + d_auto_scrach: parseInt($(data).attr().d_auto_scrach), + d_camera_layout: parseInt($(data).attr().d_camera_layout), + d_disp_judge: parseInt($(data).attr().d_disp_judge), + d_gauge_disp: parseInt($(data).attr().d_gauge_disp), + d_ghost_score: parseInt($(data).attr().d_ghost_score), + d_gno: parseInt($(data).attr().d_gno), + d_graph_score: parseInt($(data).attr().d_graph_score), + d_gtype: parseInt($(data).attr().d_gtype), + d_hispeed: parseFloat($(data).attr().d_hispeed), + d_judge: parseInt($(data).attr().d_judge), + d_judgeAdj: parseInt($(data).attr().d_judgeAdj), + d_lane_brignt: parseInt($(data).attr().d_lane_brignt), + d_liflen: d_liflen, + d_notes: parseFloat($(data).attr().d_notes), + d_opstyle: parseInt($(data).attr().d_opstyle), + d_pace: parseInt($(data).attr().d_pace), + d_sdlen: parseInt($(data).attr().d_sdlen), + d_sdtype: parseInt($(data).attr().d_sdtype), + d_sorttype: parseInt($(data).attr().d_sorttype), + d_timing: parseInt($(data).attr().d_timing), + d_tsujigiri_disp: parseInt($(data).attr().d_tsujigiri_disp), + dach: parseInt($(data).attr().d_achi), + dp_opt: $(data).attr().dp_opt, + dp_opt2: $(data).attr().dp_opt2, + d_sub_gno: parseInt($(data).attr().d_sub_gno), + + gpos: parseInt($(data).attr().gpos), + mode: parseInt($(data).attr().mode), + pmode: parseInt($(data).attr().pmode), + rtype: parseInt($(data).attr().rtype), + ngrade: parseInt($(data).attr().ngrade), + + spnum: spnum, + s_auto_scrach: parseInt($(data).attr().s_auto_scrach), + s_camera_layout: parseInt($(data).attr().s_camera_layout), + s_disp_judge: parseInt($(data).attr().s_disp_judge), + s_gauge_disp: parseInt($(data).attr().s_gauge_disp), + s_ghost_score: parseInt($(data).attr().s_ghost_score), + s_gno: parseInt($(data).attr().s_gno), + s_graph_score: parseInt($(data).attr().s_graph_score), + s_gtype: parseInt($(data).attr().s_gtype), + s_hispeed: parseFloat($(data).attr().s_hispeed), + s_judge: parseInt($(data).attr().s_judge), + s_judgeAdj: parseInt($(data).attr().s_judgeAdj), + s_lane_brignt: parseInt($(data).attr().s_lane_brignt), + s_liflen: s_liflen, + s_notes: parseFloat($(data).attr().s_notes), + s_opstyle: parseInt($(data).attr().s_opstyle), + s_pace: parseInt($(data).attr().s_pace), + s_sdlen: parseInt($(data).attr().s_sdlen), + s_sdtype: parseInt($(data).attr().s_sdtype), + s_sorttype: parseInt($(data).attr().s_sorttype), + s_timing: parseInt($(data).attr().s_timing), + s_tsujigiri_disp: parseInt($(data).attr().s_tsujigiri_disp), + sach: parseInt($(data).attr().s_achi), + sp_opt: $(data).attr().sp_opt, + s_sub_gno: parseInt($(data).attr().s_sub_gno), + s_auto_adjust: parseInt($(data).attr().s_auto_adjust), + d_auto_adjust: parseInt($(data).attr().d_auto_adjust), + }, + } + ); + + // lightning_stuffs // + if (isTDJ) { + await DB.Upsert( + refid, + { + collection: "lightning_playdata", + version: version, + }, + { + $set: { + sp_num: lightning_spnum, + dp_num: lightning_dpnum, + }, + } + ); + + await DB.Upsert( + refid, + { + collection: "lightning_settings", + version: version, + }, + { + $set: { + skin: lightning_skin, + skin_2: lightning_skin_2, + + headphone_vol: lightning_headphone_vol, + + resistance_sp_left: lightning_resistance_sp_1, + resistance_sp_right: lightning_resistance_sp_2, + resistance_dp_left: lightning_resistance_dp_1, + resistance_dp_right: lightning_resistance_dp_2, + + vefx: lightning_vefx, + light: lightning_light, + concentration: lightning_concentration, + }, + } + ); + + if (hasMusicMemo) { + music_memo.forEach((res) => { + DB.Upsert( + refid, + { + collection: "lightning_musicmemo_old", + version: version, + music_idx: res.music_idx, + play_style: res.play_style, + }, + { + $set: { + music_id: res.music_id, + }, + }); + }); + } + } + + // language // + if (hasLanguageData) { + await DB.Upsert( + refid, + { + collection: "profile", + }, + { + $set: { + language: parseInt($(data).element("language_setting").attr().language), + }, + } + ); + } + + // tower // + if (hasTowerData) { + await DB.Upsert( + refid, + { + collection: "profile", + }, + { + $set: { + tower_kbd: tower_kbd, + tower_scr: tower_scr, + }, + } + ); + } + + // event_1 // + if (hasEventData) { + await DB.Upsert(refid, { + collection: "pc_data", + version: version, + }, + { + $set: { + event_play_num: event_play_num, + event_last_platform_id: parseInt($(data).element("event_1").attr().last_select_platform_id), + event_last_platform_type: parseInt($(data).element("event_1").attr().last_select_platform_type), + } + }); + + eArray.forEach((res) => { + DB.Upsert(refid, { + collection: "event_1", + version: version, + platform_id: res[0].platform_id + }, + { + $set: res[0], + }); + + DB.Upsert(refid, { + collection: "event_1_sub", + version: version, + platform_id: res[1].platform_id, + channel_id: res[1].channel_id, + }, + { + $set: res[1], + }); + }); + } + } + else if (version == 30) { + await DB.Upsert( + refid, + { + collection: "pc_data", + version: version, + }, + { + $set: { + deller: + pc_data.deller + parseInt($(data).element("deller").attr().deller), + + trophy: $(data) + .element("achievements") + .bigints("trophy") + .slice(0, 10) + .map(String), + + sprank: sprank, + sppoint: sppoint, + dprank: dprank, + dppoint: dppoint, + + spradar: spradar, + dpradar: dpradar, + + dp_fluctuation: dp_fluctuation, + dp_level: dp_level, + dp_mplay: dp_mplay, + enemy_damage: enemy_damage, + enemy_defeat_flg: enemy_defeat_flg, + mission_clear_num: mission_clear_num, + progress: progress, + sp_fluctuation: sp_fluctuation, + sp_level: sp_level, + sp_mplay: sp_mplay, + tips_read_list: tips_read_list, + total_point: total_point, + + dpnum: dpnum, + d_auto_scrach: parseInt($(data).attr().d_auto_scrach), + d_camera_layout: parseInt($(data).attr().d_camera_layout), + d_disp_judge: parseInt($(data).attr().d_disp_judge), + d_gauge_disp: parseInt($(data).attr().d_gauge_disp), + d_ghost_score: parseInt($(data).attr().d_ghost_score), + d_gno: parseInt($(data).attr().d_gno), + d_graph_score: parseInt($(data).attr().d_graph_score), + d_gtype: parseInt($(data).attr().d_gtype), + d_hispeed: parseFloat($(data).attr().d_hispeed), + d_judge: parseInt($(data).attr().d_judge), + d_judgeAdj: parseInt($(data).attr().d_judgeAdj), + d_lane_brignt: parseInt($(data).attr().d_lane_brignt), + d_liflen: d_liflen, + d_notes: parseFloat($(data).attr().d_notes), + d_opstyle: parseInt($(data).attr().d_opstyle), + d_pace: parseInt($(data).attr().d_pace), + d_sdlen: parseInt($(data).attr().d_sdlen), + d_sdtype: parseInt($(data).attr().d_sdtype), + d_sorttype: parseInt($(data).attr().d_sorttype), + d_timing: parseInt($(data).attr().d_timing), + d_timing_split: parseInt($(data).attr().d_timing_split), + d_tsujigiri_disp: parseInt($(data).attr().d_tsujigiri_disp), + d_visualization: parseInt($(data).attr().d_visualization), + dach: parseInt($(data).attr().d_achi), + dp_opt: $(data).attr().dp_opt, + dp_opt2: $(data).attr().dp_opt2, + d_sub_gno: parseInt($(data).attr().d_sub_gno), + + gpos: parseInt($(data).attr().gpos), + mode: parseInt($(data).attr().mode), + pmode: parseInt($(data).attr().pmode), + rtype: parseInt($(data).attr().rtype), + ngrade: parseInt($(data).attr().ngrade), + + spnum: spnum, + s_auto_scrach: parseInt($(data).attr().s_auto_scrach), + s_camera_layout: parseInt($(data).attr().s_camera_layout), + s_disp_judge: parseInt($(data).attr().s_disp_judge), + s_gauge_disp: parseInt($(data).attr().s_gauge_disp), + s_ghost_score: parseInt($(data).attr().s_ghost_score), + s_gno: parseInt($(data).attr().s_gno), + s_graph_score: parseInt($(data).attr().s_graph_score), + s_gtype: parseInt($(data).attr().s_gtype), + s_hispeed: parseFloat($(data).attr().s_hispeed), + s_judge: parseInt($(data).attr().s_judge), + s_judgeAdj: parseInt($(data).attr().s_judgeAdj), + s_lane_brignt: parseInt($(data).attr().s_lane_brignt), + s_liflen: s_liflen, + s_notes: parseFloat($(data).attr().s_notes), + s_opstyle: parseInt($(data).attr().s_opstyle), + s_pace: parseInt($(data).attr().s_pace), + s_sdlen: parseInt($(data).attr().s_sdlen), + s_sdtype: parseInt($(data).attr().s_sdtype), + s_sorttype: parseInt($(data).attr().s_sorttype), + s_timing: parseInt($(data).attr().s_timing), + s_timing_split: parseInt($(data).attr().s_timing_split), + s_tsujigiri_disp: parseInt($(data).attr().s_tsujigiri_disp), + s_visualization: parseInt($(data).attr().s_visualization), + sach: parseInt($(data).attr().s_achi), + sp_opt: $(data).attr().sp_opt, + s_sub_gno: parseInt($(data).attr().s_sub_gno), + s_auto_adjust: parseInt($(data).attr().s_auto_adjust), + d_auto_adjust: parseInt($(data).attr().d_auto_adjust), + }, + } + ); + + // lightning_stuffs // + if (isTDJ) { + await DB.Upsert( + refid, + { + collection: "lightning_playdata", + version: version, + }, + { + $set: { + sp_num: lightning_spnum, + dp_num: lightning_dpnum, + }, + } + ); + + await DB.Upsert( + refid, + { + collection: "lightning_settings", + version: version, + }, + { + $set: { + skin: lightning_skin, + skin_2: lightning_skin_2, + + headphone_vol: lightning_headphone_vol, + + resistance_sp_left: lightning_resistance_sp_1, + resistance_sp_right: lightning_resistance_sp_2, + resistance_dp_left: lightning_resistance_dp_1, + resistance_dp_right: lightning_resistance_dp_2, + + vefx: lightning_vefx, + light: lightning_light, + concentration: lightning_concentration, + }, + } + ); + + if (hasMusicMemo) { + music_memo.forEach((res) => { + DB.Upsert( + refid, + { + collection: "lightning_musicmemo", + version: version, + folder_idx: res.folder_idx, + play_style: res.play_style, + }, + { + $set: { + folder_name: res.folder_name, + music_ids: res.music_ids, + }, + }); + }); + } + } + + // language // + if (hasLanguageData) { + await DB.Upsert( + refid, + { + collection: "profile", + }, + { + $set: { + language: parseInt($(data).element("language_setting").attr().language), + }, + } + ); + } + + // tower // + if (hasTowerData) { + await DB.Upsert( + refid, + { + collection: "profile", + }, + { + $set: { + tower_kbd: tower_kbd, + tower_scr: tower_scr, + }, + } + ); + } + + // event_1 // + if (hasEventData) { + await DB.Upsert(refid, { + collection: "pc_data", + version: version, + }, + { + $set: { + event_play_num: event_play_num, + event_last_select_flyer_id: parseInt($(data).element("event_1").attr().last_select_flyer_id), + } + }); + + eArray.forEach((res) => { + DB.Upsert(refid, { + collection: "event_1", + version: version, + flyer_id: res[0].flyer_id + }, + { + $set: res[0], + }); + + DB.Upsert(refid, { + collection: "event_1_sub", + version: version, + flyer_id: res[1].flyer_id, + genre_id: res[1].genre_id, + }, + { + $set: res[1], + }); + }); + } + } + else if (version == 31) { + await DB.Upsert( + refid, + { + collection: "pc_data", + version: version, + }, + { + $set: { + deller: pc_data.deller + parseInt($(data).element("deller").attr().deller), + + sprank: sprank, + sppoint: sppoint, + dprank: dprank, + dppoint: dppoint, + + spradar: spradar, + dpradar: dpradar, + + dp_fluctuation: dp_fluctuation, + dp_level: dp_level, + dp_mplay: dp_mplay, + enemy_damage: enemy_damage, + enemy_defeat_flg: enemy_defeat_flg, + mission_clear_num: mission_clear_num, + progress: progress, + sp_fluctuation: sp_fluctuation, + sp_level: sp_level, + sp_mplay: sp_mplay, + tips_read_list: tips_read_list, + total_point: total_point, + + dpnum: dpnum, + d_auto_scrach: parseInt($(data).attr().d_auto_scrach), + d_camera_layout: parseInt($(data).attr().d_camera_layout), + d_disp_judge: parseInt($(data).attr().d_disp_judge), + d_gauge_disp: parseInt($(data).attr().d_gauge_disp), + d_ghost_score: parseInt($(data).attr().d_ghost_score), + d_gno: parseInt($(data).attr().d_gno), + d_graph_score: parseInt($(data).attr().d_graph_score), + d_gtype: parseInt($(data).attr().d_gtype), + d_hispeed: parseFloat($(data).attr().d_hispeed), + d_judge: parseInt($(data).attr().d_judge), + d_judgeAdj: parseInt($(data).attr().d_judgeAdj), + d_lane_brignt: parseInt($(data).attr().d_lane_brignt), + d_liflen: d_liflen, + d_notes: parseFloat($(data).attr().d_notes), + d_opstyle: parseInt($(data).attr().d_opstyle), + d_pace: parseInt($(data).attr().d_pace), + d_sdlen: parseInt($(data).attr().d_sdlen), + d_sdtype: parseInt($(data).attr().d_sdtype), + d_sorttype: parseInt($(data).attr().d_sorttype), + d_timing: parseInt($(data).attr().d_timing), + d_timing_split: parseInt($(data).attr().d_timing_split), + d_tsujigiri_disp: parseInt($(data).attr().d_tsujigiri_disp), + d_visualization: parseInt($(data).attr().d_visualization), + dach: parseInt($(data).attr().d_achi), + dp_opt: $(data).attr().dp_opt, + dp_opt2: $(data).attr().dp_opt2, + d_sub_gno: parseInt($(data).attr().d_sub_gno), + + gpos: parseInt($(data).attr().gpos), + mode: parseInt($(data).attr().mode), + pmode: parseInt($(data).attr().pmode), + rtype: parseInt($(data).attr().rtype), + ngrade: parseInt($(data).attr().ngrade), + + spnum: spnum, + s_auto_scrach: parseInt($(data).attr().s_auto_scrach), + s_camera_layout: parseInt($(data).attr().s_camera_layout), + s_disp_judge: parseInt($(data).attr().s_disp_judge), + s_gauge_disp: parseInt($(data).attr().s_gauge_disp), + s_ghost_score: parseInt($(data).attr().s_ghost_score), + s_gno: parseInt($(data).attr().s_gno), + s_graph_score: parseInt($(data).attr().s_graph_score), + s_gtype: parseInt($(data).attr().s_gtype), + s_hispeed: parseFloat($(data).attr().s_hispeed), + s_judge: parseInt($(data).attr().s_judge), + s_judgeAdj: parseInt($(data).attr().s_judgeAdj), + s_lane_brignt: parseInt($(data).attr().s_lane_brignt), + s_liflen: s_liflen, + s_notes: parseFloat($(data).attr().s_notes), + s_opstyle: parseInt($(data).attr().s_opstyle), + s_pace: parseInt($(data).attr().s_pace), + s_sdlen: parseInt($(data).attr().s_sdlen), + s_sdtype: parseInt($(data).attr().s_sdtype), + s_sorttype: parseInt($(data).attr().s_sorttype), + s_timing: parseInt($(data).attr().s_timing), + s_timing_split: parseInt($(data).attr().s_timing_split), + s_tsujigiri_disp: parseInt($(data).attr().s_tsujigiri_disp), + s_visualization: parseInt($(data).attr().s_visualization), + sach: parseInt($(data).attr().s_achi), + sp_opt: $(data).attr().sp_opt, + s_sub_gno: parseInt($(data).attr().s_sub_gno), + s_auto_adjust: parseInt($(data).attr().s_auto_adjust), + d_auto_adjust: parseInt($(data).attr().d_auto_adjust), + + s_classic_hispeed: parseInt($(data).attr().s_classic_hispeed), + d_classic_hispeed: parseInt($(data).attr().d_classic_hispeed), + }, + } + ); + + // lightning_stuffs // + if (isTDJ) { + await DB.Upsert( + refid, + { + collection: "lightning_playdata", + version: version, + }, + { + $set: { + sp_num: lightning_spnum, + dp_num: lightning_dpnum, + }, + } + ); + + await DB.Upsert( + refid, + { + collection: "lightning_settings", + version: version, + }, + { + $set: { + skin: lightning_skin, + skin_2: lightning_skin_2, + + headphone_vol: lightning_headphone_vol, + keyboard_kind: lightning_keyboard_kind, + + resistance_sp_left: lightning_resistance_sp_1, + resistance_sp_right: lightning_resistance_sp_2, + resistance_dp_left: lightning_resistance_dp_1, + resistance_dp_right: lightning_resistance_dp_2, + + vefx: lightning_vefx, + light: lightning_light, + concentration: lightning_concentration, + }, + } + ); + + if (hasMusicMemo) { + music_memo.forEach((res) => { + DB.Upsert( + refid, + { + collection: "lightning_musicmemo", + version: version, + folder_idx: res.folder_idx, + play_style: res.play_style, + }, + { + $set: { + folder_name: res.folder_name, + music_ids: res.music_ids, + }, + }); + }); + } + + if (hasMusicFilter) { + music_filter.forEach((res) => { + DB.Upsert( + refid, + { + collection: "lightning_musicfilter", + version: version, + folder_id: res.folder_id, + filter_id: res.filter_id, + play_style: res.play_style + }, + { + $set: { + is_valid: res.is_valid, + value0: res.value0, + value1: res.value1, + }, + }); + }); + } + } + + // language // + if (hasLanguageData) { + await DB.Upsert( + refid, + { + collection: "profile", + }, + { + $set: { + language: parseInt($(data).element("language_setting").attr().language), + }, + } + ); + } + + // tower // + if (hasTowerData) { + await DB.Upsert( + refid, + { + collection: "profile", + }, + { + $set: { + tower_kbd: tower_kbd, + tower_scr: tower_scr, + }, + } + ); + } + } + + send.success(); +}; + +export const pcvisit: EPR = async (info, data, send) => { + send.object(K.ATTR({ + aflg: "1", + anum: "1", + pflg: "1", + pnum: "1", + sflg: "1", + snum: "1", + })); +}; + +export const pcgetlanegacha: EPR = async (info, data, send) => { + const refid = $(data).attr().rid; + const version = GetVersion(info); + const strVersion = `IIDX${version}pc`; + const settings = await DB.FindOne(refid, { collection: "settings" }); + + let tArray = []; + let fArray = []; + for (let i = 0; i < 100; i++) { + let random = randomIntRange(0, (7 * 6 * 5 * 4 * 3 * 2)); + + let ticket = { + id: i, + arrange: random, + expire: 4102326000, + }; + + tArray.push(ticket); + } + + if (!(_.isNil(settings))) { + if (!(_.isNil(settings.random_lane_ticket))) { + if (settings.random_lane_ticket.length > 0) { + for (let i = 0; i < settings.random_lane_ticket.length; i++) { + if (i >= 100) break; + + let ticket = { + id: (i + 100), + arrange: settings.random_lane_ticket[i], + expire: Math.floor(Date.now() / 1000), + }; + + tArray.push(ticket); + } + } + } + + if (!(_.isNil(settings.random_lane_ticket_search))) { + if (settings.random_lane_ticket_search.length > 0) { + for (let i = 0; i < settings.random_lane_ticket_search.length; i++) { + if (i >= 10) break; + + let favorite = { + arrange: settings.random_lane_ticket_search[i], + }; + + fArray.push(favorite); + } + } + } + } + + send.pugFile("pug/pcgetlanegacha.pug", { + version: strVersion, + tArray, + fArray, + }); +}; + +export const pcgetcompeinfo: EPR = async (info, data, send) => { + send.object({ + compe_status: K.ATTR({ + compe_status: "0", + }) + }); +}; diff --git a/handlers/webui.ts b/handlers/webui.ts new file mode 100644 index 0000000..a0319d2 --- /dev/null +++ b/handlers/webui.ts @@ -0,0 +1,521 @@ +import { settings } from "../models/settings"; +import { profile } from "../models/profile"; +import { rival } from "../models/rival"; +import { + effect_list, + frame_list, + fullcombo_list, + judge_list, + keybeam_list, + lanecover_list, + menumusic_list, + noteburst_list, + notes_list, + turntable_list, + bombsize_list, + first_note_preview_list, + premium_skin_list, + category_vox_list, + notebeamsize_list, + notesize_list, +} from "../data/customlist"; + +export const updateProfileSettings = async (data: { + // All of data sent as string + iidxid: string; + name: string; + + frame?: string; + menu_music?: string; + note_burst?: string; + turntable?: string; + lane_cover?: string; + pacemaker_cover?: string; + note_skin?: string; + judge_font?: string; + note_beam?: string; + full_combo_splash?: string; + score_folders?: string; + clear_folders?: string; + difficulty_folders?: string; + alphabet_folders?: string; + rival_played?: string; + rival_folders?: string; + rival_clear_folders?: string; + rival_shop_info?: string; + hide_playcount?: string; + disable_graphcutin?: string; + classic_hispeed?: string; + hide_iidxid?: string; + disable_musicpreview?: string; + vefx_lock?: string; + effect?: string; + bomb_size?: string; + disable_hcn_color?: string; + first_note_preview?: string; + + premium_skin?: string; + judge_pos?: string; + category_vox?: string; + + note_size?: string; + note_beam_size?: string; + lift_cover?: string; + + qpro_head?: string; + qpro_hair?: string; + qpro_hand?: string; + qpro_face?: string; + qpro_body?: string; + + random_lane_ticket?: string; + random_lane_ticket_search?: string; + + skin_frame_flg?: string; + skin_bgm_flg?: string; + skin_lane_flg?: string; +}) => { + const update: Update['$set'] = {}; + const profile = await DB.FindOne(null, { + collection: "profile", + iidxidstr: data.iidxid, + }); + + // Select + if (data.frame && data.frame.length > 0) { + update.frame = frame_list.indexOf(data.frame) + } + + if (data.menu_music && data.menu_music.length > 0) { + update.menu_music = menumusic_list.indexOf(data.menu_music) + } + + if (data.note_burst && data.note_burst.length > 0) { + update.note_burst = noteburst_list.indexOf(data.note_burst) + } + + if (data.turntable && data.turntable.length > 0) { + update.turntable = turntable_list.indexOf(data.turntable) + } + + if (data.lane_cover && data.lane_cover.length > 0) { + update.lane_cover = lanecover_list.indexOf(data.lane_cover) + } + + if (data.pacemaker_cover && data.pacemaker_cover.length > 0) { + update.pacemaker_cover = lanecover_list.indexOf(data.pacemaker_cover) + } + + if (data.note_skin && data.note_skin.length > 0) { + update.note_skin = notes_list.indexOf(data.note_skin) + } + + if (data.judge_font && data.judge_font.length > 0) { + update.judge_font = judge_list.indexOf(data.judge_font) + } + + if (data.note_beam && data.note_beam.length > 0) { + update.note_beam = keybeam_list.indexOf(data.note_beam) + } + if (data.full_combo_splash && data.full_combo_splash.length > 0) { + update.full_combo_splash = fullcombo_list.indexOf(data.full_combo_splash) + } + + if (data.effect && data.effect.length > 0) { + update.effect = effect_list.indexOf(data.effect) + } + + if (data.bomb_size && data.bomb_size.length > 0) { + update.bomb_size = bombsize_list.indexOf(data.bomb_size) + } + + if (data.first_note_preview && data.first_note_preview.length > 0) { + update.first_note_preview = first_note_preview_list.indexOf(data.first_note_preview) + } + + if (data.note_beam_size && data.note_beam_size.length > 0) { + update.note_beam_size = notebeamsize_list.indexOf(data.note_beam_size) + } + + if (data.note_size && data.note_size.length > 0) { + update.note_size = notesize_list.indexOf(data.note_size) + } + + if (data.lift_cover && data.lift_cover.length > 0) { + update.lift_cover = lanecover_list.indexOf(data.lift_cover) + } + + // Boolean + update.score_folders = stb(data.score_folders) + update.clear_folders = stb(data.clear_folders) + update.difficulty_folders = stb(data.difficulty_folders) + update.alphabet_folders = stb(data.alphabet_folders) + update.rival_played = stb(data.rival_played) + update.rival_folders = stb(data.rival_folders) + update.rival_clear_folders = stb(data.rival_clear_folders) + update.rival_shop_info = stb(data.rival_shop_info) + update.hide_playcount = stb(data.hide_playcount) + update.disable_graphcutin = stb(data.disable_graphcutin) + update.classic_hispeed = stb(data.classic_hispeed) + update.hide_iidxid = stb(data.hide_iidxid) + update.disable_musicpreview = Number(stb(data.disable_musicpreview)) + update.vefx_lock = Number(stb(data.vefx_lock)) + update.disable_hcn_color = Number(stb(data.disable_hcn_color)) + + // Numeric Field + if (data.skin_bgm_flg && data.skin_bgm_flg.length > 0) { + update.skin_bgm_flg = parseInt(data.skin_bgm_flg) || 0 + } + + if (data.skin_frame_flg && data.skin_frame_flg.length > 0) { + update.skin_frame_flg = parseInt(data.skin_frame_flg) || 0 + } + + if (data.skin_lane_flg && data.skin_lane_flg.length > 0) { + update.skin_lane_flg = parseInt(data.skin_lane_flg) || 0 + } + + if (data.qpro_head && data.qpro_head.length > 0) { + update.qpro_head = parseInt(data.qpro_head) || 0 + } + + if (data.qpro_hair && data.qpro_hair.length > 0) { + update.qpro_hair = parseInt(data.qpro_hair) || 0 + } + + if (data.qpro_hand && data.qpro_hand.length > 0) { + update.qpro_hand = parseInt(data.qpro_hand) || 0 + } + + if (data.qpro_face && data.qpro_face.length > 0) { + update.qpro_face = parseInt(data.qpro_face) || 0 + } + + if (data.qpro_body && data.qpro_body.length > 0) { + update.qpro_body = parseInt(data.qpro_body) || 0 + } + + if (data.premium_skin && data.premium_skin.length > 0) { + update.premium_skin = premium_skin_list.indexOf(data.premium_skin) + } + + if (data.category_vox && data.category_vox.length > 0) { + update.category_vox = category_vox_list.indexOf(data.category_vox) + } + + if (data.judge_pos && data.judge_pos.length > 0) { + update.judge_pos = parseInt(data.judge_pos) || 0 + } + + if (data.random_lane_ticket && data.random_lane_ticket.length > 0) { + let lane_values_str = data.random_lane_ticket.split(","); + let lane_values = []; + + for (let a = 0; a < 100; a++) { + let lane_value = parseInt(lane_values_str[a]); + + if (!(_.isNaN(lane_value)) && lane_value >= 0 && lane_value < (7 * 6 * 5 * 4 * 3 * 2)) { + lane_values.push(lane_value); + } + } + + update.random_lane_ticket = lane_values; + } else { + update.random_lane_ticket = []; + } + + if (data.random_lane_ticket_search && data.random_lane_ticket_search.length > 0) { + let lane_values_str = data.random_lane_ticket_search.split(","); + let lane_values = []; + + for (let a = 0; a < 10; a++) { + let lane_value = parseInt(lane_values_str[a]); + + if (!(_.isNaN(lane_value)) && lane_value >= 0) { + lane_values.push(lane_value); + } + } + + update.random_lane_ticket_search = lane_values; + } else { + update.random_lane_ticket_search = []; + } + + if (data.name !== profile.name && + (data.name.length > 0 && data.name.length < 7)) { + await DB.Update( + profile.refid, + { collection: 'profile' }, + { $set: { name: data.name } } + ); + } + + await DB.Update( + profile.refid, + { collection: 'settings' }, + { $set: update } + ); +}; + +export const updateRivalSettings = async (data: { + // All of data sent as string + iidxid: string; + + sp_rival1?: string; + sp_rival2?: string; + sp_rival3?: string; + sp_rival4?: string; + sp_rival5?: string; + sp_rival6?: string; + + dp_rival1?: string; + dp_rival2?: string; + dp_rival3?: string; + dp_rival4?: string; + dp_rival5?: string; + dp_rival6?: string; +}) => { + const profile = await DB.FindOne(null, { + collection: "profile", + iidxidstr: data.iidxid, + }); + let update_array = []; + + if (!(_.isEmpty(data.sp_rival1))) { + let update_data = { + play_style: 1, + index: 0, + rival_refid: data.sp_rival1, + }; + + update_array.push(update_data); + } else { + await DB.Remove(profile.refid, + { + collection: 'rival', + play_style: 1, + index: 0, + } + ) + } + + if (!(_.isEmpty(data.sp_rival2))) { + let update_data = { + play_style: 1, + index: 1, + rival_refid: data.sp_rival2, + }; + + update_array.push(update_data); + } else { + await DB.Remove(profile.refid, + { + collection: 'rival', + play_style: 1, + index: 1, + } + ) + } + + if (!(_.isEmpty(data.sp_rival3))) { + let update_data = { + play_style: 1, + index: 2, + rival_refid: data.sp_rival3, + }; + + update_array.push(update_data); + } else { + await DB.Remove(profile.refid, + { + collection: 'rival', + play_style: 1, + index: 2, + } + ) + } + + if (!(_.isEmpty(data.sp_rival4))) { + let update_data = { + play_style: 1, + index: 3, + rival_refid: data.sp_rival4, + }; + + update_array.push(update_data); + } else { + await DB.Remove(profile.refid, + { + collection: 'rival', + play_style: 1, + index: 3, + } + ) + } + + if (!(_.isEmpty(data.sp_rival5))) { + let update_data = { + play_style: 1, + index: 4, + rival_refid: data.sp_rival5, + }; + + update_array.push(update_data); + } else { + await DB.Remove(profile.refid, + { + collection: 'rival', + play_style: 1, + index: 4, + } + ) + } + + if (!(_.isEmpty(data.sp_rival6))) { + let update_data = { + play_style: 1, + index: 5, + rival_refid: data.sp_rival6, + }; + + update_array.push(update_data); + } else { + await DB.Remove(profile.refid, + { + collection: 'rival', + play_style: 1, + index: 5, + } + ) + } + + if (!(_.isEmpty(data.dp_rival1))) { + let update_data = { + play_style: 2, + index: 0, + rival_refid: data.dp_rival1, + }; + + update_array.push(update_data); + } else { + await DB.Remove(profile.refid, + { + collection: 'rival', + play_style: 2, + index: 0, + } + ) + } + + if (!(_.isEmpty(data.dp_rival2))) { + let update_data = { + play_style: 2, + index: 1, + rival_refid: data.dp_rival2, + }; + + update_array.push(update_data); + } else { + await DB.Remove(profile.refid, + { + collection: 'rival', + play_style: 2, + index: 1, + } + ) + } + + if (!(_.isEmpty(data.dp_rival3))) { + let update_data = { + play_style: 2, + index: 2, + rival_refid: data.dp_rival3, + }; + + update_array.push(update_data); + } else { + await DB.Remove(profile.refid, + { + collection: 'rival', + play_style: 2, + index: 2, + } + ) + } + + if (!(_.isEmpty(data.dp_rival4))) { + let update_data = { + play_style: 2, + index: 3, + rival_refid: data.dp_rival4, + }; + + update_array.push(update_data); + } else { + await DB.Remove(profile.refid, + { + collection: 'rival', + play_style: 2, + index: 3, + } + ) + } + + if (!(_.isEmpty(data.dp_rival5))) { + let update_data = { + play_style: 2, + index: 4, + rival_refid: data.dp_rival5, + }; + + update_array.push(update_data); + } else { + await DB.Remove(profile.refid, + { + collection: 'rival', + play_style: 2, + index: 4, + } + ) + } + + if (!(_.isEmpty(data.dp_rival6))) { + let update_data = { + play_style: 2, + index: 5, + rival_refid: data.dp_rival6, + }; + + update_array.push(update_data); + } else { + await DB.Remove(profile.refid, + { + collection: 'rival', + play_style: 2, + index: 5, + } + ) + } + + for (let i = 0; i < update_array.length; i++) { + await DB.Upsert(profile.refid, { + collection: "rival", + play_style: update_array[i].play_style, + index: update_array[i].index, + }, { + $set: { + rival_refid: update_array[i].rival_refid, + } + } + ) + } +}; + +function stb(s: string | null): boolean { + if (_.isNil(s)) return false; + switch (s.toLowerCase().trim()) { + case "true": case "yes": case "1": case "on": return true; + case "false": case "no": case "0": case "off": case null: return false; + default: return Boolean(s); + } +} diff --git a/index.ts b/index.ts index fbd56f8..a90f6e8 100644 --- a/index.ts +++ b/index.ts @@ -1,201 +1,190 @@ -import { - shopgetname, - shopgetconvention, - shopsavename, -} from "./handlers/IIDXshop"; -import { - pccommon, - pcoldget, - pcreg, - pcget, - pcsave, - pctakeover, - pcgetname, -} from "./handlers/IIDXpc"; -import { - effect_list, - frame_list, - fullcombo_list, - judge_list, - keybeam_list, - lanecover_list, - menumusic_list, - noteburst_list, - notes_list, - turntable_list, -} from "./data/27customlist"; -import { - musicreg, - musicgetrank, - musicappoint, - musiccrate, -} from "./handlers/IIDXmusic"; -import { graderaised } from "./handlers/IIDXgrade"; -import { bombsize_list, first_note_preview_list } from "./data/27customlist"; -import { ShopRanking_list } from "./data/settingslist"; - -export function register() { - R.Contributor("sol#1207", "https://twitter.com/0x1F5"); - - R.Config("ShopRanking", { - type: "string", - default: "PersonalBest", - options: ShopRanking_list, - }); - R.Config("frame", { - type: "string", - default: "デフォルト", - options: frame_list, - }); - R.Config("menu_music", { - type: "string", - default: "デフォルト", - options: menumusic_list, - }); - R.Config("note_burst", { - type: "string", - default: "デフォルト", - options: noteburst_list, - }); - - R.Config("turntable", { - type: "string", - default: "デフォルト", - options: turntable_list, - }); - - R.Config("lane_cover", { - type: "string", - default: "デフォルト", - options: lanecover_list, - }); - R.Config("pacemaker_cover", { - type: "string", - default: "デフォルト", - options: lanecover_list, - }); - R.Config("note_skin", { - type: "string", - default: "デフォルト", - options: notes_list, - }); - R.Config("judge_font", { - type: "string", - default: "デフォルト", - options: judge_list, - }); - R.Config("note_beam", { - type: "string", - default: "デフォルト", - options: keybeam_list, - }); - R.Config("full_combo_splash", { - type: "string", - default: "デフォルト", - options: fullcombo_list, - }); - R.Config("score_folders", { type: "boolean", default: true }); - R.Config("clear_folders", { type: "boolean", default: true }); - R.Config("difficulty_folders", { type: "boolean", default: true }); - R.Config("alphabet_folders", { type: "boolean", default: true }); - R.Config("hide_playcount", { type: "boolean", default: false }); - R.Config("disable_graphcutin", { type: "boolean", default: false }); - R.Config("classic_hispeed", { type: "boolean", default: false }); - R.Config("hide_iidxid", { type: "boolean", default: false }); - R.Config("disable_musicpreview", { type: "boolean", default: false }); - R.Config("vefx_lock", { type: "boolean", default: false }); - R.Config("effect", { - type: "string", - default: "OFF", - options: effect_list, - }); - R.Config("bomb_size", { - type: "string", - default: "100%", - options: bombsize_list, - }); - R.Config("disable_hcn_color", { type: "boolean", default: false }); - R.Config("first_note_preview", { - type: "string", - default: "default", - options: first_note_preview_list, - }); - - R.Config("qpro_head", { type: "integer", default: 0 }); - R.Config("qpro_hair", { type: "integer", default: 0 }); - R.Config("qpro_hand", { type: "integer", default: 0 }); - R.Config("qpro_face", { type: "integer", default: 0 }); - R.Config("qpro_body", { type: "integer", default: 0 }); - - R.GameCode("LDJ"); - const MultiRoute = (method: string, handler: EPR | boolean) => { - // Helper for register multiple versions. - R.Route(`IIDX27${method}`, handler); - R.Route(`IIDX28${method}`, handler); - R.Route(`IIDX29${method}`, handler); - //R.Route(`IIDXのバージョン${method}`, handler); - }; - - //pc - MultiRoute("pc.get", pcget); - MultiRoute("pc.reg", pcreg); - //MultiRoute("pc.lcommon", true); - MultiRoute("pc.save", pcsave); - MultiRoute("pc.getname", pcgetname); - //MultiRoute("pc.locaend", true); - MultiRoute("pc.common", pccommon); - MultiRoute("pc.takeover", pctakeover); - //MultiRoute("pc.playstart", true); - //MultiRoute("pc.playend", true); - MultiRoute("pc.delete", true); - //MultiRoute("pc.visit", true); - //MultiRoute("pc.shopregister", true); - MultiRoute("pc.oldget", pcoldget); - MultiRoute("pc.eaappliresult", true); - MultiRoute("pc.eaappliexpert", true); - MultiRoute("pc.logout", true); - //MultiRoute("pc.qrreward", true); - //MultiRoute("pc.qrcompe", true); - //MultiRoute("pc.qrfollow", true); - - //music - MultiRoute("music.getrank", musicgetrank); - //MultiRoute("music.lplay", true); - //MultiRoute("music.play", true); - MultiRoute("music.reg", musicreg); - MultiRoute("music.crate", musiccrate); - MultiRoute("music.appoint", musicappoint); - //MultiRoute("music.nosave", true); - //MultiRoute("music.arenaCPU", true); - - //grade - MultiRoute("grade.raised", graderaised); - - //shop - MultiRoute("shop.sentinfo", true); - //MultiRoute("shop.keepalive", true); - MultiRoute("shop.savename", shopsavename); - MultiRoute("shop.getname", shopgetname); - //MultiRoute("shop.setconvention", true); - MultiRoute("shop.getconvention", shopgetconvention); - //MultiRoute("shop.sendpcbdetail", true); - MultiRoute("shop.sendescapepackageinfo", true); - //MultiRoute("shop.recoveryfilelog", true); - - //ranking - //MultiRoute("ranking.entry", true); - //MultiRoute("ranking.oentry", true); - MultiRoute("ranking.getranker", true); - //MultiRoute("ranking.classicentry", true); - //MultiRoute("ranking.conventionentry", true); - - //lobby - //MultiRoute("lobby.entry", true); - //MultiRoute("lobby.update", true); - //MultiRoute("lobby.delete", true); - - //gameSystem - MultiRoute("gameSystem.systemInfo", true); - - R.Unhandled(); -} +import { + shopgetname, + shopgetconvention, + shopsavename, +} from "./handlers/IIDXshop"; +import { + pccommon, + pcoldget, + pcreg, + pcget, + pcsave, + pctakeover, + pcgetname, + pcvisit, + pcgetlanegacha, + pcgetcompeinfo, +} from "./handlers/IIDXpc"; +import { + musicreg, + musicgetrank, + musicappoint, + musiccrate, + musicretry, +} from "./handlers/IIDXmusic"; +import { systeminfo } from "./handlers/IIDXgamesystem"; +import { graderaised } from "./handlers/IIDXgrade"; +import { ShopRanking_list } from "./data/settingslist"; +import { updateProfileSettings, updateRivalSettings } from "./handlers/webui"; + +export function register() { + if (CORE_VERSION_MAJOR <= 1 && CORE_VERSION_MINOR < 31) { + console.error( + "The current version of Asphyxia Core is not supported. Requires version '1.31' or later." + ); + return; + } + + R.Contributor("sol#1207", "https://twitter.com/0x1F5"); + + // music (array) // + R.Config("ShopRanking", { + type: "string", + default: "PersonalBest", + options: ShopRanking_list, + }); + + // pccommon (integer) // + R.Config("BeatPhase", { + name: "Beat #", + type: "integer", + default: 3, + }); + R.Config("ExpertPhase", { + name: "Expert Phase", + type: "integer", + default: 1, + }); + R.Config("ExpertSecretPhase", { + name: "Expert Secret Phase", + type: "integer", + default: 2, + }); + R.Config("BossPhase", { + name: "Boss Phase", + type: "integer", + default: 1, + }); + R.Config("SystemVoicePhase", { + name: "System Voice Phase", + type: "integer", + default: 1, + }); + R.Config("ExtraBossPhase", { + name: "Extra Boss Phase", + type: "integer", + default: 1, + }); + R.Config("Event1Phase", { + name: "Event Phase", + type: "integer", + default: 1, + }); + + // systemInfo (integer) // + R.Config("Event1InternalPhase", { + name: "Event Internal Phase", + type: "integer", + default: 1, + }); + + // pccommon (string) // + R.Config("MovieUpload", { + name: "Movie Upload URL", + type: "string", + default: "http://localhost/" + }); + + R.WebUIEvent("updateIIDXProfileSettings", updateProfileSettings); + R.WebUIEvent("updateIIDXRivalSettings", updateRivalSettings); + + R.GameCode("LDJ"); + R.GameCode("TDJ"); // This is not used in [TDJ mode] but has been added just in case. // + + const MultiRoute = (method: string, handler: EPR | boolean) => { + // Helper for register multiple versions. + R.Route(`IIDX27${method}`, handler); + R.Route(`IIDX28${method}`, handler); + R.Route(`IIDX29${method}`, handler); + R.Route(`IIDX30${method}`, handler); + R.Route(`IIDX31${method}`, handler); + //R.Route(`IIDXのバージョン${method}`, handler); + }; + + //pc + MultiRoute("pc.get", pcget); + MultiRoute("pc.reg", pcreg); + //MultiRoute("pc.lcommon", true); + MultiRoute("pc.save", pcsave); + MultiRoute("pc.getname", pcgetname); + //MultiRoute("pc.locaend", true); + MultiRoute("pc.common", pccommon); + MultiRoute("pc.takeover", pctakeover); + MultiRoute("pc.playstart", true); // no-card (entry) // + MultiRoute("pc.playend", true); // no-card (game-over) // + MultiRoute("pc.delete", true); + MultiRoute("pc.visit", pcvisit); + //MultiRoute("pc.shopregister", true); + MultiRoute("pc.oldget", pcoldget); + MultiRoute("pc.eaappliresult", true); + //MultiRoute("pc.eaappliexpert", true); + MultiRoute("pc.logout", true); + //MultiRoute("pc.qrreward", true); + //MultiRoute("pc.qrcompe", true); + //MultiRoute("pc.qrfollow", true); + MultiRoute("pc.consumeLaneGachaTicket", true); + MultiRoute("pc.drawLaneGacha", true); + MultiRoute("pc.getLaneGachaTicket", pcgetlanegacha); + MultiRoute("pc.getCompeInfo", pcgetcompeinfo) + + //music + MultiRoute("music.getrank", musicgetrank); + //MultiRoute("music.lplay", true); + MultiRoute("music.play", true); // no-card (result) // + MultiRoute("music.reg", musicreg); + MultiRoute("music.crate", musiccrate); + MultiRoute("music.appoint", musicappoint); + MultiRoute("music.nosave", true); + //MultiRoute("music.arenaCPU", true); + //MultiRoute("music.movieinfo", true); + MultiRoute("music.retry", musicretry); + + //grade + MultiRoute("grade.raised", graderaised); + + //shop + MultiRoute("shop.sentinfo", true); + //MultiRoute("shop.keepalive", true); + MultiRoute("shop.savename", shopsavename); + MultiRoute("shop.getname", shopgetname); + //MultiRoute("shop.setconvention", true); + MultiRoute("shop.getconvention", shopgetconvention); + //MultiRoute("shop.sendpcbdetail", true); + MultiRoute("shop.sendescapepackageinfo", true); + //MultiRoute("shop.recoveryfilelog", true); + + //ranking + //MultiRoute("ranking.entry", true); + //MultiRoute("ranking.oentry", true); + MultiRoute("ranking.getranker", true); + //MultiRoute("ranking.classicentry", true); + //MultiRoute("ranking.conventionentry", true); + + //lobby + //MultiRoute("lobby.entry", true); + //MultiRoute("lobby.update", true); + //MultiRoute("lobby.delete", true); + //MultiRoute("lobby.bplbattle_entry", true); + //MultiRoute("lobby.bplbattle_update", true); + //MultiRoute("lobby.bplbattle_delete", true); + + //streaming + MultiRoute("streaming.common", true); + //MultiRoute("streaming.getcm", true); + + //gameSystem + MultiRoute("gameSystem.systemInfo", systeminfo); + MultiRoute("gameSystem.serverTime", true); + + R.Unhandled(); +} diff --git a/models/badge.ts b/models/badge.ts new file mode 100644 index 0000000..3b2a61a --- /dev/null +++ b/models/badge.ts @@ -0,0 +1,8 @@ +export interface badge { + collection: "badge"; + version: number; + + category: number; + flg: number; + flg_id: number; +} diff --git a/models/grade.ts b/models/grade.ts index d5cf621..e815ed1 100644 --- a/models/grade.ts +++ b/models/grade.ts @@ -1,8 +1,37 @@ -export interface grade { - collection: "grade"; - - version: number; - style: number, - grade: number, - dArray: number[]; -} +export interface grade { + collection: "grade"; + version: number; + + style: number; + grade: number; + dArray: number[]; // style, gid, cstagemax, archmax // +} + +export interface eisei_grade { + collection: "eisei_grade"; + version: number; + + clear_type: number; + grade_id: number; + grade_type: number; + stage_num: number; + option: number; + + past_achievement: number[]; + past_selected_course: number[]; + max_past_achievement: number[]; + max_past_selected_course: number[]; +} + +export interface eisei_grade_data { + clear_type: number; + grade_id: number; + grade_type: number; + stage_num: number; + option: number; + + past: number[]; + selected_course: number[]; + max_past: number[]; + max_selected_course: number[]; +} diff --git a/models/lightning.ts b/models/lightning.ts new file mode 100644 index 0000000..b00bdd7 --- /dev/null +++ b/models/lightning.ts @@ -0,0 +1,67 @@ +export interface lightning_settings { + collection: "lightning_settings"; + + version: number; + + skin: number; + skin_2: number; + + headphone_vol: number; + keyboard_kind: number; + + resistance_sp_left: number; + resistance_sp_right: number; + resistance_dp_left: number; + resistance_dp_right: number; + + vefx: number[]; + light: number[]; + concentration: number; +}; + +export interface lightning_playdata { + collection: "lightning_playdata"; + + version: number; + + sp_num: number; + dp_num: number; +}; + +export const TDJ_settings = { + skin: 0, + skin_2: 0, + + headphone_vol: 10, + keyboard_kind: 10, // default to qwerty // + + resistance_sp_left: 4, + resistance_sp_right: 4, + resistance_dp_left: 4, + resistance_dp_right: 4, + + vefx: [7, 7, 7, 7, 7, 15, 15], + light: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1], + concentration: 0, +}; + +export const TDJ_playdata = { + sp_num: 0, + dp_num: 0, +}; + +export const TDJ_settings_old = { + skin: 0, + skin_2: 0, + + headphone_vol: 10, + + resistance_sp_left: 4, + resistance_sp_right: 4, + resistance_dp_left: 4, + resistance_dp_right: 4, + + vefx: [7, 7, 7, 7, 7, 15, 15], + light: [1, 1, 1, 1, 1, 1], + concentration: 0, +}; diff --git a/models/music_memo.ts b/models/music_memo.ts new file mode 100644 index 0000000..4dedee8 --- /dev/null +++ b/models/music_memo.ts @@ -0,0 +1,52 @@ +export interface lightning_musicmemo { + collection: "lightning_musicmemo"; + version: number; + + folder_idx: number; + folder_name: string; + play_style: number; + music_ids: number[]; +} + +export interface lightning_musicmemo_old { + collection: "lightning_musicmemo_old"; + version: number; + + music_idx: number; + play_style: number; + music_id: number; +} + +export interface lightning_musicfilter { + collection: "lightning_musicfilter"; + version: number; + + play_style: number; + folder_id: number; + filter_id: number; + is_valid: boolean; + value0: number; + value1: number; +} + +export interface musicmemo_data { + folder_idx: number; + folder_name: string; + play_style: number; + music_ids: number[]; +} + +export interface musicmemo_data_old { + music_idx: number; + play_style: number; + music_id: number; +} + +export interface musicfilter_data { + play_style: number; + folder_id: number; + filter_id: number; + is_valid: boolean; + value0: number; + value1: number; +} diff --git a/models/pc_data.ts b/models/pc_data.ts index 9759b1f..930cd1a 100644 --- a/models/pc_data.ts +++ b/models/pc_data.ts @@ -1,395 +1,629 @@ -export interface pc_data { - collection: "pc_data"; - - version: number; - - sgid: number; - dgid: number; - - deller: number; - trophy: string[]; - - sprank: number[]; - sppoint: number[]; - dprank: number[]; - dppoint: number[]; - - spradar: number[]; - dpradar: number[]; - - dp_clear_mission_clear: number; - dp_clear_mission_level: number; - dp_dj_mission_clear: number; - dp_dj_mission_level: number; - dp_level: number; - dp_mission_point: number; - dp_mplay: number; - enemy_damage: number; - progress: number; - sp_clear_mission_clear: number; - sp_clear_mission_level: number; - sp_dj_mission_clear: number; - sp_dj_mission_level: number; - sp_level: number; - sp_mission_point: number; - sp_mplay: number; - tips_read_list: number; - - total_point: number; - enemy_defeat_flg: number; - mission_clear_num: number; - - dpnum: number; - d_auto_scrach: number; - d_camera_layout: number; - d_disp_judge: number; - d_gauge_disp: number; - d_ghost_score: number; - d_gno: number; - d_graph_score: number; - d_gtype: number; - d_hispeed: number; - d_judge: number; - d_judgeAdj: number; - d_lane_brignt: number; - d_liflen: number; - d_notes: number; - d_opstyle: number; - d_pace: number; - d_sdlen: number; - d_sdtype: number; - d_sorttype: number; - d_timing: number; - d_tsujigiri_disp: number; - dach: number; - dp_opt: string; - dp_opt2: string; - d_exscore: number; - d_sub_gno: number; - d_tune: number; - - gpos: number; - mode: number; - pmode: number; - rtype: number; - ngrade: number; - - spnum: number; - s_auto_scrach: number; - s_camera_layout: number; - s_disp_judge: number; - s_gauge_disp: number; - s_ghost_score: number; - s_gno: number; - s_graph_score: number; - s_gtype: number; - s_hispeed: number; - s_judge: number; - s_judgeAdj: number; - s_lane_brignt: number; - s_liflen: number; - s_notes: number; - s_opstyle: number; - s_pace: number; - s_sdlen: number; - s_sdtype: number; - s_sorttype: number; - s_timing: number; - s_tsujigiri_disp: number; - sach: number; - sp_opt: string; - s_exscore: number; - s_sub_gno: number; - s_tune: number; - s_auto_adjust: number; - d_auto_adjust: number; -} - -export const IIDX27_pc_data = { - version: 27, - - deller: 0, - sgid: -1, - dgid: -1, - trophy: ["0", "0", "0", "0", "0", "0", "0", "0", "0", "0"], - sprank: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - sppoint: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - dprank: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - dppoint: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - - spradar: [0, 0, 0, 0, 0, 0], - dpradar: [0, 0, 0, 0, 0, 0], - - dp_clear_mission_clear: 0, - dp_clear_mission_level: 0, - dp_dj_mission_clear: 0, - dp_dj_mission_level: 0, - dp_level: 0, - dp_mission_point: 0, - dp_mplay: 0, - enemy_damage: 0, - progress: 0, - sp_clear_mission_clear: 0, - sp_clear_mission_level: 0, - sp_dj_mission_clear: 0, - sp_dj_mission_level: 0, - sp_level: 0, - sp_mission_point: 0, - sp_mplay: 0, - tips_read_list: 0, - - dpnum: 0, - d_auto_scrach: 0, - d_camera_layout: 0, - d_disp_judge: 0, - d_gauge_disp: 0, - d_ghost_score: 0, - d_gno: 0, - d_graph_score: 0, - d_gtype: 0, - d_hispeed: 0, - d_judge: 0, - d_judgeAdj: 0, - d_lane_brignt: 0, - d_liflen: 0, - d_notes: 0, - d_opstyle: 0, - d_pace: 0, - d_sdlen: 0, - d_sdtype: 0, - d_sorttype: 0, - d_timing: 0, - d_tsujigiri_disp: 0, - dach: 0, - dp_opt: "0", - dp_opt2: "0", - d_sub_gno: 0, - d_tune: 0, - - gpos: 0, - mode: 0, - pmode: 0, - rtype: 0, - - spnum: 0, - s_auto_scrach: 0, - s_camera_layout: 0, - s_disp_judge: 0, - s_gauge_disp: 0, - s_ghost_score: 0, - s_gno: 0, - s_graph_score: 0, - s_gtype: 0, - s_hispeed: 0, - s_judge: 0, - s_judgeAdj: 0, - s_lane_brignt: 0, - s_liflen: 0, - s_notes: 0, - s_opstyle: 0, - s_pace: 0, - s_sdlen: 0, - s_sdtype: 0, - s_sorttype: 0, - s_timing: 0, - s_tsujigiri_disp: 0, - sach: 0, - sp_opt: "0", - s_sub_gno: 0, - s_tune: 0, -}; - -export const IIDX28_pc_data = { - version: 28, - - deller: 0, - sgid: -1, - dgid: -1, - trophy: ["0", "0", "0", "0", "0", "0", "0", "0", "0", "0"], - sprank: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - sppoint: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - dprank: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - dppoint: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - - spradar: [0, 0, 0, 0, 0, 0], - dpradar: [0, 0, 0, 0, 0, 0], - - dp_clear_mission_clear: 0, - dp_clear_mission_level: 0, - dp_dj_mission_clear: 0, - dp_dj_mission_level: 0, - dp_level: 0, - dp_mission_point: 0, - dp_mplay: 0, - enemy_damage: 0, - progress: 0, - sp_clear_mission_clear: 0, - sp_clear_mission_level: 0, - sp_dj_mission_clear: 0, - sp_dj_mission_level: 0, - sp_level: 0, - sp_mission_point: 0, - sp_mplay: 0, - tips_read_list: 0, - - dpnum: 0, - d_auto_scrach: 0, - d_camera_layout: 0, - d_disp_judge: 0, - d_gauge_disp: 0, - d_ghost_score: 0, - d_gno: 0, - d_graph_score: 0, - d_gtype: 0, - d_hispeed: 0, - d_judge: 0, - d_judgeAdj: 0, - d_lane_brignt: 0, - d_liflen: 0, - d_notes: 0, - d_opstyle: 0, - d_pace: 0, - d_sdlen: 0, - d_sdtype: 0, - d_sorttype: 0, - d_timing: 0, - d_tsujigiri_disp: 0, - dach: 0, - dp_opt: "0", - dp_opt2: "0", - d_sub_gno: 0, - d_tune: 0, - - gpos: 0, - mode: 0, - pmode: 0, - rtype: 0, - ngrade: 0, - - spnum: 0, - s_auto_scrach: 0, - s_camera_layout: 0, - s_disp_judge: 0, - s_gauge_disp: 0, - s_ghost_score: 0, - s_gno: 0, - s_graph_score: 0, - s_gtype: 0, - s_hispeed: 0, - s_judge: 0, - s_judgeAdj: 0, - s_lane_brignt: 0, - s_liflen: 0, - s_notes: 0, - s_opstyle: 0, - s_pace: 0, - s_sdlen: 0, - s_sdtype: 0, - s_sorttype: 0, - s_timing: 0, - s_tsujigiri_disp: 0, - sach: 0, - sp_opt: "0", - s_sub_gno: 0, - s_tune: 0, -}; - -export const IIDX29_pc_data = { - version: 29, - - deller: 0, - sgid: -1, - dgid: -1, - trophy: ["0", "0", "0", "0", "0", "0", "0", "0", "0", "0"], - sprank: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - sppoint: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - dprank: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - dppoint: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - - spradar: [0, 0, 0, 0, 0, 0], - dpradar: [0, 0, 0, 0, 0, 0], - - dp_clear_mission_clear: 0, - dp_clear_mission_level: 0, - dp_dj_mission_clear: 0, - dp_dj_mission_level: 0, - dp_level: 0, - dp_mission_point: 0, - dp_mplay: 0, - enemy_damage: 0, - progress: 0, - sp_clear_mission_clear: 0, - sp_clear_mission_level: 0, - sp_dj_mission_clear: 0, - sp_dj_mission_level: 0, - sp_level: 0, - sp_mission_point: 0, - sp_mplay: 0, - tips_read_list: 0, - total_point: 0, - enemy_defeat_flg: 0, - mission_clear_num: 0, - - dpnum: 0, - d_auto_scrach: 0, - d_camera_layout: 0, - d_disp_judge: 0, - d_gauge_disp: 0, - d_ghost_score: 0, - d_gno: 0, - d_graph_score: 0, - d_gtype: 0, - d_hispeed: 0, - d_judge: 0, - d_judgeAdj: 0, - d_lane_brignt: 0, - d_liflen: 0, - d_notes: 0, - d_opstyle: 0, - d_pace: 0, - d_sdlen: 0, - d_sdtype: 0, - d_sorttype: 0, - d_timing: 0, - d_tsujigiri_disp: 0, - dach: 0, - dp_opt: "0", - dp_opt2: "0", - d_sub_gno: 0, - d_tune: 0, - - gpos: 0, - mode: 0, - pmode: 0, - rtype: 0, - ngrade: 0, - - spnum: 0, - s_auto_scrach: 0, - s_camera_layout: 0, - s_disp_judge: 0, - s_gauge_disp: 0, - s_ghost_score: 0, - s_gno: 0, - s_graph_score: 0, - s_gtype: 0, - s_hispeed: 0, - s_judge: 0, - s_judgeAdj: 0, - s_lane_brignt: 0, - s_liflen: 0, - s_notes: 0, - s_opstyle: 0, - s_pace: 0, - s_sdlen: 0, - s_sdtype: 0, - s_sorttype: 0, - s_timing: 0, - s_tsujigiri_disp: 0, - sach: 0, - sp_opt: "0", - s_sub_gno: 0, - s_tune: 0, - s_auto_adjust: 0, - d_auto_adjust: 0, -}; +export interface pc_data { + collection: "pc_data"; + + version: number; + + sgid: number; + dgid: number; + + deller: number; + trophy: string[]; + + sprank: number[]; + sppoint: number[]; + dprank: number[]; + dppoint: number[]; + + spradar: number[]; + dpradar: number[]; + + dp_clear_mission_clear: number; + dp_clear_mission_level: number; + dp_dj_mission_clear: number; + dp_dj_mission_level: number; + dp_fluctuation: number; + dp_level: number; + dp_mission_point: number; + dp_mplay: number; + enemy_damage: number; + progress: number; + sp_clear_mission_clear: number; + sp_clear_mission_level: number; + sp_dj_mission_clear: number; + sp_dj_mission_level: number; + sp_fluctuation: number; + sp_level: number; + sp_mission_point: number; + sp_mplay: number; + tips_read_list: number; + total_point: number; + enemy_defeat_flg: number; + mission_clear_num: number; + + dpnum: number; + d_auto_scrach: number; + d_camera_layout: number; + d_disp_judge: number; + d_gauge_disp: number; + d_ghost_score: number; + d_gno: number; + d_graph_score: number; + d_gtype: number; + d_hispeed: number; + d_judge: number; + d_judgeAdj: number; + d_lane_brignt: number; + d_liflen: number; + d_notes: number; + d_opstyle: number; + d_pace: number; + d_sdlen: number; + d_sdtype: number; + d_sorttype: number; + d_timing: number; + d_timing_split: number; + d_tsujigiri_disp: number; + d_visualization: number; + dach: number; + dp_opt: string; + dp_opt2: string; + d_exscore: number; + d_sub_gno: number; + d_tune: number; + + gpos: number; + mode: number; + pmode: number; + rtype: number; + ngrade: number; + + spnum: number; + s_auto_scrach: number; + s_camera_layout: number; + s_disp_judge: number; + s_gauge_disp: number; + s_ghost_score: number; + s_gno: number; + s_graph_score: number; + s_gtype: number; + s_hispeed: number; + s_judge: number; + s_judgeAdj: number; + s_lane_brignt: number; + s_liflen: number; + s_notes: number; + s_opstyle: number; + s_pace: number; + s_sdlen: number; + s_sdtype: number; + s_sorttype: number; + s_timing: number; + s_timing_split: number; + s_tsujigiri_disp: number; + s_visualization: number; + sach: number; + sp_opt: string; + s_exscore: number; + s_sub_gno: number; + s_tune: number; + s_auto_adjust: number; + d_auto_adjust: number; + + event_play_num: number; + event_last_select_gym_id: number; // 27 // + event_story_prog: number; // 28 // + event_last_select_area_id: number; + event_failed_num: number; + event_last_platform_id: number; // 29 // + event_last_platform_type: number; + event_last_select_flyer_id: number; // 30 // +} + +export const IIDX27_pc_data = { + version: 27, + + deller: 0, + sgid: -1, + dgid: -1, + trophy: ["0", "0", "0", "0", "0", "0", "0", "0", "0", "0"], + sprank: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + sppoint: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + dprank: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + dppoint: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + + spradar: [0, 0, 0, 0, 0, 0], + dpradar: [0, 0, 0, 0, 0, 0], + + dp_clear_mission_clear: 0, + dp_clear_mission_level: 0, + dp_dj_mission_clear: 0, + dp_dj_mission_level: 0, + dp_level: 0, + dp_mission_point: 0, + dp_mplay: 0, + enemy_damage: 0, + progress: 0, + sp_clear_mission_clear: 0, + sp_clear_mission_level: 0, + sp_dj_mission_clear: 0, + sp_dj_mission_level: 0, + sp_level: 0, + sp_mission_point: 0, + sp_mplay: 0, + tips_read_list: 0, + + dpnum: 0, + d_auto_scrach: 0, + d_camera_layout: 0, + d_disp_judge: 0, + d_gauge_disp: 0, + d_ghost_score: 0, + d_gno: 0, + d_graph_score: 0, + d_gtype: 0, + d_hispeed: 0, + d_judge: 0, + d_judgeAdj: 0, + d_lane_brignt: 0, + d_liflen: 0, + d_notes: 0, + d_opstyle: 0, + d_pace: 0, + d_sdlen: 0, + d_sdtype: 0, + d_sorttype: 0, + d_timing: 0, + d_tsujigiri_disp: 0, + dach: 0, + dp_opt: "0", + dp_opt2: "0", + d_sub_gno: 0, + d_tune: 0, + + gpos: 0, + mode: 0, + pmode: 0, + rtype: 0, + + spnum: 0, + s_auto_scrach: 0, + s_camera_layout: 0, + s_disp_judge: 0, + s_gauge_disp: 0, + s_ghost_score: 0, + s_gno: 0, + s_graph_score: 0, + s_gtype: 0, + s_hispeed: 0, + s_judge: 0, + s_judgeAdj: 0, + s_lane_brignt: 0, + s_liflen: 0, + s_notes: 0, + s_opstyle: 0, + s_pace: 0, + s_sdlen: 0, + s_sdtype: 0, + s_sorttype: 0, + s_timing: 0, + s_tsujigiri_disp: 0, + sach: 0, + sp_opt: "0", + s_sub_gno: 0, + s_tune: 0, + + event_play_num: 0, + event_last_select_gym_id: 0, +}; + +export const IIDX28_pc_data = { + version: 28, + + deller: 0, + sgid: -1, + dgid: -1, + trophy: ["0", "0", "0", "0", "0", "0", "0", "0", "0", "0"], + sprank: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + sppoint: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + dprank: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + dppoint: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + + spradar: [0, 0, 0, 0, 0, 0], + dpradar: [0, 0, 0, 0, 0, 0], + + dp_clear_mission_clear: 0, + dp_clear_mission_level: 0, + dp_dj_mission_clear: 0, + dp_dj_mission_level: 0, + dp_level: 0, + dp_mission_point: 0, + dp_mplay: 0, + enemy_damage: 0, + progress: 0, + sp_clear_mission_clear: 0, + sp_clear_mission_level: 0, + sp_dj_mission_clear: 0, + sp_dj_mission_level: 0, + sp_level: 0, + sp_mission_point: 0, + sp_mplay: 0, + tips_read_list: 0, + + dpnum: 0, + d_auto_scrach: 0, + d_camera_layout: 0, + d_disp_judge: 0, + d_gauge_disp: 0, + d_ghost_score: 0, + d_gno: 0, + d_graph_score: 0, + d_gtype: 0, + d_hispeed: 0, + d_judge: 0, + d_judgeAdj: 0, + d_lane_brignt: 0, + d_liflen: 0, + d_notes: 0, + d_opstyle: 0, + d_pace: 0, + d_sdlen: 0, + d_sdtype: 0, + d_sorttype: 0, + d_timing: 0, + d_tsujigiri_disp: 0, + dach: 0, + dp_opt: "0", + dp_opt2: "0", + d_sub_gno: 0, + d_tune: 0, + + gpos: 0, + mode: 0, + pmode: 0, + rtype: 0, + ngrade: 0, + + spnum: 0, + s_auto_scrach: 0, + s_camera_layout: 0, + s_disp_judge: 0, + s_gauge_disp: 0, + s_ghost_score: 0, + s_gno: 0, + s_graph_score: 0, + s_gtype: 0, + s_hispeed: 0, + s_judge: 0, + s_judgeAdj: 0, + s_lane_brignt: 0, + s_liflen: 0, + s_notes: 0, + s_opstyle: 0, + s_pace: 0, + s_sdlen: 0, + s_sdtype: 0, + s_sorttype: 0, + s_timing: 0, + s_tsujigiri_disp: 0, + sach: 0, + sp_opt: "0", + s_sub_gno: 0, + s_tune: 0, + + event_play_num: 0, + event_story_prog: 0, + event_last_select_area_id: 0, + event_failed_num: 0, +}; + +export const IIDX29_pc_data = { + version: 29, + + deller: 0, + sgid: -1, + dgid: -1, + trophy: ["0", "0", "0", "0", "0", "0", "0", "0", "0", "0"], + sprank: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + sppoint: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + dprank: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + dppoint: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + + spradar: [0, 0, 0, 0, 0, 0], + dpradar: [0, 0, 0, 0, 0, 0], + + dp_clear_mission_clear: 0, + dp_clear_mission_level: 0, + dp_dj_mission_clear: 0, + dp_dj_mission_level: 0, + dp_level: 0, + dp_mission_point: 0, + dp_mplay: 0, + enemy_damage: 0, + progress: 0, + sp_clear_mission_clear: 0, + sp_clear_mission_level: 0, + sp_dj_mission_clear: 0, + sp_dj_mission_level: 0, + sp_level: 0, + sp_mission_point: 0, + sp_mplay: 0, + tips_read_list: 0, + total_point: 0, + enemy_defeat_flg: 0, + mission_clear_num: 0, + + dpnum: 0, + d_auto_scrach: 0, + d_camera_layout: 0, + d_disp_judge: 0, + d_gauge_disp: 0, + d_ghost_score: 0, + d_gno: 0, + d_graph_score: 0, + d_gtype: 0, + d_hispeed: 0, + d_judge: 0, + d_judgeAdj: 0, + d_lane_brignt: 0, + d_liflen: 0, + d_notes: 0, + d_opstyle: 0, + d_pace: 0, + d_sdlen: 0, + d_sdtype: 0, + d_sorttype: 0, + d_timing: 0, + d_tsujigiri_disp: 0, + dach: 0, + dp_opt: "0", + dp_opt2: "0", + d_exscore: 0, + d_sub_gno: 0, + d_tune: 0, + + gpos: 0, + mode: 0, + pmode: 0, + rtype: 0, + ngrade: 0, + + spnum: 0, + s_auto_scrach: 0, + s_camera_layout: 0, + s_disp_judge: 0, + s_gauge_disp: 0, + s_ghost_score: 0, + s_gno: 0, + s_graph_score: 0, + s_gtype: 0, + s_hispeed: 0, + s_judge: 0, + s_judgeAdj: 0, + s_lane_brignt: 0, + s_liflen: 0, + s_notes: 0, + s_opstyle: 0, + s_pace: 0, + s_sdlen: 0, + s_sdtype: 0, + s_sorttype: 0, + s_timing: 0, + s_tsujigiri_disp: 0, + sach: 0, + sp_opt: "0", + s_exscore: 0, + s_sub_gno: 0, + s_tune: 0, + s_auto_adjust: 0, + d_auto_adjust: 0, + + event_play_num: 0, + last_platform_id: 0, + last_platform_type: 0, +}; + +export const IIDX30_pc_data = { + version: 30, + + deller: 0, + sgid: -1, + dgid: -1, + trophy: ["0", "0", "0", "0", "0", "0", "0", "0", "0", "0"], + sprank: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + sppoint: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + dprank: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + dppoint: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + + spradar: [0, 0, 0, 0, 0, 0], + dpradar: [0, 0, 0, 0, 0, 0], + + dp_fluctuation: 0, + dp_level: 0, + dp_mplay: 0, + enemy_damage: 0, + enemy_defeat_flg: 0, + mission_clear_num: 0, + progress: 0, + sp_fluctuation: 0, + sp_level: 0, + sp_mplay: 0, + tips_read_list: 0, + total_point: 0, + + dpnum: 0, + d_auto_scrach: 0, + d_camera_layout: 0, + d_disp_judge: 0, + d_gauge_disp: 0, + d_ghost_score: 0, + d_gno: 0, + d_graph_score: 0, + d_gtype: 0, + d_hispeed: 0, + d_judge: 0, + d_judgeAdj: 0, + d_lane_brignt: 0, + d_liflen: 0, + d_notes: 0, + d_opstyle: 0, + d_pace: 0, + d_sdlen: 0, + d_sdtype: 0, + d_sorttype: 0, + d_timing: 0, + d_timing_split: 0, + d_tsujigiri_disp: 0, + d_visualization: 0, + dach: 0, + dp_opt: "0", + dp_opt2: "0", + d_exscore: 0, + d_sub_gno: 0, + d_tune: 0, + + gpos: 0, + mode: 0, + pmode: 0, + rtype: 0, + ngrade: 0, + + spnum: 0, + s_auto_scrach: 0, + s_camera_layout: 0, + s_disp_judge: 0, + s_gauge_disp: 0, + s_ghost_score: 0, + s_gno: 0, + s_graph_score: 0, + s_gtype: 0, + s_hispeed: 0, + s_judge: 0, + s_judgeAdj: 0, + s_lane_brignt: 0, + s_liflen: 0, + s_notes: 0, + s_opstyle: 0, + s_pace: 0, + s_sdlen: 0, + s_sdtype: 0, + s_sorttype: 0, + s_timing: 0, + s_timing_split: 0, + s_tsujigiri_disp: 0, + s_visualization: 0, + sach: 0, + sp_opt: "0", + s_exscore: 0, + s_sub_gno: 0, + s_tune: 0, + s_auto_adjust: 0, + d_auto_adjust: 0, + + event_play_num: 0, + event_last_select_flyer_id: 0, +}; + +export const IIDX31_pc_data = { + version: 31, + + deller: 0, + sgid: -1, + dgid: -1, + trophy: ["0", "0", "0", "0", "0", "0", "0", "0", "0", "0"], + sprank: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + sppoint: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + dprank: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + dppoint: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + + spradar: [0, 0, 0, 0, 0, 0], + dpradar: [0, 0, 0, 0, 0, 0], + + dp_fluctuation: 0, + dp_level: 0, + dp_mplay: 0, + enemy_damage: 0, + enemy_defeat_flg: 0, + mission_clear_num: 0, + progress: 0, + sp_fluctuation: 0, + sp_level: 0, + sp_mplay: 0, + tips_read_list: 0, + total_point: 0, + + dpnum: 0, + d_auto_scrach: 0, + d_camera_layout: 0, + d_disp_judge: 0, + d_gauge_disp: 0, + d_ghost_score: 0, + d_gno: 0, + d_graph_score: 0, + d_gtype: 0, + d_hispeed: 0, + d_judge: 0, + d_judgeAdj: 0, + d_lane_brignt: 0, + d_liflen: 0, + d_notes: 0, + d_opstyle: 0, + d_pace: 0, + d_sdlen: 0, + d_sdtype: 0, + d_sorttype: 0, + d_timing: 0, + d_timing_split: 0, + d_tsujigiri_disp: 0, + d_visualization: 0, + dach: 0, + dp_opt: "0", + dp_opt2: "0", + d_exscore: 0, + d_sub_gno: 0, + d_tune: 0, + + gpos: 0, + mode: 0, + pmode: 0, + rtype: 0, + ngrade: 0, + + spnum: 0, + s_auto_scrach: 0, + s_camera_layout: 0, + s_disp_judge: 0, + s_gauge_disp: 0, + s_ghost_score: 0, + s_gno: 0, + s_graph_score: 0, + s_gtype: 0, + s_hispeed: 0, + s_judge: 0, + s_judgeAdj: 0, + s_lane_brignt: 0, + s_liflen: 0, + s_notes: 0, + s_opstyle: 0, + s_pace: 0, + s_sdlen: 0, + s_sdtype: 0, + s_sorttype: 0, + s_timing: 0, + s_timing_split: 0, + s_tsujigiri_disp: 0, + s_visualization: 0, + sach: 0, + sp_opt: "0", + s_exscore: 0, + s_sub_gno: 0, + s_tune: 0, + s_auto_adjust: 0, + d_auto_adjust: 0, + + event_play_num: 0, + event_last_select_flyer_id: 0, + + player_kind: 0, + s_classic_hispeed: 0, + d_classic_hispeed: 0, +}; diff --git a/models/profile.ts b/models/profile.ts index b618cbd..2dffe95 100644 --- a/models/profile.ts +++ b/models/profile.ts @@ -1,9 +1,13 @@ -export interface profile { - collection: "profile"; - - name: string; - pid: number; - iidxid: number; - iidxidstr: string; - refid: string; -} +export interface profile { + collection: "profile"; + + name: string; + pid: number; + iidxid: number; + iidxidstr: string; + refid: string; + + language: number; + tower_kbd: number; + tower_scr: number; +} diff --git a/models/rival.ts b/models/rival.ts new file mode 100644 index 0000000..ea5f92e --- /dev/null +++ b/models/rival.ts @@ -0,0 +1,19 @@ +export interface rival { + collection: "rival"; + + play_style: number; + + index: number; + rival_refid: string; +}; + +export interface rival_data { + play_style: number; + index: number; + + is_robo: boolean; + + qprodata: number[]; + profile: (string | number)[]; + pc_data: number[]; +} diff --git a/models/score.ts b/models/score.ts index 32b03ae..03dea97 100644 --- a/models/score.ts +++ b/models/score.ts @@ -1,21 +1,38 @@ -export interface score { - collection: "score"; - - music_id: number; - - spmArray: number[]; - dpmArray: number[]; -} - -export interface score_detail { - collection: "score_detail"; - - music_id: number; - clid: number; - - score: number; - clflg: number; - miss: number; - - time: number; -} +export interface score { + collection: "score"; + + music_id: number; + + spmArray: number[]; + dpmArray: number[]; + + optArray: number[]; + opt2Array: number[]; + + option_1: number; + option_2: number; +} + +export interface score_detail { + collection: "score_detail"; + + music_id: number; + clid: number; + + score: number; + clflg: number; + miss: number; + + time: number; +} + +export interface score_top { + collection: "score_top"; + + play_style: number; + music_id: number; + + names: string[]; + scores: number[]; + clflgs: number[]; +} diff --git a/models/settings.ts b/models/settings.ts index b7278f2..67d23c7 100644 --- a/models/settings.ts +++ b/models/settings.ts @@ -1,32 +1,103 @@ -export interface settings { - frame: number; - menu_music: number; - note_burst: number; - turntable: number; - lane_cover: number; - pacemaker_cover: number; - note_skin: number; - judge_font: number; - note_beam: number; - full_combo_splash: number; - score_folders: boolean; - clear_folders: boolean; - difficulty_folders: boolean; - alphabet_folders: boolean; - hide_playcount: boolean; - disable_graphcutin: boolean; - classic_hispeed: boolean; - hide_iidxid: boolean; - disable_musicpreview: number; - vefx_lock: number; - effect: number; - bomb_size: number; - disable_hcn_color: number; - first_note_preview: number; - - qpro_head: number; - qpro_hair: number; - qpro_hand: number; - qpro_face: number; - qpro_body: number; -} +export interface settings { + collection: "settings"; + + frame: number; + menu_music: number; + note_burst: number; + turntable: number; + lane_cover: number; + pacemaker_cover: number; + lift_cover: number; + note_skin: number; + note_size: number; + judge_font: number; + note_beam: number; + note_beam_size: number; + full_combo_splash: number; + score_folders: boolean; + clear_folders: boolean; + difficulty_folders: boolean; + alphabet_folders: boolean; + rival_folders: boolean; + rival_clear_folders: boolean; + rival_shop_info: boolean; + hide_playcount: boolean; + disable_graphcutin: boolean; + classic_hispeed: boolean; + hide_iidxid: boolean; + rival_played: boolean; + disable_musicpreview: number; + vefx_lock: number; + effect: number; + bomb_size: number; + disable_hcn_color: number; + first_note_preview: number; + + category_vox: number; + judge_pos: number; + premium_skin: number; + + qpro_head: number; + qpro_hair: number; + qpro_hand: number; + qpro_face: number; + qpro_body: number; + + random_lane_ticket: number[]; + random_lane_ticket_search: number[]; + + skin_frame_flg: number; + skin_bgm_flg: number; + skin_lane_flg: number; +} + +export const settings_data = { + frame: 0, + menu_music: 0, + note_burst: 0, + turntable: 0, + lane_cover: 0, + pacemaker_cover: 0, + lift_cover: 0, + note_skin: 0, + note_size: 0, + judge_font: 0, + note_beam: 0, + note_beam_size: 0, + full_combo_splash: 0, + score_folders: true, + clear_folders: true, + difficulty_folders: true, + alphabet_folders: true, + rival_folders: true, + rival_clear_folders: true, + rival_shop_info: true, + hide_playcount: false, + disable_graphcutin: false, + classic_hispeed: false, + rival_played: true, + hide_iidxid: false, + disable_musicpreview: 0, + vefx_lock: 0, + effect: 0, + bomb_size: 0, + disable_hcn_color: 0, + first_note_preview: 0, + + category_vox: 0, + judge_pos: 0, + premium_skin: 0, + + qpro_head: 0, + qpro_hair: 0, + qpro_hand: 0, + qpro_face: 0, + qpro_body: 0, + + random_lane_ticket: [], + random_lane_ticket_search: [], + + skin_frame_flg: 0, + skin_bgm_flg: 0, + skin_lane_flg: 0, +} diff --git a/models/world_tourism.ts b/models/world_tourism.ts new file mode 100644 index 0000000..81902a3 --- /dev/null +++ b/models/world_tourism.ts @@ -0,0 +1,7 @@ +export interface world_tourism { + collection: "world_tourism"; + version: number; + + tour_id: number; + progress: number; +} diff --git a/pug/27get.pug b/pug/27get.pug index 277f879..8154554 100644 --- a/pug/27get.pug +++ b/pug/27get.pug @@ -1,58 +1,86 @@ -IIDX27pc(status="0") - pcdata(d_auto_scrach=pc_data.d_auto_scrach d_camera_layout=pc_data.d_camera_layout d_disp_judge=pc_data.d_disp_judge d_gauge_disp=pc_data.d_gauge_disp d_ghost_score=pc_data.d_ghost_score d_gno=pc_data.d_gno d_graph_score=pc_data.d_graph_score d_gtype=pc_data.d_gtype d_hispeed=pc_data.d_hispeed d_judge=pc_data.d_judge d_judgeAdj=pc_data.d_judgeAdj d_lane_brignt=pc_data.d_lane_brignt d_liflen=pc_data.d_liflen d_notes=pc_data.d_notes d_opstyle=pc_data.d_opstyle d_pace=pc_data.d_pace d_sdlen=pc_data.d_sdlen d_sdtype=pc_data.d_sdtype d_sorttype=pc_data.d_sorttype d_sub_gno=pc_data.d_sub_gno d_timing=pc_data.d_timing d_tsujigiri_disp=pc_data.d_tsujigiri_disp d_tune=pc_data.d_tune dach=pc_data.dach dp_opt=pc_data.dp_opt dp_opt2=pc_data.dp_opt2 dpnum=0 gpos=pc_data.gpos id=profile.iidxid idstr=profile.iidxidstr mode=pc_data.mode name=profile.name pid=profile.pid pmode=pc_data.pmode rtype=pc_data.rtype s_auto_scrach=pc_data.s_auto_scrach s_camera_layout=pc_data.s_camera_layout s_disp_judge=pc_data.s_disp_judge s_gauge_disp=pc_data.s_gauge_disp s_ghost_score=pc_data.s_ghost_score s_gno=pc_data.s_gno s_graph_score=pc_data.s_graph_score s_gtype=pc_data.s_gtype s_hispeed=pc_data.s_hispeed s_judge=pc_data.s_judge s_judgeAdj=pc_data.s_judgeAdj s_lane_brignt=pc_data.s_lane_brignt s_liflen=pc_data.s_liflen s_notes=pc_data.s_notes s_opstyle=pc_data.s_opstyle s_pace=pc_data.s_pace s_sdlen=pc_data.s_sdlen s_sdtype=pc_data.s_sdtype s_sorttype=pc_data.s_sorttype s_sub_gno=pc_data.s_sub_gno s_timing=pc_data.s_timing s_tsujigiri_disp=pc_data.s_tsujigiri_disp s_tune=pc_data.s_tune sach=pc_data.sach sp_opt=pc_data.sp_opt spnum=pc_data.spnum) - join_shop(join_cflg="1" join_id="ea" join_name=shop_data.shop_name joinflg="1") - grade(sgid=pc_data.sgid dgid=pc_data.dgid) - - for (let d of dArray) - g(__type="u8" __count="4") #{d[0]} #{d[1]} #{d[2]} #{d[3]} - deller(deller=pc_data.deller rate="0") - rlist - ir_data - secret_course_data - secret - flg1(__type="s64" __count="3") 0 0 0 - flg2(__type="s64" __count="3") 0 0 0 - flg3(__type="s64" __count="3") 0 0 0 - flg4(__type="s64" __count="3") 0 0 0 - achievements(last_weekly="0" pack="0" pack_comp="0" rival_crush="0" visit_flg="0" weekly_num="0") - trophy(__type="s64" __count="20") #{pc_data.trophy[0]} #{pc_data.trophy[1]} #{pc_data.trophy[2]} #{pc_data.trophy[3]} #{pc_data.trophy[4]} #{pc_data.trophy[5]} #{pc_data.trophy[6]} #{pc_data.trophy[7]} #{pc_data.trophy[8]} #{pc_data.trophy[9]} - expert_point - classic_course_data - qprodata(__type="u32" __count="5") #{settings.qpro_head} #{settings.qpro_hair} #{settings.qpro_face} #{settings.qpro_hand} #{settings.qpro_body} - step(dp_clear_mission_clear=pc_data.dp_clear_mission_clear dp_clear_mission_level=pc_data.dp_clear_mission_level dp_dj_mission_clear=pc_data.dp_dj_mission_clear dp_dj_mission_level=pc_data.dp_dj_mission_level dp_level=pc_data.dp_level dp_mission_point=pc_data.dp_mission_point dp_mplay=pc_data.dp_mplay enemy_damage=pc_data.enemy_damage progress=pc_data.progress sp_clear_mission_clear=pc_data.sp_clear_mission_clear sp_clear_mission_level=pc_data.sp_clear_mission_level sp_dj_mission_clear=pc_data.sp_dj_mission_clear sp_dj_mission_level=pc_data.sp_dj_mission_level sp_level=pc_data.sp_level sp_mission_point=pc_data.sp_mission_point sp_mplay=pc_data.sp_mplay tips_read_list=pc_data.tips_read_list) - is_track_ticket(__type="bool") 1 - dj_rank(style="0") - rank(__type="s32" __count="15") #{pc_data.sprank[0]} #{pc_data.sprank[1]} #{pc_data.sprank[2]} #{pc_data.sprank[3]} #{pc_data.sprank[4]} #{pc_data.sprank[5]} #{pc_data.sprank[6]} #{pc_data.sprank[7]} #{pc_data.sprank[8]} #{pc_data.sprank[9]} #{pc_data.sprank[10]} #{pc_data.sprank[11]} #{pc_data.sprank[12]} #{pc_data.sprank[13]} #{pc_data.sprank[14]} - point(__type="s32" __count="15") #{pc_data.sppoint[0]} #{pc_data.sppoint[1]} #{pc_data.sppoint[2]} #{pc_data.sppoint[3]} #{pc_data.sppoint[4]} #{pc_data.sppoint[5]} #{pc_data.sppoint[6]} #{pc_data.sppoint[7]} #{pc_data.sppoint[8]} #{pc_data.sppoint[9]} #{pc_data.sppoint[10]} #{pc_data.sppoint[11]} #{pc_data.sppoint[12]} #{pc_data.sppoint[13]} #{pc_data.sppoint[14]} - dj_rank(style="1") - rank(__type="s32" __count="15") #{pc_data.dprank[0]} #{pc_data.dprank[1]} #{pc_data.dprank[2]} #{pc_data.dprank[3]} #{pc_data.dprank[4]} #{pc_data.dprank[5]} #{pc_data.dprank[6]} #{pc_data.dprank[7]} #{pc_data.dprank[8]} #{pc_data.dprank[9]} #{pc_data.dprank[10]} #{pc_data.dprank[11]} #{pc_data.dprank[12]} #{pc_data.dprank[13]} #{pc_data.dprank[14]} - point(__type="s32" __count="15") #{pc_data.dppoint[0]} #{pc_data.dppoint[1]} #{pc_data.dppoint[2]} #{pc_data.dppoint[3]} #{pc_data.dppoint[4]} #{pc_data.dppoint[5]} #{pc_data.dppoint[6]} #{pc_data.dppoint[7]} #{pc_data.dppoint[8]} #{pc_data.dppoint[9]} #{pc_data.dppoint[10]} #{pc_data.dppoint[11]} #{pc_data.dppoint[12]} #{pc_data.dppoint[13]} #{pc_data.dppoint[14]} - notes_radar(style="0") - radar_score(__type="s32" __count="6") #{pc_data.spradar[0]} #{pc_data.spradar[1]} #{pc_data.spradar[2]} #{pc_data.spradar[3]} #{pc_data.spradar[4]} #{pc_data.spradar[5]} - notes_radar(style="1") - radar_score(__type="s32" __count="6") #{pc_data.dpradar[0]} #{pc_data.dpradar[1]} #{pc_data.dpradar[2]} #{pc_data.dpradar[3]} #{pc_data.dpradar[4]} #{pc_data.dpradar[5]} - //-arena_data(play_num="0" play_num_dp="1" play_num_sp="1") - //- achieve_data(arena_class="19" best_top_class_continuing="0" now_top_class_continuing="0" play_style="0" rating_value="0") - //- achieve_data(arena_class="19" best_top_class_continuing="0" now_top_class_continuing="0" play_style="1" rating_value="0") - //- cube_data(cube="0" season_id="0") - ea_premium_course - bind_eaappli - leggendaria_open - pay_per_use(item_num="99") - playlist(encrypt_playlist="0" index="0" play_style="0") - spdp_rival(flg="0") - enable_qr_reward - visitor(anum="0" pnum="0" snum="0" vs_flg="0") - konami_stytle(skip_flg="0") - arena_penalty - defeat(defeat_flg="0") - bemani_vote(music_list="-1") - floor_infection3(music_list="-1") - language_setting(language="-1") - leggendaria_semi_open(flg="0") - kac_entry_info - enable_kac_deller - disp_kac_mark - is_kac_entry - is_kac_evnet_entry - kac_secret_music - skin(__type="s16" __count="20") #{settings.frame} #{settings.turntable} #{settings.note_burst} #{settings.menu_music} #{appendsetting} #{settings.lane_cover} 0 0 #{settings.note_skin} #{settings.full_combo_splash} #{settings.note_beam} #{settings.judge_font} 0 #{settings.disable_musicpreview} #{settings.pacemaker_cover} #{settings.vefx_lock} #{settings.effect} #{settings.bomb_size} #{settings.disable_hcn_color} #{settings.first_note_preview} +IIDX27pc(status="0") + pcdata(d_auto_scrach=pc_data.d_auto_scrach d_camera_layout=pc_data.d_camera_layout d_disp_judge=pc_data.d_disp_judge d_gauge_disp=pc_data.d_gauge_disp d_ghost_score=pc_data.d_ghost_score d_gno=pc_data.d_gno d_graph_score=pc_data.d_graph_score d_gtype=pc_data.d_gtype d_hispeed=pc_data.d_hispeed d_judge=pc_data.d_judge d_judgeAdj=pc_data.d_judgeAdj d_lane_brignt=pc_data.d_lane_brignt d_liflen=pc_data.d_liflen d_notes=pc_data.d_notes d_opstyle=pc_data.d_opstyle d_pace=pc_data.d_pace d_sdlen=pc_data.d_sdlen d_sdtype=pc_data.d_sdtype d_sorttype=pc_data.d_sorttype d_sub_gno=pc_data.d_sub_gno d_timing=pc_data.d_timing d_tsujigiri_disp=pc_data.d_tsujigiri_disp d_tune=pc_data.d_tune dach=pc_data.dach dp_opt=pc_data.dp_opt dp_opt2=pc_data.dp_opt2 dpnum=0 gpos=pc_data.gpos id=profile.iidxid idstr=profile.iidxidstr mode=pc_data.mode name=profile.name pid=profile.pid pmode=pc_data.pmode rtype=pc_data.rtype s_auto_scrach=pc_data.s_auto_scrach s_camera_layout=pc_data.s_camera_layout s_disp_judge=pc_data.s_disp_judge s_gauge_disp=pc_data.s_gauge_disp s_ghost_score=pc_data.s_ghost_score s_gno=pc_data.s_gno s_graph_score=pc_data.s_graph_score s_gtype=pc_data.s_gtype s_hispeed=pc_data.s_hispeed s_judge=pc_data.s_judge s_judgeAdj=pc_data.s_judgeAdj s_lane_brignt=pc_data.s_lane_brignt s_liflen=pc_data.s_liflen s_notes=pc_data.s_notes s_opstyle=pc_data.s_opstyle s_pace=pc_data.s_pace s_sdlen=pc_data.s_sdlen s_sdtype=pc_data.s_sdtype s_sorttype=pc_data.s_sorttype s_sub_gno=pc_data.s_sub_gno s_timing=pc_data.s_timing s_tsujigiri_disp=pc_data.s_tsujigiri_disp s_tune=pc_data.s_tune sach=pc_data.sach sp_opt=pc_data.sp_opt spnum=pc_data.spnum) + lightning_play_data(dpnum=lightning_playdata.dp_num spnum=lightning_playdata.sp_num) + lightning_setting(headphone_vol=lightning_settings.headphone_vol resistance_dp_left=lightning_settings.resistance_dp_left resistance_dp_right=lightning_settings.resistance_dp_right resistance_sp_left=lightning_settings.resistance_sp_left resistance_sp_right=lightning_settings.resistance_sp_right) + slider(__type="s32" __count="7") #{lightning_settings.vefx[0]} #{lightning_settings.vefx[1]} #{lightning_settings.vefx[2]} #{lightning_settings.vefx[3]} #{lightning_settings.vefx[4]} #{lightning_settings.vefx[5]} #{lightning_settings.vefx[6]} + light(__type="bool" __count="6") #{lightning_settings.light[0]} #{lightning_settings.light[1]} #{lightning_settings.light[2]} #{lightning_settings.light[3]} #{lightning_settings.light[4]} #{lightning_settings.light[5]} + concentration(__type="bool") #{lightning_settings.concentration} + spdp_rival(flg="0") + bind_eaappli + ea_premium_course + enable_qr_reward + kac_entry_info + enable_kac_deller + disp_kac_mark + is_kac_entry + is_kac_evnet_entry + kac_secret_music + leggendaria_open + secret + flg1(__type="s64" __count="3") -1 -1 -1 + flg2(__type="s64" __count="3") -1 -1 -1 + flg3(__type="s64" __count="3") -1 -1 -1 + flg4(__type="s64" __count="3") -1 -1 -1 + playlist(encrypt_playlist="0" index="0" play_style="0") + grade(sgid=pc_data.sgid dgid=pc_data.dgid) + - for (let d of dArray) + g(__type="u8" __count="4") #{d[0]} #{d[1]} #{d[2]} #{d[3]} + eisei_grade + - for (let ed of eArray) + detail(grade_type=ed.grade_type grade_id=ed.grade_id stage_num=ed.stage_num clear_type=ed.clear_type) + past(__type="s32" __count="5") #{ed.past[0]} #{ed.past[1]} #{ed.past[2]} #{ed.past[3]} #{ed.past[4]} + max_past(__type="s32" __count="5") #{ed.max_past[0]} #{ed.max_past[1]} #{ed.max_past[2]} #{ed.max_past[3]} #{ed.max_past[4]} + skin(__type="s16" __count="20") #{settings.frame} #{settings.turntable} #{settings.note_burst} #{settings.menu_music} #{appendsetting} #{settings.lane_cover} #{settings.judge_pos} #{settings.category_vox} #{settings.note_skin} #{settings.full_combo_splash} #{settings.note_beam} #{settings.judge_font} 0 #{settings.disable_musicpreview} #{settings.pacemaker_cover} #{settings.vefx_lock} #{settings.effect} #{settings.bomb_size} #{settings.disable_hcn_color} #{settings.first_note_preview} + qprodata(__type="u32" __count="5") #{settings.qpro_head} #{settings.qpro_hair} #{settings.qpro_face} #{settings.qpro_hand} #{settings.qpro_body} + rlist + - for (let rd of rArray) + rival(spdp=rd.play_style id=rd.profile[2] id_str=rd.profile[3] djname=rd.profile[0] pid=rd.profile[1] sg=rd.pc_data[0] dg=rd.pc_data[1] sa=rd.pc_data[2] da=rd.pc_data[3]) + is_robo(__type="bool") rd.is_robo + qprodata(body=rd.qprodata[3] face=rd.qprodata[2] hair=rd.qprodata[0] hand=rd.qprodata[4] head=rd.qprodata[1]) + shop(name=shop_data.shop_name) + follow_data + ir_data + secret_course_data + classic_course_data + dj_rank(style="0") + rank(__type="s32" __count="15") #{pc_data.sprank[0]} #{pc_data.sprank[1]} #{pc_data.sprank[2]} #{pc_data.sprank[3]} #{pc_data.sprank[4]} #{pc_data.sprank[5]} #{pc_data.sprank[6]} #{pc_data.sprank[7]} #{pc_data.sprank[8]} #{pc_data.sprank[9]} #{pc_data.sprank[10]} #{pc_data.sprank[11]} #{pc_data.sprank[12]} #{pc_data.sprank[13]} #{pc_data.sprank[14]} + point(__type="s32" __count="15") #{pc_data.sppoint[0]} #{pc_data.sppoint[1]} #{pc_data.sppoint[2]} #{pc_data.sppoint[3]} #{pc_data.sppoint[4]} #{pc_data.sppoint[5]} #{pc_data.sppoint[6]} #{pc_data.sppoint[7]} #{pc_data.sppoint[8]} #{pc_data.sppoint[9]} #{pc_data.sppoint[10]} #{pc_data.sppoint[11]} #{pc_data.sppoint[12]} #{pc_data.sppoint[13]} #{pc_data.sppoint[14]} + dj_rank(style="1") + rank(__type="s32" __count="15") #{pc_data.dprank[0]} #{pc_data.dprank[1]} #{pc_data.dprank[2]} #{pc_data.dprank[3]} #{pc_data.dprank[4]} #{pc_data.dprank[5]} #{pc_data.dprank[6]} #{pc_data.dprank[7]} #{pc_data.dprank[8]} #{pc_data.dprank[9]} #{pc_data.dprank[10]} #{pc_data.dprank[11]} #{pc_data.dprank[12]} #{pc_data.dprank[13]} #{pc_data.dprank[14]} + point(__type="s32" __count="15") #{pc_data.dppoint[0]} #{pc_data.dppoint[1]} #{pc_data.dppoint[2]} #{pc_data.dppoint[3]} #{pc_data.dppoint[4]} #{pc_data.dppoint[5]} #{pc_data.dppoint[6]} #{pc_data.dppoint[7]} #{pc_data.dppoint[8]} #{pc_data.dppoint[9]} #{pc_data.dppoint[10]} #{pc_data.dppoint[11]} #{pc_data.dppoint[12]} #{pc_data.dppoint[13]} #{pc_data.dppoint[14]} + notes_radar(style="0") + radar_score(__type="s32" __count="6") #{pc_data.spradar[0]} #{pc_data.spradar[1]} #{pc_data.spradar[2]} #{pc_data.spradar[3]} #{pc_data.spradar[4]} #{pc_data.spradar[5]} + notes_radar(style="1") + radar_score(__type="s32" __count="6") #{pc_data.dpradar[0]} #{pc_data.dpradar[1]} #{pc_data.dpradar[2]} #{pc_data.dpradar[3]} #{pc_data.dpradar[4]} #{pc_data.dpradar[5]} + tonjyutsu(black_pass="-1" platinum_pass="-1") + weekly(mid="-1" wid="1") + join_shop(join_cflg="1" join_id="ea" join_name=shop_data.shop_name joinflg="1") + visitor(anum="0" pnum="0" snum="0" vs_flg="0") + step(dp_clear_mission_clear=pc_data.dp_clear_mission_clear dp_clear_mission_level=pc_data.dp_clear_mission_level dp_dj_mission_clear=pc_data.dp_dj_mission_clear dp_dj_mission_level=pc_data.dp_dj_mission_level dp_level=pc_data.dp_level dp_mission_point=pc_data.dp_mission_point dp_mplay=pc_data.dp_mplay enemy_damage=pc_data.enemy_damage progress=pc_data.progress sp_clear_mission_clear=pc_data.sp_clear_mission_clear sp_clear_mission_level=pc_data.sp_clear_mission_level sp_dj_mission_clear=pc_data.sp_dj_mission_clear sp_dj_mission_level=pc_data.sp_dj_mission_level sp_level=pc_data.sp_level sp_mission_point=pc_data.sp_mission_point sp_mplay=pc_data.sp_mplay tips_read_list=pc_data.tips_read_list) + is_track_ticket(__type="bool") 1 + packinfo(music_0="-1" music_1="-1" music_2="-1" pack_id="1") + achievements(last_weekly="0" pack="0" pack_comp="0" rival_crush="0" visit_flg="0" weekly_num="0") + trophy(__type="s64" __count="20") #{pc_data.trophy[0]} #{pc_data.trophy[1]} #{pc_data.trophy[2]} #{pc_data.trophy[3]} #{pc_data.trophy[4]} #{pc_data.trophy[5]} #{pc_data.trophy[6]} #{pc_data.trophy[7]} #{pc_data.trophy[8]} #{pc_data.trophy[9]} + deller(deller=pc_data.deller rate="0") + orb_data(present_orb="100" rest_orb="100") + expert_point + old_linkage_secret_flg(floor_infection2="0" floor_infection3="0" bemani_vote="0") + leggendaria_semi_open(flg="0") + konami_stytle(skip_flg="0") + arena_data(play_num="6" play_num_dp="3" play_num_sp="3" prev_best_class_dp="18" prev_best_class_sp="18") + achieve_data(arena_class="-1" best_top_class_continuing="0" counterattack_num="0" now_top_class_continuing="0" play_style="0" rating_value="90") + achieve_data(arena_class="-1" best_top_class_continuing="0" counterattack_num="0" now_top_class_continuing="0" play_style="1" rating_value="90") + cube_data(cube="200" season_id="0") + skin_customize_flg(skin_frame_flg=settings.skin_frame_flg skin_bgm_flg=settings.skin_bgm_flg) + event_1(event_play_num=pc_data.event_play_num last_select_gym_id=pc_data.event_last_select_gym_id) + - for (let evt of evtArray) + gym_data(gym_id=evt.gym_id play_num=evt.play_num gauge_spirit=evt.gauge_spirit gauge_technique=evt.gauge_technique gauge_body=evt.gauge_body boss_attack_num=evt.boss_attack_num boss_damage=evt.boss_damage disp_lounge_list=evt.disp_lounge_list stb_type=evt.stb_type) + is_complete(__type="bool") #{evt.is_complete} + is_gauge_max(__type="bool") #{evt.is_gauge_max} + floor_infection4(music_list="-1") + bemani_vote(music_list="-1") + bemani_janken_meeting(music_list="-1") + bemani_rush(music_list_ichika="-1" music_list_nono="-1") + ultimate_mobile_link(music_list="-1") + language_setting(language=profile.language) + movie_agreement(agreement_version="1") diff --git a/pug/27pccommon.pug b/pug/27pccommon.pug index bc7bcb3..6312f33 100644 --- a/pug/27pccommon.pug +++ b/pug/27pccommon.pug @@ -1,42 +1,43 @@ -IIDX27pc(status="0") - monthly_mranking(__type="u16" __count="1") 65535 - total_mranking(__type="u16" __count="1") 65535 - internet_ranking - secret_ex_course - kac_mid(__type="s32" __count="1") 65535 - kac_clid(__type="s32" __count="1") 0 - ir(beat="3") - cm(compo="cm_ultimate" folder="cm_ultimate" id="0") - tdj_cm - cm(filename="cm_bn_001" id="0") - cm(filename="cm_bn_002" id="1") - cm(filename="event_bn_001" id="2") - cm(filename="event_bn_004" id="3") - cm(filename="event_bn_006" id="4") - cm(filename="fipb_001" id="5") - cm(filename="year_bn_004" id="6") - cm(filename="year_bn_005" id="7") - cm(filename="year_bn_006_2" id="8") - cm(filename="year_bn_007" id="9") - license - string(__type="str") Asphyxia - file_recovery(url="https://example.com") - button_release_frame( frame="0") - escape_package_info - list(apply_file_name="XXX" apply_release_code="XXX") - expert(phase="1") - expert_random_secret(phase="2") - boss(phase="0") - vip_pass_black - deller_bonus(open="1") - newsong_another(open="1") - pcb_check(flg="0") - expert_secret_full_open - eaorder_phase(phase="2") - common_evnet(flg="65535") - system_voice_phase(phase="0") - extra_boss_event(phase="0") - event1_phase(phase="0") - premium_area_news(open="1") - premium_area_qpro(open="1") - ignore_button_mashing +IIDX27pc(status="0" expire="600") + monthly_mranking(__type="u16" __count="20") -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 + total_mranking(__type="u16" __count="20") -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 + internet_ranking + secret_ex_course + kac_mid(__type="s32" __count="5") -1 -1 -1 -1 -1 + kac_clid(__type="s32" __count="5") -1 -1 -1 -1 -1 + ir(beat=beat) + cm(id="0" folder="cm_ultimate" compo="cm_ultimate") + tdj_cm + cm(id="0" filename="cm_bn_001") + cm(id="1" filename="cm_bn_002") + cm(id="2" filename="event_bn_001") + cm(id="3" filename="event_bn_004") + cm(id="4" filename="event_bn_006") + cm(id="5" filename="fipb_001") + cm(id="6" filename="year_bn_004") + cm(id="7" filename="year_bn_005") + cm(id="8" filename="year_bn_006_2") + cm(id="9" filename="year_bn_007") + movie_agreement(version="1") + license + string(__type="str") Asphyxia + button_release_frame(frame="0") + escape_package_info + expert(phase=expert) + expert_random_secret(phase=expert_secret) + boss(phase=boss) + vip_pass_black + deller_bonus(open="1") + newsong_another(open="1") + pcb_check(flg="0") + expert_secret_full_open + eaorder_phase(phase="2") + common_evnet(flg="-1") + system_voice_phase(phase=system_voice) + extra_boss_event(phase=extra_boss) + event1_phase(phase=event_1) + premium_area_news(open="1") + premium_area_qpro(open="1") + ignore_button_mashing + play_video + display_asio_logo diff --git a/pug/27systeminfo.pug b/pug/27systeminfo.pug new file mode 100644 index 0000000..9e2bb82 --- /dev/null +++ b/pug/27systeminfo.pug @@ -0,0 +1,67 @@ +IIDX27gameSystem(status="0") + arena_schedule + phase(__type="u8") 2 + start(__type="u32") 1605784800 + end(__type="u32") 4102326000 + arena_music_difficult + play_style(__type="s32") 0 + arena_class(__type="s32") -1 + low_difficult(__type="s32") 1 + high_difficult(__type="s32") 12 + is_leggendaria(__type="bool") 1 + force_music_list_id(__type="s32") 0 + arena_music_difficult + play_style(__type="s32") 1 + arena_class(__type="s32") -1 + low_difficult(__type="s32") 1 + high_difficult(__type="s32") 12 + is_leggendaria(__type="bool") 1 + force_music_list_id(__type="s32") 0 + arena_cpu_define + play_style(__type="s32") 0 + arena_class(__type="s32") -1 + grade_id(__type="s32") 18 + low_music_difficult(__type="s32") 8 + high_music_difficult(__type="s32") 12 + is_leggendaria(__type="bool") 0 + arena_cpu_define + play_style(__type="s32") 1 + arena_class(__type="s32") -1 + grade_id(__type="s32") 18 + low_music_difficult(__type="s32") 8 + high_music_difficult(__type="s32") 12 + is_leggendaria(__type="bool") 0 + maching_class_range + play_style(__type="s32") 0 + matching_class(__type="s32") 2 + low_arena_class(__type="s32") 0 + high_arena_class(__type="s32") 19 + maching_class_range + play_style(__type="s32") 0 + matching_class(__type="s32") 1 + low_arena_class(__type="s32") 0 + high_arena_class(__type="s32") 19 + maching_class_range + play_style(__type="s32") 1 + matching_class(__type="s32") 2 + low_arena_class(__type="s32") 0 + high_arena_class(__type="s32") 19 + maching_class_range + play_style(__type="s32") 1 + matching_class(__type="s32") 1 + low_arena_class(__type="s32") 0 + high_arena_class(__type="s32") 19 + arena_force_music + play_style(__type="s32") 0 + force_music_list_id(__type="s32") 0 + index(__type="s32") 0 + music_id(__type="s32") 1000 + note_grade(__type="s32") 0 + is_active(__type="bool") 0 + arena_force_music + play_style(__type="s32") 1 + force_music_list_id(__type="s32") 0 + index(__type="s32") 0 + music_id(__type="s32") 1000 + note_grade(__type="s32") 0 + is_active(__type="bool") 1 diff --git a/pug/28get.pug b/pug/28get.pug index 3929283..c44b147 100644 --- a/pug/28get.pug +++ b/pug/28get.pug @@ -1,58 +1,100 @@ -IIDX28pc(status="0") - pcdata(d_auto_scrach=pc_data.d_auto_scrach d_camera_layout=pc_data.d_camera_layout d_disp_judge=pc_data.d_disp_judge d_gauge_disp=pc_data.d_gauge_disp d_ghost_score=pc_data.d_ghost_score d_gno=pc_data.d_gno d_graph_score=pc_data.d_graph_score d_gtype=pc_data.d_gtype d_hispeed=pc_data.d_hispeed d_judge=pc_data.d_judge d_judgeAdj=pc_data.d_judgeAdj d_lane_brignt=pc_data.d_lane_brignt d_liflen=pc_data.d_liflen d_notes=pc_data.d_notes d_opstyle=pc_data.d_opstyle d_pace=pc_data.d_pace d_sdlen=pc_data.d_sdlen d_sdtype=pc_data.d_sdtype d_sorttype=pc_data.d_sorttype d_sub_gno=pc_data.d_sub_gno d_timing=pc_data.d_timing d_tsujigiri_disp=pc_data.d_tsujigiri_disp d_tune=pc_data.d_tune dach=pc_data.dach dp_opt=pc_data.dp_opt dp_opt2=pc_data.dp_opt2 dpnum=0 gpos=pc_data.gpos id=profile.iidxid idstr=profile.iidxidstr mode=pc_data.mode name=profile.name pid=profile.pid pmode=pc_data.pmode rtype=pc_data.rtype s_auto_scrach=pc_data.s_auto_scrach s_camera_layout=pc_data.s_camera_layout s_disp_judge=pc_data.s_disp_judge s_gauge_disp=pc_data.s_gauge_disp s_ghost_score=pc_data.s_ghost_score s_gno=pc_data.s_gno s_graph_score=pc_data.s_graph_score s_gtype=pc_data.s_gtype s_hispeed=pc_data.s_hispeed s_judge=pc_data.s_judge s_judgeAdj=pc_data.s_judgeAdj s_lane_brignt=pc_data.s_lane_brignt s_liflen=pc_data.s_liflen s_notes=pc_data.s_notes s_opstyle=pc_data.s_opstyle s_pace=pc_data.s_pace s_sdlen=pc_data.s_sdlen s_sdtype=pc_data.s_sdtype s_sorttype=pc_data.s_sorttype s_sub_gno=pc_data.s_sub_gno s_timing=pc_data.s_timing s_tsujigiri_disp=pc_data.s_tsujigiri_disp s_tune=pc_data.s_tune sach=pc_data.sach sp_opt=pc_data.sp_opt spnum=pc_data.spnum ngrade=pc_data.ngrade) - join_shop(join_cflg="1" join_id="ea" join_name=shop_data.shop_name joinflg="1") - grade(sgid=pc_data.sgid dgid=pc_data.dgid) - - for (let d of dArray) - g(__type="u8" __count="4") #{d[0]} #{d[1]} #{d[2]} #{d[3]} - deller(deller=pc_data.deller rate="0") - rlist - ir_data - secret_course_data - secret - flg1(__type="s64" __count="3") 0 0 0 - flg2(__type="s64" __count="3") 0 0 0 - flg3(__type="s64" __count="3") 0 0 0 - flg4(__type="s64" __count="3") 0 0 0 - achievements(last_weekly="0" pack="0" pack_comp="0" rival_crush="0" visit_flg="0" weekly_num="0") - trophy(__type="s64" __count="20") #{pc_data.trophy[0]} #{pc_data.trophy[1]} #{pc_data.trophy[2]} #{pc_data.trophy[3]} #{pc_data.trophy[4]} #{pc_data.trophy[5]} #{pc_data.trophy[6]} #{pc_data.trophy[7]} #{pc_data.trophy[8]} #{pc_data.trophy[9]} - expert_point - classic_course_data - qprodata(__type="u32" __count="5") #{settings.qpro_head} #{settings.qpro_hair} #{settings.qpro_face} #{settings.qpro_hand} #{settings.qpro_body} - step(dp_clear_mission_clear=pc_data.dp_clear_mission_clear dp_clear_mission_level=pc_data.dp_clear_mission_level dp_dj_mission_clear=pc_data.dp_dj_mission_clear dp_dj_mission_level=pc_data.dp_dj_mission_level dp_level=pc_data.dp_level dp_mission_point=pc_data.dp_mission_point dp_mplay=pc_data.dp_mplay enemy_damage=pc_data.enemy_damage progress=pc_data.progress sp_clear_mission_clear=pc_data.sp_clear_mission_clear sp_clear_mission_level=pc_data.sp_clear_mission_level sp_dj_mission_clear=pc_data.sp_dj_mission_clear sp_dj_mission_level=pc_data.sp_dj_mission_level sp_level=pc_data.sp_level sp_mission_point=pc_data.sp_mission_point sp_mplay=pc_data.sp_mplay tips_read_list=pc_data.tips_read_list) - is_track_ticket(__type="bool") 1 - dj_rank(style="0") - rank(__type="s32" __count="15") #{pc_data.sprank[0]} #{pc_data.sprank[1]} #{pc_data.sprank[2]} #{pc_data.sprank[3]} #{pc_data.sprank[4]} #{pc_data.sprank[5]} #{pc_data.sprank[6]} #{pc_data.sprank[7]} #{pc_data.sprank[8]} #{pc_data.sprank[9]} #{pc_data.sprank[10]} #{pc_data.sprank[11]} #{pc_data.sprank[12]} #{pc_data.sprank[13]} #{pc_data.sprank[14]} - point(__type="s32" __count="15") #{pc_data.sppoint[0]} #{pc_data.sppoint[1]} #{pc_data.sppoint[2]} #{pc_data.sppoint[3]} #{pc_data.sppoint[4]} #{pc_data.sppoint[5]} #{pc_data.sppoint[6]} #{pc_data.sppoint[7]} #{pc_data.sppoint[8]} #{pc_data.sppoint[9]} #{pc_data.sppoint[10]} #{pc_data.sppoint[11]} #{pc_data.sppoint[12]} #{pc_data.sppoint[13]} #{pc_data.sppoint[14]} - dj_rank(style="1") - rank(__type="s32" __count="15") #{pc_data.dprank[0]} #{pc_data.dprank[1]} #{pc_data.dprank[2]} #{pc_data.dprank[3]} #{pc_data.dprank[4]} #{pc_data.dprank[5]} #{pc_data.dprank[6]} #{pc_data.dprank[7]} #{pc_data.dprank[8]} #{pc_data.dprank[9]} #{pc_data.dprank[10]} #{pc_data.dprank[11]} #{pc_data.dprank[12]} #{pc_data.dprank[13]} #{pc_data.dprank[14]} - point(__type="s32" __count="15") #{pc_data.dppoint[0]} #{pc_data.dppoint[1]} #{pc_data.dppoint[2]} #{pc_data.dppoint[3]} #{pc_data.dppoint[4]} #{pc_data.dppoint[5]} #{pc_data.dppoint[6]} #{pc_data.dppoint[7]} #{pc_data.dppoint[8]} #{pc_data.dppoint[9]} #{pc_data.dppoint[10]} #{pc_data.dppoint[11]} #{pc_data.dppoint[12]} #{pc_data.dppoint[13]} #{pc_data.dppoint[14]} - notes_radar(style="0") - radar_score(__type="s32" __count="6") #{pc_data.spradar[0]} #{pc_data.spradar[1]} #{pc_data.spradar[2]} #{pc_data.spradar[3]} #{pc_data.spradar[4]} #{pc_data.spradar[5]} - notes_radar(style="1") - radar_score(__type="s32" __count="6") #{pc_data.dpradar[0]} #{pc_data.dpradar[1]} #{pc_data.dpradar[2]} #{pc_data.dpradar[3]} #{pc_data.dpradar[4]} #{pc_data.dpradar[5]} - //-arena_data(play_num="0" play_num_dp="1" play_num_sp="1") - //- achieve_data(arena_class="19" best_top_class_continuing="0" now_top_class_continuing="0" play_style="0" rating_value="0") - //- achieve_data(arena_class="19" best_top_class_continuing="0" now_top_class_continuing="0" play_style="1" rating_value="0") - //- cube_data(cube="0" season_id="0") - ea_premium_course - bind_eaappli - leggendaria_open - pay_per_use(item_num="99") - playlist(encrypt_playlist="0" index="0" play_style="0") - spdp_rival(flg="0") - enable_qr_reward - visitor(anum="0" pnum="0" snum="0" vs_flg="0") - konami_stytle(skip_flg="0") - arena_penalty - defeat(defeat_flg="0") - bemani_vote(music_list="-1") - floor_infection3(music_list="-1") - language_setting(language="-1") - leggendaria_semi_open(flg="0") - kac_entry_info - enable_kac_deller - disp_kac_mark - is_kac_entry - is_kac_evnet_entry - kac_secret_music - skin(__type="s16" __count="20") #{settings.frame} #{settings.turntable} #{settings.note_burst} #{settings.menu_music} #{appendsetting} #{settings.lane_cover} 0 0 #{settings.note_skin} #{settings.full_combo_splash} #{settings.note_beam} #{settings.judge_font} 0 #{settings.disable_musicpreview} #{settings.pacemaker_cover} #{settings.vefx_lock} #{settings.effect} #{settings.bomb_size} #{settings.disable_hcn_color} #{settings.first_note_preview} +IIDX28pc(status="0") + pcdata(d_auto_scrach=pc_data.d_auto_scrach d_camera_layout=pc_data.d_camera_layout d_disp_judge=pc_data.d_disp_judge d_gauge_disp=pc_data.d_gauge_disp d_ghost_score=pc_data.d_ghost_score d_gno=pc_data.d_gno d_graph_score=pc_data.d_graph_score d_gtype=pc_data.d_gtype d_hispeed=pc_data.d_hispeed d_judge=pc_data.d_judge d_judgeAdj=pc_data.d_judgeAdj d_lane_brignt=pc_data.d_lane_brignt d_liflen=pc_data.d_liflen d_notes=pc_data.d_notes d_opstyle=pc_data.d_opstyle d_pace=pc_data.d_pace d_sdlen=pc_data.d_sdlen d_sdtype=pc_data.d_sdtype d_sorttype=pc_data.d_sorttype d_sub_gno=pc_data.d_sub_gno d_timing=pc_data.d_timing d_tsujigiri_disp=pc_data.d_tsujigiri_disp d_tune=pc_data.d_tune dach=pc_data.dach dp_opt=pc_data.dp_opt dp_opt2=pc_data.dp_opt2 dpnum=0 gpos=pc_data.gpos id=profile.iidxid idstr=profile.iidxidstr mode=pc_data.mode name=profile.name pid=profile.pid pmode=pc_data.pmode rtype=pc_data.rtype s_auto_scrach=pc_data.s_auto_scrach s_camera_layout=pc_data.s_camera_layout s_disp_judge=pc_data.s_disp_judge s_gauge_disp=pc_data.s_gauge_disp s_ghost_score=pc_data.s_ghost_score s_gno=pc_data.s_gno s_graph_score=pc_data.s_graph_score s_gtype=pc_data.s_gtype s_hispeed=pc_data.s_hispeed s_judge=pc_data.s_judge s_judgeAdj=pc_data.s_judgeAdj s_lane_brignt=pc_data.s_lane_brignt s_liflen=pc_data.s_liflen s_notes=pc_data.s_notes s_opstyle=pc_data.s_opstyle s_pace=pc_data.s_pace s_sdlen=pc_data.s_sdlen s_sdtype=pc_data.s_sdtype s_sorttype=pc_data.s_sorttype s_sub_gno=pc_data.s_sub_gno s_timing=pc_data.s_timing s_tsujigiri_disp=pc_data.s_tsujigiri_disp s_tune=pc_data.s_tune sach=pc_data.sach sp_opt=pc_data.sp_opt spnum=pc_data.spnum ngrade=pc_data.ngrade) + lightning_play_data(dpnum=lightning_playdata.dp_num spnum=lightning_playdata.sp_num) + lightning_setting(headphone_vol=lightning_settings.headphone_vol resistance_dp_left=lightning_settings.resistance_dp_left resistance_dp_right=lightning_settings.resistance_dp_right resistance_sp_left=lightning_settings.resistance_sp_left resistance_sp_right=lightning_settings.resistance_sp_right skin_0=settings.premium_skin flg_skin_0=lightning_settings.skin) + slider(__type="s32" __count="7") #{lightning_settings.vefx[0]} #{lightning_settings.vefx[1]} #{lightning_settings.vefx[2]} #{lightning_settings.vefx[3]} #{lightning_settings.vefx[4]} #{lightning_settings.vefx[5]} #{lightning_settings.vefx[6]} + light(__type="bool" __count="6") #{lightning_settings.light[0]} #{lightning_settings.light[1]} #{lightning_settings.light[2]} #{lightning_settings.light[3]} #{lightning_settings.light[4]} #{lightning_settings.light[5]} + concentration(__type="bool") #{lightning_settings.concentration} + spdp_rival(flg="0") + bind_eaappli + ea_premium_course + enable_qr_reward + kac_entry_info + enable_kac_deller + disp_kac_mark + is_kac_entry + is_kac_evnet_entry + kac_secret_music + secret + flg1(__type="s64" __count="3") -1 -1 -1 + flg2(__type="s64" __count="3") -1 -1 -1 + flg3(__type="s64" __count="3") -1 -1 -1 + flg4(__type="s64" __count="3") -1 -1 -1 + leggendaria + flg1(__type="s64" __count="3") -1 -1 -1 + playlist(encrypt_playlist="0" index="0" play_style="0") + music_memo + - for (let m of mArray) + music(index=m.music_idx play_style=m.play_style music_id=m.music_id) + grade(sgid=pc_data.sgid dgid=pc_data.dgid) + - for (let d of dArray) + g(__type="u8" __count="4") #{d[0]} #{d[1]} #{d[2]} #{d[3]} + eisei_grade_data + - for (let ed of eArray) + detail(grade_type=ed.grade_type grade_id=ed.grade_id stage_num=ed.stage_num clear_type=ed.clear_type) + past(__type="s32" __count="5") #{ed.past[0]} #{ed.past[1]} #{ed.past[2]} #{ed.past[3]} #{ed.past[4]} + selected_course(__type="s32" __count="5") #{ed.selected_course[0]} #{ed.selected_course[1]} #{ed.selected_course[2]} #{ed.selected_course[3]} #{ed.selected_course[4]} + max_past(__type="s32" __count="5") #{ed.max_past[0]} #{ed.max_past[1]} #{ed.max_past[2]} #{ed.max_past[3]} #{ed.max_past[4]} + max_selected_course(__type="s32" __count="5") #{ed.max_selected_course[0]} #{ed.max_selected_course[1]} #{ed.max_selected_course[2]} #{ed.max_selected_course[3]} #{ed.max_selected_course[4]} + skin(__type="s16" __count="20") #{settings.frame} #{settings.turntable} #{settings.note_burst} #{settings.menu_music} #{appendsetting} #{settings.lane_cover} #{settings.judge_pos} #{settings.category_vox} #{settings.note_skin} #{settings.full_combo_splash} #{settings.note_beam} #{settings.judge_font} 0 #{settings.disable_musicpreview} #{settings.pacemaker_cover} #{settings.vefx_lock} #{settings.effect} #{settings.bomb_size} #{settings.disable_hcn_color} #{settings.first_note_preview} + qprodata(__type="u32" __count="5") #{settings.qpro_head} #{settings.qpro_hair} #{settings.qpro_face} #{settings.qpro_hand} #{settings.qpro_body} + rlist + - for (let rd of rArray) + rival(spdp=rd.play_style id=rd.profile[2] id_str=rd.profile[3] djname=rd.profile[0] pid=rd.profile[1] sg=rd.pc_data[0] dg=rd.pc_data[1] sa=rd.pc_data[2] da=rd.pc_data[3]) + is_robo(__type="bool") rd.is_robo + qprodata(body=rd.qprodata[3] face=rd.qprodata[2] hair=rd.qprodata[0] hand=rd.qprodata[4] head=rd.qprodata[1]) + shop(name=shop_data.shop_name) + follow_data + ir_data + secret_course_data + classic_course_data + dj_rank(style="0") + rank(__type="s32" __count="15") #{pc_data.sprank[0]} #{pc_data.sprank[1]} #{pc_data.sprank[2]} #{pc_data.sprank[3]} #{pc_data.sprank[4]} #{pc_data.sprank[5]} #{pc_data.sprank[6]} #{pc_data.sprank[7]} #{pc_data.sprank[8]} #{pc_data.sprank[9]} #{pc_data.sprank[10]} #{pc_data.sprank[11]} #{pc_data.sprank[12]} #{pc_data.sprank[13]} #{pc_data.sprank[14]} + point(__type="s32" __count="15") #{pc_data.sppoint[0]} #{pc_data.sppoint[1]} #{pc_data.sppoint[2]} #{pc_data.sppoint[3]} #{pc_data.sppoint[4]} #{pc_data.sppoint[5]} #{pc_data.sppoint[6]} #{pc_data.sppoint[7]} #{pc_data.sppoint[8]} #{pc_data.sppoint[9]} #{pc_data.sppoint[10]} #{pc_data.sppoint[11]} #{pc_data.sppoint[12]} #{pc_data.sppoint[13]} #{pc_data.sppoint[14]} + dj_rank(style="1") + rank(__type="s32" __count="15") #{pc_data.dprank[0]} #{pc_data.dprank[1]} #{pc_data.dprank[2]} #{pc_data.dprank[3]} #{pc_data.dprank[4]} #{pc_data.dprank[5]} #{pc_data.dprank[6]} #{pc_data.dprank[7]} #{pc_data.dprank[8]} #{pc_data.dprank[9]} #{pc_data.dprank[10]} #{pc_data.dprank[11]} #{pc_data.dprank[12]} #{pc_data.dprank[13]} #{pc_data.dprank[14]} + point(__type="s32" __count="15") #{pc_data.dppoint[0]} #{pc_data.dppoint[1]} #{pc_data.dppoint[2]} #{pc_data.dppoint[3]} #{pc_data.dppoint[4]} #{pc_data.dppoint[5]} #{pc_data.dppoint[6]} #{pc_data.dppoint[7]} #{pc_data.dppoint[8]} #{pc_data.dppoint[9]} #{pc_data.dppoint[10]} #{pc_data.dppoint[11]} #{pc_data.dppoint[12]} #{pc_data.dppoint[13]} #{pc_data.dppoint[14]} + notes_radar(style="0") + radar_score(__type="s32" __count="6") #{pc_data.spradar[0]} #{pc_data.spradar[1]} #{pc_data.spradar[2]} #{pc_data.spradar[3]} #{pc_data.spradar[4]} #{pc_data.spradar[5]} + notes_radar(style="1") + radar_score(__type="s32" __count="6") #{pc_data.dpradar[0]} #{pc_data.dpradar[1]} #{pc_data.dpradar[2]} #{pc_data.dpradar[3]} #{pc_data.dpradar[4]} #{pc_data.dpradar[5]} + tonjyutsu(black_pass="-1" platinum_pass="-1") + weekly(mid="-1" wid="1") + join_shop(join_cflg="1" join_id="ea" join_name=shop_data.shop_name joinflg="1") + visitor(anum="0" pnum="0" snum="0" vs_flg="0") + step(dp_clear_mission_clear=pc_data.dp_clear_mission_clear dp_clear_mission_level=pc_data.dp_clear_mission_level dp_dj_mission_clear=pc_data.dp_dj_mission_clear dp_dj_mission_level=pc_data.dp_dj_mission_level dp_level=pc_data.dp_level dp_mission_point=pc_data.dp_mission_point dp_mplay=pc_data.dp_mplay enemy_damage=pc_data.enemy_damage progress=pc_data.progress sp_clear_mission_clear=pc_data.sp_clear_mission_clear sp_clear_mission_level=pc_data.sp_clear_mission_level sp_dj_mission_clear=pc_data.sp_dj_mission_clear sp_dj_mission_level=pc_data.sp_dj_mission_level sp_level=pc_data.sp_level sp_mission_point=pc_data.sp_mission_point sp_mplay=pc_data.sp_mplay tips_read_list=pc_data.tips_read_list) + is_track_ticket(__type="bool") 1 + packinfo(music_0="-1" music_1="-1" music_2="-1" pack_id="1") + achievements(last_weekly="0" pack="0" pack_comp="0" rival_crush="0" visit_flg="0" weekly_num="0") + trophy(__type="s64" __count="20") #{pc_data.trophy[0]} #{pc_data.trophy[1]} #{pc_data.trophy[2]} #{pc_data.trophy[3]} #{pc_data.trophy[4]} #{pc_data.trophy[5]} #{pc_data.trophy[6]} #{pc_data.trophy[7]} #{pc_data.trophy[8]} #{pc_data.trophy[9]} + deller(deller=pc_data.deller rate="0") + orb_data(present_orb="100" rest_orb="100") + expert_point + old_linkage_secret_flg(floor_infection4="0" bemani_janken="0" ichika_rush="0" nono_rush="0") + konami_stytle(skip_flg="0") + arena_data(play_num="6" play_num_dp="3" play_num_sp="3" prev_best_class_dp="18" prev_best_class_sp="18") + achieve_data(arena_class="-1" best_top_class_continuing="0" counterattack_num="0" now_top_class_continuing="0" play_style="0" rating_value="90") + achieve_data(arena_class="-1" best_top_class_continuing="0" counterattack_num="0" now_top_class_continuing="0" play_style="1" rating_value="90") + cube_data(cube="200" season_id="0") + skin_customize_flg(skin_frame_flg=settings.skin_frame_flg skin_bgm_flg=settings.skin_bgm_flg) + event_1(event_play_num=pc_data.event_play_num story_prog=pc_data.event_story_prog last_select_area_id=pc_data.event_last_select_area_id failed_num=pc_data.event_failed_num) + - for (let evt of evtArray) + area_data(area_id=evt.area_id play_num=evt.play_num recipe_prog0=evt.recipe_prog0 recipe_prog1=evt.recipe_prog1 recipe_prog2=evt.recipe_prog2 recipe_prog3=evt.recipe_prog3 recipe_prog4=evt.recipe_prog4 operation_num=evt.operation_num operation_prog=evt.operation_prog last_select_recipe=evt.last_select_recipe area_prog=evt.area_prog) + is_complete(__type="bool") #{evt.is_complete} + floor_infection4(music_list="-1") + bemani_vote(music_list="-1") + bemani_janken_meeting(music_list="-1") + bemani_rush(music_list_ichika="-1" music_list_nono="-1") + ultimate_mobile_link(music_list="-1") + link_flag + bemani_musiq_fes(music_list="-1") + busou_linkage(music_list="-1") + busou_linkage_2(music_list="-1") + valkyrie_linkage_data(progress="-1") + bemani_song_battle(music_list="-1") + language_setting(language=profile.language) + movie_agreement(agreement_version="1") + world_tourism + - for (let wd of wArray) + tour_data(tour_id=wd.tour_id progress=wd.progress) + world_tourism_secret(music_list="-1") diff --git a/pug/28pccommon.pug b/pug/28pccommon.pug index 197aa09..eaa0013 100644 --- a/pug/28pccommon.pug +++ b/pug/28pccommon.pug @@ -1,42 +1,46 @@ -IIDX28pc(status="0") - monthly_mranking(__type="u16" __count="1") 65535 - total_mranking(__type="u16" __count="1") 65535 - internet_ranking - secret_ex_course - kac_mid(__type="s32" __count="1") 65535 - kac_clid(__type="s32" __count="1") 0 - ir(beat="3") - cm(compo="cm_ultimate" folder="cm_ultimate" id="0") - tdj_cm - cm(filename="cm_bn_001" id="0") - cm(filename="cm_bn_002" id="1") - cm(filename="event_bn_001" id="2") - cm(filename="event_bn_004" id="3") - cm(filename="event_bn_006" id="4") - cm(filename="fipb_001" id="5") - cm(filename="year_bn_004" id="6") - cm(filename="year_bn_005" id="7") - cm(filename="year_bn_006_2" id="8") - cm(filename="year_bn_007" id="9") - license - string(__type="str") Asphyxia - file_recovery(url="https://example.com") - button_release_frame( frame="0") - escape_package_info - list(apply_file_name="XXX" apply_release_code="XXX") - expert(phase="1") - expert_random_secret(phase="2") - boss(phase="0") - vip_pass_black - deller_bonus(open="1") - newsong_another(open="1") - pcb_check(flg="0") - expert_secret_full_open - eaorder_phase(phase="2") - common_evnet(flg="65535") - system_voice_phase(phase="0") - extra_boss_event(phase="0") - event1_phase(phase="0") - premium_area_news(open="1") - premium_area_qpro(open="1") - ignore_button_mashing +IIDX28pc(status="0" expire="600") + monthly_mranking(__type="u16" __count="20") -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 + total_mranking(__type="u16" __count="20") -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 + internet_ranking + secret_ex_course + kac_mid(__type="s32" __count="5") -1 -1 -1 -1 -1 + kac_clid(__type="s32" __count="5") -1 -1 -1 -1 -1 + ir(beat=beat) + cm(id="0" folder="cm_ultimate" compo="cm_ultimate") + tdj_cm + cm(id="0" filename="cm_bn_001") + cm(id="1" filename="cm_bn_002") + cm(id="2" filename="event_bn_001") + cm(id="3" filename="event_bn_004") + cm(id="4" filename="event_bn_006") + cm(id="5" filename="fipb_001") + cm(id="6" filename="year_bn_004") + cm(id="7" filename="year_bn_005") + cm(id="8" filename="year_bn_006_2") + cm(id="9" filename="year_bn_007") + movie_agreement(version="1") + license + string(__type="str") Asphyxia + movie_upload(url=movie_upload) + button_release_frame(frame="0") + escape_package_info + expert(phase=expert) + expert_random_secret(phase=expert_secret) + boss(phase=boss) + vip_pass_black + eisei(open="1") + deller_bonus(open="1") + newsong_another(open="1") + pcb_check(flg="0") + expert_secret_full_open + eaorder_phase(phase="2") + common_evnet(flg="-1") + system_voice_phase(phase=system_voice) + extra_boss_event(phase=extra_boss) + event1_phase(phase=event_1) + premium_area_news(open="1") + premium_area_qpro(open="1") + play_video + world_tourism(open_list="1") + bpl_battle(phase="1") + display_asio_logo diff --git a/pug/28systeminfo.pug b/pug/28systeminfo.pug new file mode 100644 index 0000000..c89700f --- /dev/null +++ b/pug/28systeminfo.pug @@ -0,0 +1,67 @@ +IIDX28gameSystem(status="0") + arena_schedule + phase(__type="u8") 2 + start(__type="u32") 1605784800 + end(__type="u32") 4102326000 + arena_music_difficult + play_style(__type="s32") 0 + arena_class(__type="s32") -1 + low_difficult(__type="s32") 1 + high_difficult(__type="s32") 12 + is_leggendaria(__type="bool") 1 + force_music_list_id(__type="s32") 0 + arena_music_difficult + play_style(__type="s32") 1 + arena_class(__type="s32") -1 + low_difficult(__type="s32") 1 + high_difficult(__type="s32") 12 + is_leggendaria(__type="bool") 1 + force_music_list_id(__type="s32") 0 + arena_cpu_define + play_style(__type="s32") 0 + arena_class(__type="s32") -1 + grade_id(__type="s32") 18 + low_music_difficult(__type="s32") 8 + high_music_difficult(__type="s32") 12 + is_leggendaria(__type="bool") 0 + arena_cpu_define + play_style(__type="s32") 1 + arena_class(__type="s32") -1 + grade_id(__type="s32") 18 + low_music_difficult(__type="s32") 8 + high_music_difficult(__type="s32") 12 + is_leggendaria(__type="bool") 0 + maching_class_range + play_style(__type="s32") 0 + matching_class(__type="s32") 2 + low_arena_class(__type="s32") 0 + high_arena_class(__type="s32") 19 + maching_class_range + play_style(__type="s32") 0 + matching_class(__type="s32") 1 + low_arena_class(__type="s32") 0 + high_arena_class(__type="s32") 19 + maching_class_range + play_style(__type="s32") 1 + matching_class(__type="s32") 2 + low_arena_class(__type="s32") 0 + high_arena_class(__type="s32") 19 + maching_class_range + play_style(__type="s32") 1 + matching_class(__type="s32") 1 + low_arena_class(__type="s32") 0 + high_arena_class(__type="s32") 19 + arena_force_music + play_style(__type="s32") 0 + force_music_list_id(__type="s32") 0 + index(__type="s32") 0 + music_id(__type="s32") 1000 + note_grade(__type="s32") 0 + is_active(__type="bool") 0 + arena_force_music + play_style(__type="s32") 1 + force_music_list_id(__type="s32") 0 + index(__type="s32") 0 + music_id(__type="s32") 1000 + note_grade(__type="s32") 0 + is_active(__type="bool") 1 diff --git a/pug/29get.pug b/pug/29get.pug index 32f091f..1b31418 100644 --- a/pug/29get.pug +++ b/pug/29get.pug @@ -1,58 +1,101 @@ -IIDX29pc(status="0") - pcdata(d_auto_scrach=pc_data.d_auto_scrach d_camera_layout=pc_data.d_camera_layout d_disp_judge=pc_data.d_disp_judge d_gauge_disp=pc_data.d_gauge_disp d_ghost_score=pc_data.d_ghost_score d_gno=pc_data.d_gno d_graph_score=pc_data.d_graph_score d_gtype=pc_data.d_gtype d_hispeed=pc_data.d_hispeed d_judge=pc_data.d_judge d_judgeAdj=pc_data.d_judgeAdj d_lane_brignt=pc_data.d_lane_brignt d_liflen=pc_data.d_liflen d_notes=pc_data.d_notes d_opstyle=pc_data.d_opstyle d_pace=pc_data.d_pace d_sdlen=pc_data.d_sdlen d_sdtype=pc_data.d_sdtype d_sorttype=pc_data.d_sorttype d_sub_gno=pc_data.d_sub_gno d_timing=pc_data.d_timing d_tsujigiri_disp=pc_data.d_tsujigiri_disp d_tune=pc_data.d_tune dach=pc_data.dach dp_opt=pc_data.dp_opt dp_opt2=pc_data.dp_opt2 dpnum=0 gpos=pc_data.gpos id=profile.iidxid idstr=profile.iidxidstr mode=pc_data.mode name=profile.name pid=profile.pid pmode=pc_data.pmode rtype=pc_data.rtype s_auto_scrach=pc_data.s_auto_scrach s_camera_layout=pc_data.s_camera_layout s_disp_judge=pc_data.s_disp_judge s_gauge_disp=pc_data.s_gauge_disp s_ghost_score=pc_data.s_ghost_score s_gno=pc_data.s_gno s_graph_score=pc_data.s_graph_score s_gtype=pc_data.s_gtype s_hispeed=pc_data.s_hispeed s_judge=pc_data.s_judge s_judgeAdj=pc_data.s_judgeAdj s_lane_brignt=pc_data.s_lane_brignt s_liflen=pc_data.s_liflen s_notes=pc_data.s_notes s_opstyle=pc_data.s_opstyle s_pace=pc_data.s_pace s_sdlen=pc_data.s_sdlen s_sdtype=pc_data.s_sdtype s_sorttype=pc_data.s_sorttype s_sub_gno=pc_data.s_sub_gno s_timing=pc_data.s_timing s_tsujigiri_disp=pc_data.s_tsujigiri_disp s_tune=pc_data.s_tune sach=pc_data.sach sp_opt=pc_data.sp_opt spnum=pc_data.spnum ngrade=pc_data.ngrade s_auto_adjust=pc_data.s_auto_adjust d_auto_adjust=pc_data.d_auto_adjust) - join_shop(join_cflg="1" join_id="ea" join_name=shop_data.shop_name joinflg="1") - grade(sgid=pc_data.sgid dgid=pc_data.dgid) - - for (let d of dArray) - g(__type="u8" __count="4") #{d[0]} #{d[1]} #{d[2]} #{d[3]} - deller(deller=pc_data.deller rate="0") - rlist - ir_data - secret_course_data - secret - flg1(__type="s64" __count="3") 0 0 0 - flg2(__type="s64" __count="3") 0 0 0 - flg3(__type="s64" __count="3") 0 0 0 - flg4(__type="s64" __count="3") 0 0 0 - achievements(last_weekly="0" pack="0" pack_comp="0" rival_crush="0" visit_flg="0" weekly_num="0") - trophy(__type="s64" __count="20") #{pc_data.trophy[0]} #{pc_data.trophy[1]} #{pc_data.trophy[2]} #{pc_data.trophy[3]} #{pc_data.trophy[4]} #{pc_data.trophy[5]} #{pc_data.trophy[6]} #{pc_data.trophy[7]} #{pc_data.trophy[8]} #{pc_data.trophy[9]} - expert_point - classic_course_data - qprodata(__type="u32" __count="5") #{settings.qpro_head} #{settings.qpro_hair} #{settings.qpro_face} #{settings.qpro_hand} #{settings.qpro_body} - step(dp_clear_mission_clear=pc_data.dp_clear_mission_clear dp_clear_mission_level=pc_data.dp_clear_mission_level dp_dj_mission_clear=pc_data.dp_dj_mission_clear dp_dj_mission_level=pc_data.dp_dj_mission_level dp_level=pc_data.dp_level dp_mission_point=pc_data.dp_mission_point dp_mplay=pc_data.dp_mplay enemy_damage=pc_data.enemy_damage progress=pc_data.progress sp_clear_mission_clear=pc_data.sp_clear_mission_clear sp_clear_mission_level=pc_data.sp_clear_mission_level sp_dj_mission_clear=pc_data.sp_dj_mission_clear sp_dj_mission_level=pc_data.sp_dj_mission_level sp_level=pc_data.sp_level sp_mission_point=pc_data.sp_mission_point sp_mplay=pc_data.sp_mplay tips_read_list=pc_data.tips_read_list total_point=pc_data.total_point enemy_defeat_flg=pc_data.enemy_defeat_flg mission_clear_num=pc_data.mission_clear_num) - is_track_ticket(__type="bool") 1 - dj_rank(style="0") - rank(__type="s32" __count="15") #{pc_data.sprank[0]} #{pc_data.sprank[1]} #{pc_data.sprank[2]} #{pc_data.sprank[3]} #{pc_data.sprank[4]} #{pc_data.sprank[5]} #{pc_data.sprank[6]} #{pc_data.sprank[7]} #{pc_data.sprank[8]} #{pc_data.sprank[9]} #{pc_data.sprank[10]} #{pc_data.sprank[11]} #{pc_data.sprank[12]} #{pc_data.sprank[13]} #{pc_data.sprank[14]} - point(__type="s32" __count="15") #{pc_data.sppoint[0]} #{pc_data.sppoint[1]} #{pc_data.sppoint[2]} #{pc_data.sppoint[3]} #{pc_data.sppoint[4]} #{pc_data.sppoint[5]} #{pc_data.sppoint[6]} #{pc_data.sppoint[7]} #{pc_data.sppoint[8]} #{pc_data.sppoint[9]} #{pc_data.sppoint[10]} #{pc_data.sppoint[11]} #{pc_data.sppoint[12]} #{pc_data.sppoint[13]} #{pc_data.sppoint[14]} - dj_rank(style="1") - rank(__type="s32" __count="15") #{pc_data.dprank[0]} #{pc_data.dprank[1]} #{pc_data.dprank[2]} #{pc_data.dprank[3]} #{pc_data.dprank[4]} #{pc_data.dprank[5]} #{pc_data.dprank[6]} #{pc_data.dprank[7]} #{pc_data.dprank[8]} #{pc_data.dprank[9]} #{pc_data.dprank[10]} #{pc_data.dprank[11]} #{pc_data.dprank[12]} #{pc_data.dprank[13]} #{pc_data.dprank[14]} - point(__type="s32" __count="15") #{pc_data.dppoint[0]} #{pc_data.dppoint[1]} #{pc_data.dppoint[2]} #{pc_data.dppoint[3]} #{pc_data.dppoint[4]} #{pc_data.dppoint[5]} #{pc_data.dppoint[6]} #{pc_data.dppoint[7]} #{pc_data.dppoint[8]} #{pc_data.dppoint[9]} #{pc_data.dppoint[10]} #{pc_data.dppoint[11]} #{pc_data.dppoint[12]} #{pc_data.dppoint[13]} #{pc_data.dppoint[14]} - notes_radar(style="0") - radar_score(__type="s32" __count="6") #{pc_data.spradar[0]} #{pc_data.spradar[1]} #{pc_data.spradar[2]} #{pc_data.spradar[3]} #{pc_data.spradar[4]} #{pc_data.spradar[5]} - notes_radar(style="1") - radar_score(__type="s32" __count="6") #{pc_data.dpradar[0]} #{pc_data.dpradar[1]} #{pc_data.dpradar[2]} #{pc_data.dpradar[3]} #{pc_data.dpradar[4]} #{pc_data.dpradar[5]} - //-arena_data(play_num="0" play_num_dp="1" play_num_sp="1") - //- achieve_data(arena_class="19" best_top_class_continuing="0" now_top_class_continuing="0" play_style="0" rating_value="0") - //- achieve_data(arena_class="19" best_top_class_continuing="0" now_top_class_continuing="0" play_style="1" rating_value="0") - //- cube_data(cube="0" season_id="0") - ea_premium_course - bind_eaappli - leggendaria_open - pay_per_use(item_num="99") - playlist(encrypt_playlist="0" index="0" play_style="0") - spdp_rival(flg="0") - enable_qr_reward - visitor(anum="0" pnum="0" snum="0" vs_flg="0") - konami_stytle(skip_flg="0") - arena_penalty - defeat(defeat_flg="0") - bemani_vote(music_list="-1") - floor_infection3(music_list="-1") - language_setting(language="-1") - leggendaria_semi_open(flg="0") - kac_entry_info - enable_kac_deller - disp_kac_mark - is_kac_entry - is_kac_evnet_entry - kac_secret_music - skin(__type="s16" __count="20") #{settings.frame} #{settings.turntable} #{settings.note_burst} #{settings.menu_music} #{appendsetting} #{settings.lane_cover} 0 0 #{settings.note_skin} #{settings.full_combo_splash} #{settings.note_beam} #{settings.judge_font} 0 #{settings.disable_musicpreview} #{settings.pacemaker_cover} #{settings.vefx_lock} #{settings.effect} #{settings.bomb_size} #{settings.disable_hcn_color} #{settings.first_note_preview} +IIDX29pc(status="0") + pcdata(d_auto_scrach=pc_data.d_auto_scrach d_camera_layout=pc_data.d_camera_layout d_disp_judge=pc_data.d_disp_judge d_exscore=pc_data.d_exscore d_gauge_disp=pc_data.d_gauge_disp d_ghost_score=pc_data.d_ghost_score d_gno=pc_data.d_gno d_graph_score=pc_data.d_graph_score d_gtype=pc_data.d_gtype d_hispeed=pc_data.d_hispeed d_judge=pc_data.d_judge d_judgeAdj=pc_data.d_judgeAdj d_lane_brignt=pc_data.d_lane_brignt d_liflen=pc_data.d_liflen d_notes=pc_data.d_notes d_opstyle=pc_data.d_opstyle d_pace=pc_data.d_pace d_sdlen=pc_data.d_sdlen d_sdtype=pc_data.d_sdtype d_sorttype=pc_data.d_sorttype d_sub_gno=pc_data.d_sub_gno d_timing=pc_data.d_timing d_tsujigiri_disp=pc_data.d_tsujigiri_disp d_tune=pc_data.d_tune dach=pc_data.dach dp_opt=pc_data.dp_opt dp_opt2=pc_data.dp_opt2 dpnum=0 gpos=pc_data.gpos id=profile.iidxid idstr=profile.iidxidstr mode=pc_data.mode name=profile.name pid=profile.pid pmode=pc_data.pmode rtype=pc_data.rtype s_auto_scrach=pc_data.s_auto_scrach s_camera_layout=pc_data.s_camera_layout s_disp_judge=pc_data.s_disp_judge s_exscore=pc_data.s_exscore s_gauge_disp=pc_data.s_gauge_disp s_ghost_score=pc_data.s_ghost_score s_gno=pc_data.s_gno s_graph_score=pc_data.s_graph_score s_gtype=pc_data.s_gtype s_hispeed=pc_data.s_hispeed s_judge=pc_data.s_judge s_judgeAdj=pc_data.s_judgeAdj s_lane_brignt=pc_data.s_lane_brignt s_liflen=pc_data.s_liflen s_notes=pc_data.s_notes s_opstyle=pc_data.s_opstyle s_pace=pc_data.s_pace s_sdlen=pc_data.s_sdlen s_sdtype=pc_data.s_sdtype s_sorttype=pc_data.s_sorttype s_sub_gno=pc_data.s_sub_gno s_timing=pc_data.s_timing s_tsujigiri_disp=pc_data.s_tsujigiri_disp s_tune=pc_data.s_tune sach=pc_data.sach sp_opt=pc_data.sp_opt spnum=pc_data.spnum ngrade=pc_data.ngrade s_auto_adjust=pc_data.s_auto_adjust d_auto_adjust=pc_data.d_auto_adjust) + lightning_play_data(dpnum=lightning_playdata.dp_num spnum=lightning_playdata.sp_num) + lightning_setting(headphone_vol=lightning_settings.headphone_vol resistance_dp_left=lightning_settings.resistance_dp_left resistance_dp_right=lightning_settings.resistance_dp_right resistance_sp_left=lightning_settings.resistance_sp_left resistance_sp_right=lightning_settings.resistance_sp_right skin_0=settings.premium_skin flg_skin_0=lightning_settings.skin) + slider(__type="s32" __count="7") #{lightning_settings.vefx[0]} #{lightning_settings.vefx[1]} #{lightning_settings.vefx[2]} #{lightning_settings.vefx[3]} #{lightning_settings.vefx[4]} #{lightning_settings.vefx[5]} #{lightning_settings.vefx[6]} + light(__type="bool" __count="10") #{lightning_settings.light[0]} #{lightning_settings.light[1]} #{lightning_settings.light[2]} #{lightning_settings.light[3]} #{lightning_settings.light[4]} #{lightning_settings.light[5]} #{lightning_settings.light[6]} #{lightning_settings.light[7]} #{lightning_settings.light[8]} #{lightning_settings.light[9]} + concentration(__type="bool") #{lightning_settings.concentration} + spdp_rival(flg="0") + bind_eaappli + ea_premium_course + enable_qr_reward + secret + flg1(__type="s64" __count="3") -1 -1 -1 + flg2(__type="s64" __count="3") -1 -1 -1 + flg3(__type="s64" __count="3") -1 -1 -1 + flg4(__type="s64" __count="3") -1 -1 -1 + leggendaria + flg1(__type="s64" __count="3") -1 -1 -1 + playlist(encrypt_playlist="0" index="0" play_style="0") + music_memo + - for (let m of mArray) + music(index=m.music_idx play_style=m.play_style music_id=m.music_id) + grade(sgid=pc_data.sgid dgid=pc_data.dgid) + - for (let d of dArray) + g(__type="u8" __count="4") #{d[0]} #{d[1]} #{d[2]} #{d[3]} + eisei_grade_data + - for (let ed of eArray) + detail(grade_type=ed.grade_type grade_id=ed.grade_id stage_num=ed.stage_num clear_type=ed.clear_type) + past(__type="s32" __count="3") #{ed.past[0]} #{ed.past[1]} #{ed.past[2]} + selected_course(__type="s32" __count="3") #{ed.selected_course[0]} #{ed.selected_course[1]} #{ed.selected_course[2]} + max_past(__type="s32" __count="3") #{ed.max_past[0]} #{ed.max_past[1]} #{ed.max_past[2]} + max_selected_course(__type="s32" __count="3") #{ed.max_selected_course[0]} #{ed.max_selected_course[1]} #{ed.max_selected_course[2]} + skin(__type="s16" __count="20") #{settings.frame} #{settings.turntable} #{settings.note_burst} #{settings.menu_music} #{appendsetting} #{settings.lane_cover} #{settings.judge_pos} #{settings.category_vox} #{settings.note_skin} #{settings.full_combo_splash} #{settings.note_beam} #{settings.judge_font} 0 #{settings.disable_musicpreview} #{settings.pacemaker_cover} #{settings.vefx_lock} #{settings.effect} #{settings.bomb_size} #{settings.disable_hcn_color} #{settings.first_note_preview} + qprodata(__type="u32" __count="5") #{settings.qpro_head} #{settings.qpro_hair} #{settings.qpro_face} #{settings.qpro_hand} #{settings.qpro_body} + rlist + - for (let rd of rArray) + rival(spdp=rd.play_style id=rd.profile[2] id_str=rd.profile[3] djname=rd.profile[0] pid=rd.profile[1] sg=rd.pc_data[0] dg=rd.pc_data[1] sa=rd.pc_data[2] da=rd.pc_data[3]) + is_robo(__type="bool") rd.is_robo + qprodata(body=rd.qprodata[3] face=rd.qprodata[2] hair=rd.qprodata[0] hand=rd.qprodata[4] head=rd.qprodata[1]) + shop(name=shop_data.shop_name) + follow_data + ir_data + secret_course_data + classic_course_data + dj_rank(style="0") + rank(__type="s32" __count="15") #{pc_data.sprank[0]} #{pc_data.sprank[1]} #{pc_data.sprank[2]} #{pc_data.sprank[3]} #{pc_data.sprank[4]} #{pc_data.sprank[5]} #{pc_data.sprank[6]} #{pc_data.sprank[7]} #{pc_data.sprank[8]} #{pc_data.sprank[9]} #{pc_data.sprank[10]} #{pc_data.sprank[11]} #{pc_data.sprank[12]} #{pc_data.sprank[13]} #{pc_data.sprank[14]} + point(__type="s32" __count="15") #{pc_data.sppoint[0]} #{pc_data.sppoint[1]} #{pc_data.sppoint[2]} #{pc_data.sppoint[3]} #{pc_data.sppoint[4]} #{pc_data.sppoint[5]} #{pc_data.sppoint[6]} #{pc_data.sppoint[7]} #{pc_data.sppoint[8]} #{pc_data.sppoint[9]} #{pc_data.sppoint[10]} #{pc_data.sppoint[11]} #{pc_data.sppoint[12]} #{pc_data.sppoint[13]} #{pc_data.sppoint[14]} + dj_rank(style="1") + rank(__type="s32" __count="15") #{pc_data.dprank[0]} #{pc_data.dprank[1]} #{pc_data.dprank[2]} #{pc_data.dprank[3]} #{pc_data.dprank[4]} #{pc_data.dprank[5]} #{pc_data.dprank[6]} #{pc_data.dprank[7]} #{pc_data.dprank[8]} #{pc_data.dprank[9]} #{pc_data.dprank[10]} #{pc_data.dprank[11]} #{pc_data.dprank[12]} #{pc_data.dprank[13]} #{pc_data.dprank[14]} + point(__type="s32" __count="15") #{pc_data.dppoint[0]} #{pc_data.dppoint[1]} #{pc_data.dppoint[2]} #{pc_data.dppoint[3]} #{pc_data.dppoint[4]} #{pc_data.dppoint[5]} #{pc_data.dppoint[6]} #{pc_data.dppoint[7]} #{pc_data.dppoint[8]} #{pc_data.dppoint[9]} #{pc_data.dppoint[10]} #{pc_data.dppoint[11]} #{pc_data.dppoint[12]} #{pc_data.dppoint[13]} #{pc_data.dppoint[14]} + notes_radar(style="0") + radar_score(__type="s32" __count="6") #{pc_data.spradar[0]} #{pc_data.spradar[1]} #{pc_data.spradar[2]} #{pc_data.spradar[3]} #{pc_data.spradar[4]} #{pc_data.spradar[5]} + notes_radar(style="1") + radar_score(__type="s32" __count="6") #{pc_data.dpradar[0]} #{pc_data.dpradar[1]} #{pc_data.dpradar[2]} #{pc_data.dpradar[3]} #{pc_data.dpradar[4]} #{pc_data.dpradar[5]} + tonjyutsu(black_pass="-1" platinum_pass="-1") + weekly(mid="-1" wid="1") + join_shop(join_cflg="1" join_id="ea" join_name=shop_data.shop_name joinflg="1") + visitor(anum="1" pnum="2" snum="1" vs_flg="1") + step(dp_level=pc_data.dp_level dp_mplay=pc_data.dp_mplay enemy_damage=pc_data.enemy_damage enemy_defeat_flg=pc_data.enemy_defeat_flg mission_clear_num=pc_data.mission_clear_num progress=pc_data.progress sp_level=pc_data.sp_level sp_mplay=pc_data.sp_mplay tips_read_list=pc_data.tips_read_list total_point=pc_data.total_point) + is_track_ticket(__type="bool") 1 + packinfo(music_0="-1" music_1="-1" music_2="-1" pack_id="1") + achievements(last_weekly="0" pack="0" pack_comp="0" rival_crush="0" visit_flg="0" weekly_num="0") + trophy(__type="s64" __count="20") #{pc_data.trophy[0]} #{pc_data.trophy[1]} #{pc_data.trophy[2]} #{pc_data.trophy[3]} #{pc_data.trophy[4]} #{pc_data.trophy[5]} #{pc_data.trophy[6]} #{pc_data.trophy[7]} #{pc_data.trophy[8]} #{pc_data.trophy[9]} + deller(deller=pc_data.deller rate="0") + orb_data(present_orb="100" rest_orb="100") + expert_point + old_linkage_secret_flg(floor_infection4="-1" bemani_janken="-1" ichika_rush="-1" nono_rush="-1" song_battle="-1") + konami_stytle(skip_flg="0") + arena_data(play_num="6" play_num_dp="3" play_num_sp="3" prev_best_class_dp="18" prev_best_class_sp="18") + achieve_data(arena_class="-1" best_top_class_continuing="0" counterattack_num="0" now_top_class_continuing="0" play_style="0" rating_value="90") + achieve_data(arena_class="-1" best_top_class_continuing="0" counterattack_num="0" now_top_class_continuing="0" play_style="1" rating_value="90") + cube_data(cube="200" season_id="0") + skin_customize_flg(skin_bgm_flg=settings.skin_bgm_flg skin_frame_flg=settings.skin_frame_flg skin_lane_flg3=settings.skin_lane_flg) + event_1(event_play_num=pc_data.event_play_num last_select_platform_type=pc_data.event_last_platform_type last_select_platform_id=pc_data.event_last_platform_id) + - for (let evt of evtArray) + plat_watch_data(platform_id=evt.platform_id play_num=evt.play_num last_select_channel=evt.last_select_channel platform_prog=evt.platform_prog) + - for (let evt2 of evtArray2) + ch_watch_data(platform_id=evt2.platform_id channel_id=evt2.channel_id play_num=evt2.channel_play_num gauge=evt2.gauge) + is_complete(__type="bool") #{evt2.is_complete} + floor_infection4(music_list="-1") + bemani_vote(music_list="-1") + bemani_janken_meeting(music_list="-1") + bemani_rush(music_list_ichika="-1" music_list_nono="-1") + ultimate_mobile_link(music_list="-1") + link_flag + bemani_musiq_fes(music_list="-1") + busou_linkage(music_list="-1") + busou_linkage_2(music_list="-1") + valkyrie_linkage_data(progress="-1") + valkyrie_linkage_2_data(progress="-1") + bemani_song_battle(music_list="-1") + language_setting(language=profile.language) + movie_agreement(agreement_version="1") + movie_setting + hide_name(__type="bool") 0 + world_tourism + - for (let wd of wArray) + tour_data(tour_id=wd.tour_id progress=wd.progress) + world_tourism_secret_flg + flg1(__type="s64" __count="3") -1 -1 -1 + flg2(__type="s64" __count="3") -1 -1 -1 diff --git a/pug/29pccommon.pug b/pug/29pccommon.pug index 56dac8f..7de7966 100644 --- a/pug/29pccommon.pug +++ b/pug/29pccommon.pug @@ -1,42 +1,45 @@ -IIDX29pc(status="0") - monthly_mranking(__type="u16" __count="1") 65535 - total_mranking(__type="u16" __count="1") 65535 - internet_ranking - secret_ex_course - kac_mid(__type="s32" __count="1") 65535 - kac_clid(__type="s32" __count="1") 0 - ir(beat="3") - cm(compo="cm_ultimate" folder="cm_ultimate" id="0") - tdj_cm - cm(filename="cm_bn_001" id="0") - cm(filename="cm_bn_002" id="1") - cm(filename="event_bn_001" id="2") - cm(filename="event_bn_004" id="3") - cm(filename="event_bn_006" id="4") - cm(filename="fipb_001" id="5") - cm(filename="year_bn_004" id="6") - cm(filename="year_bn_005" id="7") - cm(filename="year_bn_006_2" id="8") - cm(filename="year_bn_007" id="9") - license - string(__type="str") Asphyxia - file_recovery(url="https://example.com") - button_release_frame( frame="0") - escape_package_info - list(apply_file_name="XXX" apply_release_code="XXX") - expert(phase="1") - expert_random_secret(phase="2") - boss(phase="0") - vip_pass_black - deller_bonus(open="1") - newsong_another(open="1") - pcb_check(flg="0") - expert_secret_full_open - eaorder_phase(phase="2") - common_evnet(flg="65535") - system_voice_phase(phase="0") - extra_boss_event(phase="0") - event1_phase(phase="0") - premium_area_news(open="1") - premium_area_qpro(open="1") - ignore_button_mashing +IIDX29pc(status="0" expire="600") + monthly_mranking(__type="u16" __count="20") -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 + total_mranking(__type="u16" __count="20") -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 + internet_ranking + secret_ex_course + kac_mid(__type="s32" __count="5") -1 -1 -1 -1 -1 + kac_clid(__type="s32" __count="5") -1 -1 -1 -1 -1 + ir(beat=beat) + cm(id="0" folder="cm_ultimate" compo="cm_ultimate") + tdj_cm + cm(id="0" filename="cm_bn_001") + cm(id="1" filename="cm_bn_002") + cm(id="2" filename="event_bn_001") + cm(id="3" filename="event_bn_004") + cm(id="4" filename="event_bn_006") + cm(id="5" filename="fipb_001") + cm(id="6" filename="year_bn_004") + cm(id="7" filename="year_bn_005") + cm(id="8" filename="year_bn_006_2") + cm(id="9" filename="year_bn_007") + movie_agreement(version="1") + license + string(__type="str") Asphyxia + movie_upload(url=movie_upload) + escape_package_info + expert(phase=expert) + expert_random_secret(phase=expert_secret) + boss(phase=boss) + vip_pass_black + eisei(open="1") + deller_bonus(open="1") + newsong_another(open="1") + expert_secret_full_open + eaorder_phase(phase="-1") + common_evnet(flg="-1") + system_voice_phase(phase=system_voice) + extra_boss_event(phase=extra_boss) + event1_phase(phase=event_1) + premium_area_news(open="1") + premium_area_qpro(open="1") + play_video + world_tourism(open_list="1") + bpl_battle(phase="1") + display_asio_logo + lane_gacha diff --git a/pug/29systeminfo.pug b/pug/29systeminfo.pug new file mode 100644 index 0000000..579368a --- /dev/null +++ b/pug/29systeminfo.pug @@ -0,0 +1,75 @@ +IIDX29gameSystem(status="0") + arena_schedule + phase(__type="u8") 2 + start(__type="u32") 1605784800 + end(__type="u32") 4102326000 + arena_music_difficult + play_style(__type="s32") 0 + arena_class(__type="s32") -1 + low_difficult(__type="s32") 1 + high_difficult(__type="s32") 12 + is_leggendaria(__type="bool") 1 + force_music_list_id(__type="s32") 0 + arena_music_difficult + play_style(__type="s32") 1 + arena_class(__type="s32") -1 + low_difficult(__type="s32") 1 + high_difficult(__type="s32") 12 + is_leggendaria(__type="bool") 1 + force_music_list_id(__type="s32") 0 + arena_cpu_define + play_style(__type="s32") 0 + arena_class(__type="s32") -1 + grade_id(__type="s32") 18 + low_music_difficult(__type="s32") 8 + high_music_difficult(__type="s32") 12 + is_leggendaria(__type="bool") 0 + arena_cpu_define + play_style(__type="s32") 1 + arena_class(__type="s32") -1 + grade_id(__type="s32") 18 + low_music_difficult(__type="s32") 8 + high_music_difficult(__type="s32") 12 + is_leggendaria(__type="bool") 0 + maching_class_range + play_style(__type="s32") 0 + matching_class(__type="s32") 2 + low_arena_class(__type="s32") 0 + high_arena_class(__type="s32") 19 + maching_class_range + play_style(__type="s32") 0 + matching_class(__type="s32") 1 + low_arena_class(__type="s32") 0 + high_arena_class(__type="s32") 19 + maching_class_range + play_style(__type="s32") 1 + matching_class(__type="s32") 2 + low_arena_class(__type="s32") 0 + high_arena_class(__type="s32") 19 + maching_class_range + play_style(__type="s32") 1 + matching_class(__type="s32") 1 + low_arena_class(__type="s32") 0 + high_arena_class(__type="s32") 19 + arena_force_music + play_style(__type="s32") 0 + force_music_list_id(__type="s32") 0 + index(__type="s32") 0 + music_id(__type="s32") 1000 + note_grade(__type="s32") 0 + is_active(__type="bool") 0 + arena_force_music + play_style(__type="s32") 1 + force_music_list_id(__type="s32") 0 + index(__type="s32") 0 + music_id(__type="s32") 1000 + note_grade(__type="s32") 0 + is_active(__type="bool") 1 + CommonBossPhase(val=boss) + Event1InternalPhase(val=event_1_internal) + ExtraBossEventPhase(val=extra_boss) + isNewSongAnother12OpenFlg(val="1") + gradeOpenPhase(val="2") + isEiseiOpenFlg(val="1") + WorldTourismOpenList(val="1") + BPLBattleOpenPhase(val="2") diff --git a/pug/30get.pug b/pug/30get.pug new file mode 100644 index 0000000..fc2fdb7 --- /dev/null +++ b/pug/30get.pug @@ -0,0 +1,100 @@ +IIDX30pc(status="0") + pcdata(d_auto_scrach=pc_data.d_auto_scrach d_camera_layout=pc_data.d_camera_layout d_disp_judge=pc_data.d_disp_judge d_exscore=pc_data.d_exscore d_gauge_disp=pc_data.d_gauge_disp d_ghost_score=pc_data.d_ghost_score d_gno=pc_data.d_gno d_graph_score=pc_data.d_graph_score d_gtype=pc_data.d_gtype d_hispeed=pc_data.d_hispeed d_judge=pc_data.d_judge d_judgeAdj=pc_data.d_judgeAdj d_lane_brignt=pc_data.d_lane_brignt d_liflen=pc_data.d_liflen d_notes=pc_data.d_notes d_opstyle=pc_data.d_opstyle d_pace=pc_data.d_pace d_sdlen=pc_data.d_sdlen d_sdtype=pc_data.d_sdtype d_sorttype=pc_data.d_sorttype d_sub_gno=pc_data.d_sub_gno d_timing=pc_data.d_timing d_timing_split=pc_data.d_timing_split d_tsujigiri_disp=pc_data.d_tsujigiri_disp d_tune=pc_data.d_tune d_visualization=pc_data.d_visualization dach=pc_data.dach dp_opt=pc_data.dp_opt dp_opt2=pc_data.dp_opt2 dpnum=0 gpos=pc_data.gpos id=profile.iidxid idstr=profile.iidxidstr mode=pc_data.mode name=profile.name pid=profile.pid pmode=pc_data.pmode rtype=pc_data.rtype s_auto_scrach=pc_data.s_auto_scrach s_camera_layout=pc_data.s_camera_layout s_disp_judge=pc_data.s_disp_judge s_exscore=pc_data.s_exscore s_gauge_disp=pc_data.s_gauge_disp s_ghost_score=pc_data.s_ghost_score s_gno=pc_data.s_gno s_graph_score=pc_data.s_graph_score s_gtype=pc_data.s_gtype s_hispeed=pc_data.s_hispeed s_judge=pc_data.s_judge s_judgeAdj=pc_data.s_judgeAdj s_lane_brignt=pc_data.s_lane_brignt s_liflen=pc_data.s_liflen s_notes=pc_data.s_notes s_opstyle=pc_data.s_opstyle s_pace=pc_data.s_pace s_sdlen=pc_data.s_sdlen s_sdtype=pc_data.s_sdtype s_sorttype=pc_data.s_sorttype s_sub_gno=pc_data.s_sub_gno s_timing=pc_data.s_timing s_timing_split=pc_data.s_timing_split s_tsujigiri_disp=pc_data.s_tsujigiri_disp s_tune=pc_data.s_tune s_visualization=pc_data.s_visualization sach=pc_data.sach sp_opt=pc_data.sp_opt spnum=pc_data.spnum ngrade=pc_data.ngrade s_auto_adjust=pc_data.s_auto_adjust d_auto_adjust=pc_data.d_auto_adjust) + lightning_play_data(dpnum=lightning_playdata.dp_num spnum=lightning_playdata.sp_num) + lightning_setting(headphone_vol=lightning_settings.headphone_vol resistance_dp_left=lightning_settings.resistance_dp_left resistance_dp_right=lightning_settings.resistance_dp_right resistance_sp_left=lightning_settings.resistance_sp_left resistance_sp_right=lightning_settings.resistance_sp_right skin_0=settings.premium_skin flg_skin_0=lightning_settings.skin) + slider(__type="s32" __count="7") #{lightning_settings.vefx[0]} #{lightning_settings.vefx[1]} #{lightning_settings.vefx[2]} #{lightning_settings.vefx[3]} #{lightning_settings.vefx[4]} #{lightning_settings.vefx[5]} #{lightning_settings.vefx[6]} + light(__type="bool" __count="10") #{lightning_settings.light[0]} #{lightning_settings.light[1]} #{lightning_settings.light[2]} #{lightning_settings.light[3]} #{lightning_settings.light[4]} #{lightning_settings.light[5]} #{lightning_settings.light[6]} #{lightning_settings.light[7]} #{lightning_settings.light[8]} #{lightning_settings.light[9]} + concentration(__type="bool") #{lightning_settings.concentration} + spdp_rival(flg="0") + bind_eaappli + ea_premium_course + kac_entry_info + disp_kac_mark + is_kac_entry + is_kac_evnet_entry + secret + flg1(__type="s64" __count="3") -1 -1 -1 + flg2(__type="s64" __count="3") -1 -1 -1 + flg3(__type="s64" __count="3") -1 -1 -1 + flg4(__type="s64" __count="3") -1 -1 -1 + leggendaria + flg1(__type="s64" __count="3") -1 -1 -1 + music_memo + - for (let m of mArray) + folder(play_style=m.play_style folder_id=m.folder_idx name=m.folder_name) + music_id(__type="s32" __count="10") #{m.music_ids[0]} #{m.music_ids[1]} #{m.music_ids[2]} #{m.music_ids[3]} #{m.music_ids[4]} #{m.music_ids[5]} #{m.music_ids[6]} #{m.music_ids[7]} #{m.music_ids[8]} #{m.music_ids[9]} + grade(sgid=pc_data.sgid dgid=pc_data.dgid) + - for (let d of dArray) + g(__type="u8" __count="4") #{d[0]} #{d[1]} #{d[2]} #{d[3]} + eisei_data + - for (let ed of eArray) + detail(grade_type=ed.grade_type grade_id=ed.grade_id stage_num=ed.stage_num clear_type=ed.clear_type option=ed.option) + past(__type="s32" __count="3") #{ed.past[0]} #{ed.past[1]} #{ed.past[2]} + selected_course(__type="s32" __count="3") #{ed.selected_course[0]} #{ed.selected_course[1]} #{ed.selected_course[2]} + max_past(__type="s32" __count="3") #{ed.max_past[0]} #{ed.max_past[1]} #{ed.max_past[2]} + max_selected_course(__type="s32" __count="3") #{ed.max_selected_course[0]} #{ed.max_selected_course[1]} #{ed.max_selected_course[2]} + skin(__type="s16" __count="20") #{settings.frame} #{settings.turntable} #{settings.note_burst} #{settings.menu_music} #{appendsetting} #{settings.lane_cover} #{settings.judge_pos} #{settings.category_vox} #{settings.note_skin} #{settings.full_combo_splash} #{settings.note_beam} #{settings.judge_font} 0 #{settings.disable_musicpreview} #{settings.pacemaker_cover} #{settings.vefx_lock} #{settings.effect} #{settings.bomb_size} #{settings.disable_hcn_color} #{settings.first_note_preview} + qprodata(__type="u32" __count="5") #{settings.qpro_head} #{settings.qpro_hair} #{settings.qpro_face} #{settings.qpro_hand} #{settings.qpro_body} + rlist + - for (let rd of rArray) + rival(spdp=rd.play_style id=rd.profile[2] id_str=rd.profile[3] djname=rd.profile[0] pid=rd.profile[1] sg=rd.pc_data[0] dg=rd.pc_data[1] sa=rd.pc_data[2] da=rd.pc_data[3]) + is_robo(__type="bool") rd.is_robo + qprodata(body=rd.qprodata[3] face=rd.qprodata[2] hair=rd.qprodata[0] hand=rd.qprodata[4] head=rd.qprodata[1]) + shop(name=shop_data.shop_name) + notes_radar(style="0") + radar_score(__type="s32" __count="6") #{pc_data.spradar[0]} #{pc_data.spradar[1]} #{pc_data.spradar[2]} #{pc_data.spradar[3]} #{pc_data.spradar[4]} #{pc_data.spradar[5]} + notes_radar(style="1") + radar_score(__type="s32" __count="6") #{pc_data.dpradar[0]} #{pc_data.dpradar[1]} #{pc_data.dpradar[2]} #{pc_data.dpradar[3]} #{pc_data.dpradar[4]} #{pc_data.dpradar[5]} + weekly(mid="-1" wid="1") + visitor(anum="1" pnum="2" snum="1" vs_flg="1") + step(dp_fluctuation=pc_data.dp_fluctuation dp_level=pc_data.dp_level dp_mplay=pc_data.dp_mplay enemy_damage=pc_data.enemy_damage enemy_defeat_flg=pc_data.enemy_defeat_flg mission_clear_num=pc_data.mission_clear_num progress=pc_data.progress sp_fluctuation=pc_data.sp_fluctuation sp_level=pc_data.sp_level sp_mplay=pc_data.sp_mplay tips_read_list=pc_data.tips_read_list total_point=pc_data.total_point) + is_track_ticket(__type="bool") 1 + packinfo(music_0="-1" music_1="-1" music_2="-1" pack_id="1") + achievements(last_weekly="0" pack="0" pack_comp="0" rival_crush="0" visit_flg="0" weekly_num="0") + trophy(__type="s64" __count="10") #{pc_data.trophy[0]} #{pc_data.trophy[1]} #{pc_data.trophy[2]} #{pc_data.trophy[3]} #{pc_data.trophy[4]} #{pc_data.trophy[5]} #{pc_data.trophy[6]} #{pc_data.trophy[7]} #{pc_data.trophy[8]} #{pc_data.trophy[9]} + deller(deller=pc_data.deller rate="0") + orb_data(present_orb="100" rest_orb="100") + qpro_ticket(ticket_num="100" total_ticket_num="100") + old_linkage_secret_flg(song_battle="-1") + arena_data(play_num="6" play_num_dp="3" play_num_sp="3" prev_best_class_dp="18" prev_best_class_sp="18") + achieve_data(play_style="0" arena_class="0" rating_value="90" win_count="0" now_winning_streak_count="0" best_winning_streak_count="0" perfect_win_count="0" counterattack_num="0" mission_clear_num="0") + achieve_data(play_style="1" arena_class="0" rating_value="90" win_count="0" now_winning_streak_count="0" best_winning_streak_count="0" perfect_win_count="0" counterattack_num="0" mission_clear_num="0") + cube_data(cube="200" season_id="0") + skin_customize_flg(skin_bgm_flg=settings.skin_bgm_flg skin_frame_flg=settings.skin_frame_flg skin_lane_flg3=settings.skin_lane_flg) + event_1(event_play_num=pc_data.event_play_num last_select_flyer_id=pc_data.event_last_select_flyer_id) + - for (let evt of evtArray) + flyer_data(flyer_id=evt.flyer_id play_num=evt.play_num last_select_genre=evt.last_select_genre flyer_prog=evt.flyer_prog skill_param=evt.skill_param) + - for (let evt2 of evtArray2) + genre_data(flyer_id=evt2.flyer_id genre_id=evt2.genre_id play_num=evt2.genre_playnum gauge=evt2.gauge) + is_complete(__type="bool") #{evt2.is_complete} + floor_infection4(music_list="-1") + bemani_vote(music_list="-1") + bemani_janken_meeting(music_list="-1") + bemani_rush(music_list_ichika="-1" music_list_nono="-1") + ultimate_mobile_link(music_list="-1") + link_flag + bemani_musiq_fes(music_list="-1") + busou_linkage(music_list="-1") + busou_linkage_2(music_list="-1") + valkyrie_linkage(music_list_1="-1" music_list_2="-1" music_list_3="-1") + bemani_song_battle(music_list="-1") + bemani_mixup(music_list="-1") + ccj_linkage(music_list="-1") + triple_tribe(music_list="-1") + language_setting(language=profile.language) + movie_agreement(agreement_version="1") + world_tourism + - for (let wd of wArray) + tour_data(tour_id=wd.tour_id progress=wd.progress) + world_tourism_secret_flg + flg1(__type="s64" __count="3") -1 -1 -1 + flg2(__type="s64" __count="3") -1 -1 -1 + bpl_s3_supporter(support_team="-1") + bpls3_packinfo(pack_id="-1" music_0="-1" music_1="-1" music_2="-1") + bpl_s3_supporter_ticket(ticket_num="100" total_ticket_num="100" pack="-1" pack_comp="-1" bplpack="-1" bplpack_comp="-1" last_weekly="-1" weekly_num="-1") + is_first_play(__type="bool") 0 + is_bpl_company(__type="bool") 0 + badge + badge_data(category_id="0" badge_flg_id="0" badge_flg="0") + badge_equip(category_id="0" badge_flg="0" badge_flg_id="0" index="0" slot="0") + equip_flg(__type="bool") 0 diff --git a/pug/30pccommon.pug b/pug/30pccommon.pug new file mode 100644 index 0000000..c76d6c6 --- /dev/null +++ b/pug/30pccommon.pug @@ -0,0 +1,32 @@ +IIDX30pc(status="0" expire="600") + kac_mid(__type="s32" __count="5") -1 -1 -1 -1 -1 + kac_clid(__type="s32" __count="5") -1 -1 -1 -1 -1 + ir(beat=beat) + cm(id="0" folder="cm_ultimate" compo="cm_ultimate") + tdj_cm + cm(id="0" filename="cm_bn_001") + cm(id="1" filename="cm_bn_002") + cm(id="2" filename="event_bn_001") + cm(id="3" filename="event_bn_004") + cm(id="4" filename="event_bn_006") + cm(id="5" filename="fipb_001") + cm(id="6" filename="year_bn_004") + cm(id="7" filename="year_bn_005") + cm(id="8" filename="year_bn_006_2") + cm(id="9" filename="year_bn_007") + movie_agreement(version="1") + license + string(__type="str") Asphyxia + movie_upload(url=movie_upload) + escape_package_info + vip_pass_black + deller_bonus(open="1") + common_evnet(flg="-1") + system_voice_phase(phase=system_voice) + premium_area_news(open="1") + premium_area_qpro(open="1") + play_video + display_asio_logo + lane_gacha + tourism_booster + ameto_event diff --git a/pug/30systeminfo.pug b/pug/30systeminfo.pug new file mode 100644 index 0000000..f7563ac --- /dev/null +++ b/pug/30systeminfo.pug @@ -0,0 +1,75 @@ +IIDX30gameSystem(status="0") + arena_schedule + phase(__type="u8") 2 + start(__type="u32") 1605784800 + end(__type="u32") 4102326000 + arena_music_difficult + play_style(__type="s32") 0 + arena_class(__type="s32") -1 + low_difficult(__type="s32") 1 + high_difficult(__type="s32") 12 + is_leggendaria(__type="bool") 1 + force_music_list_id(__type="s32") 0 + arena_music_difficult + play_style(__type="s32") 1 + arena_class(__type="s32") -1 + low_difficult(__type="s32") 1 + high_difficult(__type="s32") 12 + is_leggendaria(__type="bool") 1 + force_music_list_id(__type="s32") 0 + arena_cpu_define + play_style(__type="s32") 0 + arena_class(__type="s32") -1 + grade_id(__type="s32") 18 + low_music_difficult(__type="s32") 8 + high_music_difficult(__type="s32") 12 + is_leggendaria(__type="bool") 0 + arena_cpu_define + play_style(__type="s32") 1 + arena_class(__type="s32") -1 + grade_id(__type="s32") 18 + low_music_difficult(__type="s32") 8 + high_music_difficult(__type="s32") 12 + is_leggendaria(__type="bool") 0 + maching_class_range + play_style(__type="s32") 0 + matching_class(__type="s32") 2 + low_arena_class(__type="s32") 0 + high_arena_class(__type="s32") 19 + maching_class_range + play_style(__type="s32") 0 + matching_class(__type="s32") 1 + low_arena_class(__type="s32") 0 + high_arena_class(__type="s32") 19 + maching_class_range + play_style(__type="s32") 1 + matching_class(__type="s32") 2 + low_arena_class(__type="s32") 0 + high_arena_class(__type="s32") 19 + maching_class_range + play_style(__type="s32") 1 + matching_class(__type="s32") 1 + low_arena_class(__type="s32") 0 + high_arena_class(__type="s32") 19 + arena_force_music + play_style(__type="s32") 0 + force_music_list_id(__type="s32") 0 + index(__type="s32") 0 + music_id(__type="s32") 1000 + note_grade(__type="s32") 0 + is_active(__type="bool") 0 + arena_force_music + play_style(__type="s32") 1 + force_music_list_id(__type="s32") 0 + index(__type="s32") 0 + music_id(__type="s32") 1000 + note_grade(__type="s32") 0 + is_active(__type="bool") 1 + CommonBossPhase(val=boss) + Event1InternalPhase(val=event_1_internal) + ExtraBossEventPhase(val=extra_boss) + isNewSongAnother12OpenFlg(val="1") + gradeOpenPhase(val="2") + isEiseiOpenFlg(val="1") + WorldTourismOpenList(val="255") + BPLBattleOpenPhase(val="3") diff --git a/pug/31get.pug b/pug/31get.pug new file mode 100644 index 0000000..a58d5ee --- /dev/null +++ b/pug/31get.pug @@ -0,0 +1,92 @@ +IIDX31pc(status="0") + pcdata(d_auto_scrach=pc_data.d_auto_scrach d_camera_layout=pc_data.d_camera_layout d_disp_judge=pc_data.d_disp_judge d_exscore=pc_data.d_exscore d_gauge_disp=pc_data.d_gauge_disp d_ghost_score=pc_data.d_ghost_score d_gno=pc_data.d_gno d_graph_score=pc_data.d_graph_score d_gtype=pc_data.d_gtype d_hispeed=pc_data.d_hispeed d_judge=pc_data.d_judge d_judgeAdj=pc_data.d_judgeAdj d_lane_brignt=pc_data.d_lane_brignt d_liflen=pc_data.d_liflen d_notes=pc_data.d_notes d_opstyle=pc_data.d_opstyle d_pace=pc_data.d_pace d_sdlen=pc_data.d_sdlen d_sdtype=pc_data.d_sdtype d_sorttype=pc_data.d_sorttype d_sub_gno=pc_data.d_sub_gno d_timing=pc_data.d_timing d_timing_split=pc_data.d_timing_split d_tsujigiri_disp=pc_data.d_tsujigiri_disp d_tune=pc_data.d_tune d_visualization=pc_data.d_visualization dach=pc_data.dach dp_opt=pc_data.dp_opt dp_opt2=pc_data.dp_opt2 dpnum=0 gpos=pc_data.gpos id=profile.iidxid idstr=profile.iidxidstr mode=pc_data.mode name=profile.name pid=profile.pid pmode=pc_data.pmode rtype=pc_data.rtype s_auto_scrach=pc_data.s_auto_scrach s_camera_layout=pc_data.s_camera_layout s_disp_judge=pc_data.s_disp_judge s_exscore=pc_data.s_exscore s_gauge_disp=pc_data.s_gauge_disp s_ghost_score=pc_data.s_ghost_score s_gno=pc_data.s_gno s_graph_score=pc_data.s_graph_score s_gtype=pc_data.s_gtype s_hispeed=pc_data.s_hispeed s_judge=pc_data.s_judge s_judgeAdj=pc_data.s_judgeAdj s_lane_brignt=pc_data.s_lane_brignt s_liflen=pc_data.s_liflen s_notes=pc_data.s_notes s_opstyle=pc_data.s_opstyle s_pace=pc_data.s_pace s_sdlen=pc_data.s_sdlen s_sdtype=pc_data.s_sdtype s_sorttype=pc_data.s_sorttype s_sub_gno=pc_data.s_sub_gno s_timing=pc_data.s_timing s_timing_split=pc_data.s_timing_split s_tsujigiri_disp=pc_data.s_tsujigiri_disp s_tune=pc_data.s_tune s_visualization=pc_data.s_visualization sach=pc_data.sach sp_opt=pc_data.sp_opt spnum=pc_data.spnum ngrade=pc_data.ngrade s_auto_adjust=pc_data.s_auto_adjust d_auto_adjust=pc_data.d_auto_adjust player_kind=pc_data.player_kind s_classic_hispeed=pc_data.s_classic_hispeed d_classic_hispeed=pc_data.d_classic_hispeed) + lightning_play_data(dpnum=lightning_playdata.dp_num spnum=lightning_playdata.sp_num) + lightning_setting(headphone_vol=lightning_settings.headphone_vol resistance_dp_left=lightning_settings.resistance_dp_left resistance_dp_right=lightning_settings.resistance_dp_right resistance_sp_left=lightning_settings.resistance_sp_left resistance_sp_right=lightning_settings.resistance_sp_right skin_0=settings.premium_skin flg_skin_0=lightning_settings.skin keyboard_kind=lightning_settings.keyboard_kind) + slider(__type="s32" __count="7") #{lightning_settings.vefx[0]} #{lightning_settings.vefx[1]} #{lightning_settings.vefx[2]} #{lightning_settings.vefx[3]} #{lightning_settings.vefx[4]} #{lightning_settings.vefx[5]} #{lightning_settings.vefx[6]} + light(__type="bool" __count="10") #{lightning_settings.light[0]} #{lightning_settings.light[1]} #{lightning_settings.light[2]} #{lightning_settings.light[3]} #{lightning_settings.light[4]} #{lightning_settings.light[5]} #{lightning_settings.light[6]} #{lightning_settings.light[7]} #{lightning_settings.light[8]} #{lightning_settings.light[9]} + concentration(__type="bool") #{lightning_settings.concentration} + spdp_rival(flg="0") + bind_eaappli + ea_premium_course + kac_entry_info + enable_kac_deller + disp_kac_mark + is_kac_entry + is_kac_evnet_entry + secret + flg1(__type="s64" __count="3") -1 -1 -1 + flg2(__type="s64" __count="3") -1 -1 -1 + flg3(__type="s64" __count="3") -1 -1 -1 + flg4(__type="s64" __count="3") -1 -1 -1 + leggendaria + flg1(__type="s64" __count="3") -1 -1 -1 + music_memo + - for (let m of mArray) + folder(play_style=m.play_style folder_id=m.folder_idx name=m.folder_name) + music_id(__type="s32" __count="10") #{m.music_ids[0]} #{m.music_ids[1]} #{m.music_ids[2]} #{m.music_ids[3]} #{m.music_ids[4]} #{m.music_ids[5]} #{m.music_ids[6]} #{m.music_ids[7]} #{m.music_ids[8]} #{m.music_ids[9]} + music_filter + - for (let f of fArray) + folder(play_style=f.play_style folder_id=f.folder_id filter_id=f.filter_id value0=f.value0 value1=f.value1) + is_valid(__type="bool") #{f.is_valid} + grade(sgid=pc_data.sgid dgid=pc_data.dgid) + - for (let d of dArray) + g(__type="u8" __count="4") #{d[0]} #{d[1]} #{d[2]} #{d[3]} + eisei_data + - for (let ed of eArray) + detail(grade_type=ed.grade_type grade_id=ed.grade_id stage_num=ed.stage_num clear_type=ed.clear_type option=ed.option) + past(__type="s32" __count="3") #{ed.past[0]} #{ed.past[1]} #{ed.past[2]} + selected_course(__type="s32" __count="3") #{ed.selected_course[0]} #{ed.selected_course[1]} #{ed.selected_course[2]} + max_past(__type="s32" __count="3") #{ed.max_past[0]} #{ed.max_past[1]} #{ed.max_past[2]} + max_selected_course(__type="s32" __count="3") #{ed.max_selected_course[0]} #{ed.max_selected_course[1]} #{ed.max_selected_course[2]} + skin(__type="s16" __count="20") #{appendsetting} #{settings.note_burst} #{settings.bomb_size} #{settings.turntable} #{settings.judge_font} #{settings.note_skin} #{settings.note_size} #{settings.disable_musicpreview} #{settings.vefx_lock} #{settings.effect} #{settings.menu_music} #{settings.disable_hcn_color} #{settings.first_note_preview} #{settings.lane_cover} #{settings.pacemaker_cover} #{settings.lift_cover} #{settings.note_beam} #{settings.note_beam_size} #{settings.full_combo_splash} 0 + tdjskin(__type="s16" __count="4") ${settings.premium_area} 0 0 0 + qprodata(__type="u32" __count="5") #{settings.qpro_head} #{settings.qpro_hair} #{settings.qpro_face} #{settings.qpro_hand} #{settings.qpro_body} + rlist + - for (let rd of rArray) + rival(spdp=rd.play_style id=rd.profile[2] id_str=rd.profile[3] djname=rd.profile[0] pid=rd.profile[1] sg=rd.pc_data[0] dg=rd.pc_data[1] sa=rd.pc_data[2] da=rd.pc_data[3]) + is_robo(__type="bool") rd.is_robo + qprodata(body=rd.qprodata[3] face=rd.qprodata[2] hair=rd.qprodata[0] hand=rd.qprodata[4] head=rd.qprodata[1]) + shop(name=shop_data.shop_name) + notes_radar(style="0") + radar_score(__type="s32" __count="6") #{pc_data.spradar[0]} #{pc_data.spradar[1]} #{pc_data.spradar[2]} #{pc_data.spradar[3]} #{pc_data.spradar[4]} #{pc_data.spradar[5]} + notes_radar(style="1") + radar_score(__type="s32" __count="6") #{pc_data.dpradar[0]} #{pc_data.dpradar[1]} #{pc_data.dpradar[2]} #{pc_data.dpradar[3]} #{pc_data.dpradar[4]} #{pc_data.dpradar[5]} + weekly(mid="-1" wid="1") + visitor(anum="1" pnum="2" snum="1" vs_flg="1") + step(dp_fluctuation=pc_data.dp_fluctuation dp_level=pc_data.dp_level dp_mplay=pc_data.dp_mplay enemy_damage=pc_data.enemy_damage enemy_defeat_flg=pc_data.enemy_defeat_flg mission_clear_num=pc_data.mission_clear_num progress=pc_data.progress sp_fluctuation=pc_data.sp_fluctuation sp_level=pc_data.sp_level sp_mplay=pc_data.sp_mplay tips_read_list=pc_data.tips_read_list total_point=pc_data.total_point) + is_track_ticket(__type="bool") 1 + packinfo(music_0="-1" music_1="-1" music_2="-1" pack_id="1") + achievements(last_weekly="0" pack="0" pack_comp="0" rival_crush="0" visit_flg="0" weekly_num="0") + deller(deller=pc_data.deller rate="0") + orb_data(present_orb="100" rest_orb="100") + qpro_ticket(ticket_num="100" total_ticket_num="100") + old_linkage_secret_flg(song_battle="-1" bemani_mixup="-1" ccj_linkage="-1" triple_tribe="-1") + arena_data(play_num="6" play_num_dp="3" play_num_sp="3" prev_best_class_dp="18" prev_best_class_sp="18") + achieve_data(play_style="0" arena_class="0" rating_value="90" win_count="0" now_winning_streak_count="0" best_winning_streak_count="0" perfect_win_count="0" counterattack_num="0" mission_clear_num="0") + achieve_data(play_style="1" arena_class="0" rating_value="90" win_count="0" now_winning_streak_count="0" best_winning_streak_count="0" perfect_win_count="0" counterattack_num="0" mission_clear_num="0") + cube_data(cube="200" season_id="0") + skin_customize_flg(skin_frame_flg="2147483647" skin_turntable_flg="2147483647" skin_bomb_flg="2147483647" skin_bgm_flg="2147483647" skin_lane_flg0="2147483647" skin_lane_flg1="2147483647" skin_lane_flg2="2147483647" skin_lane_flg3="2147483647" skin_lane_flg4="2147483647" skin_lane_flg5="2147483647" skin_notes_flg="2147483647" skin_fullcombo_flg="2147483647" skin_keybeam_flg="2147483647" skin_judgestring_flg="2147483647") + tdjskin_customize_flg(skin_submonitor_flg="2147483647") + event_1(event_play_num=pc_data.event_play_num last_select_flyer_id=pc_data.event_last_select_flyer_id) + - for (let evt of evtArray) + flyer_data(flyer_id=evt.flyer_id play_num=evt.play_num last_select_genre=evt.last_select_genre flyer_prog=evt.flyer_prog skill_param=evt.skill_param) + - for (let evt2 of evtArray2) + genre_data(flyer_id=evt2.flyer_id genre_id=evt2.genre_id play_num=evt2.genre_playnum gauge=evt2.gauge) + is_complete(__type="bool") #{evt2.is_complete} + ultimate_mobile_link(music_list="-1") + link_flag + valkyrie_linkage(music_list_1="-1" music_list_2="-1" music_list_3="-1") + ccj_linkage(music_list="-1") + triple_tribe(music_list="-1") + language_setting(language=profile.language) + movie_agreement(agreement_version="1") + world_tourism + - for (let wd of wArray) + tour_data(tour_id=wd.tour_id progress=wd.progress) + world_tourism_secret_flg + flg1(__type="s64" __count="3") -1 -1 -1 + flg2(__type="s64" __count="3") -1 -1 -1 + badge + badge_data(category_id="0" badge_flg_id="0" badge_flg="0") + badge_equip(category_id="0" badge_flg="0" badge_flg_id="0" index="0" slot="0") + equip_flg(__type="bool") 0 diff --git a/pug/31pccommon.pug b/pug/31pccommon.pug new file mode 100644 index 0000000..19d9134 --- /dev/null +++ b/pug/31pccommon.pug @@ -0,0 +1,19 @@ +IIDX31pc(status="0" expire="600") + kac_mid(__type="s32" __count="5") -1 -1 -1 -1 -1 + kac_clid(__type="s32" __count="5") -1 -1 -1 -1 -1 + ir(beat=beat) + movie_agreement(version="1") + license + string(__type="str") Asphyxia + movie_upload(url=movie_upload) + escape_package_info + vip_pass_black + deller_bonus(open="1") + common_evnet(flg="-1") + system_voice_phase(phase=system_voice) + premium_area_news(open="1") + premium_area_qpro(open="1") + play_video + music_retry + display_asio_logo + lane_gacha diff --git a/pug/31systeminfo.pug b/pug/31systeminfo.pug new file mode 100644 index 0000000..6824593 --- /dev/null +++ b/pug/31systeminfo.pug @@ -0,0 +1,4 @@ +IIDX31gameSystem(status="0") + CommonBossPhase(val=boss) + isNewSongAnother12OpenFlg(val="1") + OldBPLBattleOpenPhase(val="1") diff --git a/pug/crate.pug b/pug/crate.pug index c3d4eca..bee931d 100644 --- a/pug/crate.pug +++ b/pug/crate.pug @@ -359,4 +359,4 @@ c(__type="s32" __count="20" mid="27084") -1 -1 -1 605 -1 -1 -1 -1 -1 -1 -1 -1 -1 567 -1 -1 -1 -1 -1 -1 c(__type="s32" __count="20" mid="27088") -1 -1 -1 572 -1 -1 -1 -1 -1 -1 -1 -1 -1 566 -1 -1 -1 -1 -1 -1 c(__type="s32" __count="20" mid="27094") -1 -1 -1 560 -1 -1 -1 -1 -1 -1 -1 -1 -1 557 -1 -1 -1 -1 -1 -1 - c(__type="s32" __count="20" mid="27102") -1 -1 -1 729 -1 -1 -1 -1 -1 -1 -1 -1 -1 686 -1 -1 -1 -1 -1 -1 + c(__type="s32" __count="20" mid="27102") -1 -1 -1 729 -1 -1 -1 -1 -1 -1 -1 -1 -1 686 -1 -1 -1 -1 -1 -1 \ No newline at end of file diff --git a/pug/musicappoint.pug b/pug/musicappoint.pug new file mode 100644 index 0000000..8d1146f --- /dev/null +++ b/pug/musicappoint.pug @@ -0,0 +1,7 @@ +#{version}(status="0" my_option=option my_option2=option_2) + if oGhost!=null + sdata(__type="bin" score=oGhost.score achieve=oGhost.achieve pid=oGhost.pid name=oGhost.name riidxid=oGhost.iidxid option=oGhost.option option2=oGhost.option2) #{oGhost.ghost} + gauge_data(__type="bin") #{oGhost.ghostGauge} + if ghost!=null + mydata(__type="bin") #{ghost} + my_gauge_data(__type="bin") #{ghost_gauge} diff --git a/pug/musicgetrank.pug b/pug/musicgetrank.pug new file mode 100644 index 0000000..03f6e94 --- /dev/null +++ b/pug/musicgetrank.pug @@ -0,0 +1,7 @@ +#{version} + style(type=style) + - for (let m of mArray) + m(__type="s16" __count="17") #{m[0]} #{m[1]} #{m[2]} #{m[3]} #{m[4]} #{m[5]} #{m[6]} #{m[7]} #{m[8]} #{m[9]} #{m[10]} #{m[11]} #{m[12]} #{m[13]} #{m[14]} #{m[15]} #{m[16]} + - for (let t of tArray) + top(name0=t.names[0] name1=t.names[1] name2=t.names[2] name3=t.names[3] name4=t.names[4]) + detail(__type="s16" __count="11") #{t.music_id} #{t.clflgs[0]} #{t.clflgs[1]} #{t.clflgs[2]} #{t.clflgs[3]} #{t.clflgs[4]} #{t.scores[0]} #{t.scores[1]} #{t.scores[2]} #{t.scores[3]} #{t.scores[4]} diff --git a/pug/musicreg.pug b/pug/musicreg.pug new file mode 100644 index 0000000..3a70703 --- /dev/null +++ b/pug/musicreg.pug @@ -0,0 +1,5 @@ +#{version}(status="0" mid=music_id clid=clid crate="1000" frate="0" rankside=rankside) + ranklist(total_user_num=total_user_num) + - for (let rd of ranklist) + data(achieve="0" body=rd.body clflg=rd.clflg dgrade=rd.dgrade face=rd.face hair=rd.hair hand=rd.hand head=rd.head iidx_id=rd.iidx_id myFlg=rd.myFlg name=rd.name opname=rd.opname pid=rd.pid rnum=rd.rnum score=rd.score sgrade=rd.sgrade update=rd.update) + shopdata(rank="1") diff --git a/pug/musicretry.pug b/pug/musicretry.pug new file mode 100644 index 0000000..fcf1e13 --- /dev/null +++ b/pug/musicretry.pug @@ -0,0 +1,2 @@ +#{version}(status="0") + session(session_id="1") diff --git a/pug/pcgetlanegacha.pug b/pug/pcgetlanegacha.pug new file mode 100644 index 0000000..f1a09f3 --- /dev/null +++ b/pug/pcgetlanegacha.pug @@ -0,0 +1,8 @@ +#{version}(status="0") + - for (let t of tArray) + ticket(ticket_id=t.id arrange_id=t.arrange expire_date=t.expire) + setting(sp="-1" dp_left="-1" dp_right="-1") + info(last_page="0") + free(num="0") + - for (let f of fArray) + favorite(arrange=f.arrange) diff --git a/util.ts b/util.ts index 5ce9a05..c9b5f14 100644 --- a/util.ts +++ b/util.ts @@ -1,109 +1,188 @@ -import { profile } from "./models/profile"; -import { Profile } from "../sdvx@asphyxia/models/profile"; - -export function IDToCode(id: number) { - const padded = _.padStart(id.toString(), 8); - return `${padded.slice(0, 4)}-${padded.slice(4)}`; -} - -export function base64decode(s: string) { - const base64list = - "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; - let t = "", - p = -8, - a = 0, - c: number, - d: number; - - for (let i = 0; i < s.length; i++) { - if ((c = base64list.indexOf(s.charAt(i))) < 0) continue; - a = (a << 6) | (c & 63); - if ((p += 6) >= 0) { - d = (a >> p) & 255; - if (c != 64) t += String.fromCharCode(d); - a &= 63; - p -= 8; - } - } - return t; -} - -export function GetVersion(info: EamuseInfo) { - return parseInt(info.module.substr(4, 2)); -} - -export async function IIDXidTorefid(iidxid: number) { - const profile = await DB.FindOne(null, { - collection: "profile", - iidxid: iidxid, - }); - return profile.refid; -} - -export function ClidToRank(clid: number) { - let style: number, rank: number; - if (clid >= 5) { - style = 1; - rank = clid - 5; - } else { - style = 0; - rank = clid; - } - return { - style: style, - rank: rank, - }; -} - -export function AppendSettingConverter( - sf: boolean, - cf: boolean, - df: boolean, - af: boolean, - hp: boolean, - dg: boolean, - ch: boolean, - hi: boolean -) { - const result = - Number(sf) * 1 + - Number(cf) * 2 + - Number(df) * 4 + - Number(af) * 8 + - Number(hp) * 256 + - Number(dg) * 512 + - Number(ch) * 1024 + - Number(hi) * 4196; - return result; -} - -export function DateToName(now: number, score_time: number) { - const msPerMinute = 60 * 1000; - const msPerHour = msPerMinute * 60; - const msPerDay = msPerHour * 24; - const msPerMonth = msPerDay * 30; - const msPerYear = msPerDay * 365; - - const elapsed = now - score_time; - - if (elapsed < msPerMinute) { - return "-" + Math.round(elapsed / 1000) + "s"; - } else if (elapsed < msPerHour) { - return "-" + Math.round(elapsed / msPerMinute) + "m"; - } else if (elapsed < msPerDay) { - return "-" + Math.round(elapsed / msPerHour) + "h"; - } else if (elapsed < msPerMonth) { - return "-" + Math.round(elapsed / msPerDay) + "d"; - } else if (elapsed < msPerYear) { - return "-" + Math.round(elapsed / msPerMonth) + "mo"; - } else { - return "-" + Math.round(elapsed / msPerYear) + "yr"; - } -} - -export async function refidToName(refid: string) { - const profile = await DB.FindOne(refid, { - collection: "profile", - }); - return profile.name; -} +import { profile } from "./models/profile"; +import { settings } from "./models/settings"; +import { pc_data } from "./models/pc_data"; + +export function IDToCode(id: number) { + const padded = _.padStart(id.toString(), 8); + return `${padded.slice(0, 4)}-${padded.slice(4)}`; +} + +export function base64decode(s: string) { + const base64list = + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; + let t = "", + p = -8, + a = 0, + c: number, + d: number; + + for (let i = 0; i < s.length; i++) { + if ((c = base64list.indexOf(s.charAt(i))) < 0) continue; + a = (a << 6) | (c & 63); + if ((p += 6) >= 0) { + d = (a >> p) & 255; + if (c != 64) t += String.fromCharCode(d); + a &= 63; + p -= 8; + } + } + return t; +} + +export function GetVersion(info: EamuseInfo) { + return parseInt(info.module.substr(4, 2)); +} + +export async function IIDXidTorefid(iidxid: number) { + const profile = await DB.FindOne(null, { + collection: "profile", + iidxid: iidxid, + }); + + if (_.isNil(profile)) return null; + + return profile.refid; +} + +export function ClidToRank(clid: number) { + let style: number, rank: number; + if (clid >= 5) { + style = 1; + rank = clid - 5; + } else { + style = 0; + rank = clid; + } + return { + style: style, + rank: rank, + }; +} + +export function AppendSettingConverter( + sf: boolean, + cf: boolean, + df: boolean, + af: boolean, + rf: boolean, + rr: boolean, + rs: boolean, + hp: boolean, + dg: boolean, + ch: boolean, + rp: boolean, + hi: boolean, +) { + const result = + Number(sf) << 0 | + Number(cf) << 1 | + Number(df) << 2 | + Number(af) << 3 | + Number(rf) << 4 | + Number(false) << 5 | // UNK // + Number(rr) << 6 | + Number(rs) << 7 | + Number(hp) << 8 | + Number(dg) << 9 | + Number(ch) << 10 | + Number(rp) << 11 | + Number(hi) << 12; + + return result; +} + +export function DateToName(now: number, score_time: number) { + const msPerMinute = 60 * 1000; + const msPerHour = msPerMinute * 60; + const msPerDay = msPerHour * 24; + const msPerMonth = msPerDay * 30; + const msPerYear = msPerDay * 365; + + const elapsed = now - score_time; + + if (elapsed < msPerMinute) { + return "-" + Math.round(elapsed / 1000) + "s"; + } else if (elapsed < msPerHour) { + return "-" + Math.round(elapsed / msPerMinute) + "m"; + } else if (elapsed < msPerDay) { + return "-" + Math.round(elapsed / msPerHour) + "h"; + } else if (elapsed < msPerMonth) { + return "-" + Math.round(elapsed / msPerDay) + "d"; + } else if (elapsed < msPerYear) { + return "-" + Math.round(elapsed / msPerMonth) + "mo"; + } else { + return "-" + Math.round(elapsed / msPerYear) + "yr"; + } +} + +export function buffToHex(buff) { + return Buffer.from(buff).toString("hex"); +} + +export function randomIntRange(min, max) { + return Math.floor(Math.random() * max) + min; +} + +export async function refidToProfile(refid: string) { + const profile = await DB.FindOne(refid, { + collection: "profile", + }); + + let profile_data = []; + + try { + profile_data = [ + profile.name, + profile.pid, + profile.iidxid, + profile.iidxidstr, + ]; + } catch { + profile_data = ["", 0, 0, ""]; + } + + return profile_data; +} + +export async function refidToQpro(refid: string) { + const setting = await DB.FindOne(refid, { + collection: "settings", + }); + + let qpro_data = []; + + try { + qpro_data = [ + setting.qpro_hair, + setting.qpro_head, + setting.qpro_face, + setting.qpro_body, + setting.qpro_hand, + ]; + } catch { + qpro_data = [0, 0, 0, 0, 0]; + } + + return qpro_data; +} + +export async function refidToPd(refid: string) { + const pc_data = await DB.FindOne(refid, { + collection: "pc_data", + }); + + let p_data = []; + + try { + p_data = [ + pc_data.sgid, + pc_data.dgid, + pc_data.sach, + pc_data.dach, + ]; + } catch { + p_data = [0, 0, 0, 0]; + } + + return p_data; +} diff --git a/webui/profile_detail.pug b/webui/profile_detail.pug index df377b2..4ff3dc1 100644 --- a/webui/profile_detail.pug +++ b/webui/profile_detail.pug @@ -1,58 +1,74 @@ -//DATA// - profile: DB.FindOne(refid, { collection: "profile" }) - pc_data: DB.FindOne(refid, { collection: "pc_data" }) - -- - const gradelist=[ - "七級", - "六級", - "五級", - "四級", - "三級", - "二級", - "一級", - "初段", - "二段", - "三段", - "四段", - "五段", - "六段", - "七段", - "八段", - "九段", - "十段", - "中伝", - "皆伝"] - -div - .card - .card-header - p.card-header-title - span.icon - i.mdi.mdi-account-edit - | Detail - .card-content - .field - label.label Name - .body - body #{profile.name} - .field - label.label IIDX ID - .body - body #{profile.iidxidstr} - .field - label.label SP Grade - .body - - const a = pc_data.sgid - if a==-1 - body ---- - else - body #{gradelist[pc_data.sgid]} - .field - label.label DP Grade - .body - - const b = pc_data.dgid - if b==-1 - body ---- - else - body #{gradelist[pc_data.dgid]} +//DATA// + profile: DB.FindOne(refid, { collection: "profile" }) + pc_data: DB.FindOne(refid, { collection: "pc_data" }) + +- + const gradelist=[ + "七級", + "六級", + "五級", + "四級", + "三級", + "二級", + "一級", + "初段", + "二段", + "三段", + "四段", + "五段", + "六段", + "七段", + "八段", + "九段", + "十段", + "中伝", + "皆伝"] + +div + .card + .card-header + p.card-header-title + span.icon + i.mdi.mdi-account-edit + | Detail + .card-content + .field + label.label Name + .body + body #{profile.name} + .field + label.label IIDX ID + .body + body #{profile.iidxidstr} + .field + label.label SP Grade + .body + - const a = pc_data.sgid + if a==-1 + body ---- + else + body #{gradelist[pc_data.sgid]} + .field + label.label DP Grade + .body + - const b = pc_data.dgid + if b==-1 + body ---- + else + body #{gradelist[pc_data.dgid]} + .field + label.label IIDX Tower [SCRATCH] + .body + - const tower_scr = profile.tower_scr + if tower_scr==null + body ---- + else + body #{profile.tower_scr} + .field + label.label IIDX Tower [KEYBOARD] + .body + - const tower_kbd = profile.tower_kbd + if tower_kbd==null + body ---- + else + body #{profile.tower_kbd} diff --git a/webui/profile_rivals.pug b/webui/profile_rivals.pug new file mode 100644 index 0000000..dbf1856 --- /dev/null +++ b/webui/profile_rivals.pug @@ -0,0 +1,92 @@ +//DATA// + profile: DB.FindOne(refid, { collection: "profile" }) + profiles: DB.Find(null, { collection: "profile" }) + rival: DB.Find(refid, { collection: "rival" }) + +- + const rival_list=[["", "None", "0000-0000"]] + profiles.forEach((res) => { + rival_list.push([res.refid, res.name, res.iidxidstr]) + }) + +div + .card + .card-header + p.card-header-title + span.icon + i.mdi.mdi-account-edit + | Rivals + .card-content + form(method="post" action="/emit/updateIIDXRivalSettings") + .field + input(type="text" name="iidxid", value=profile.iidxidstr readonly hidden) + label.label SP Rivals + .body + .control + .select + select(name="sp_rival1") + each i in rival_list + option(value=i[0]) #{i[1]} [#{i[2]}] + .control + .select + select(name="sp_rival2") + each i in rival_list + option(value=i[0]) #{i[1]} [#{i[2]}] + .control + .select + select(name="sp_rival3") + each i in rival_list + option(value=i[0]) #{i[1]} [#{i[2]}] + .control + .select + select(name="sp_rival4") + each i in rival_list + option(value=i[0]) #{i[1]} [#{i[2]}] + .control + .select + select(name="sp_rival5") + each i in rival_list + option(value=i[0]) #{i[1]} [#{i[2]}] + .control + .select + select(name="sp_rival6") + each i in rival_list + option(value=i[0]) #{i[1]} [#{i[2]}] + .field + label.label DP Rivals + .body + .control + .select + select(name="dp_rival1") + each i in rival_list + option(value=i[0]) #{i[1]} [#{i[2]}] + .control + .select + select(name="dp_rival2") + each i in rival_list + option(value=i[0]) #{i[1]} [#{i[2]}] + .control + .select + select(name="dp_rival3") + each i in rival_list + option(value=i[0]) #{i[1]} [#{i[2]}] + .control + .select + select(name="dp_rival4") + each i in rival_list + option(value=i[0]) #{i[1]} [#{i[2]}] + .control + .select + select(name="dp_rival5") + each i in rival_list + option(value=i[0]) #{i[1]} [#{i[2]}] + .control + .select + select(name="dp_rival6") + each i in rival_list + option(value=i[0]) #{i[1]} [#{i[2]}] + .field + button.button.is-primary(type="submit") + span.icon + i.mdi.mdi-check + span Submit diff --git a/webui/profile_settings.pug b/webui/profile_settings.pug new file mode 100644 index 0000000..f9149cc --- /dev/null +++ b/webui/profile_settings.pug @@ -0,0 +1,777 @@ +//DATA// + profile: DB.FindOne(refid, { collection: "profile" }) + setting: DB.FindOne(refid, { collection: "settings" }) + +// TODO(FIXME): Well, This is too hardcoded. +- + const frame_list = [ + "デフォルト", + ]; + + const menumusic_list = [ + "デフォルト", + ]; + + const noteburst_list = [ + "デフォルト", + "初代", + "9th Style", + "IIDX RED", + "HAPPY SKY", + "DistorteD", + "GOLD", + "DJ TROOPERS", + "EMPRESS", + "SIRIUS", + "Resort Anthem", + "Lincle", + "tricoro", + "SPADA", + "オンリーワンボム", + "PENDUAL", + "copula", + "SINOBUZ", + "CANNON BALLERS", + "Rootage", + "HEROIC VERSE", + "BISTROVERボム", + "いいねフラッシュ", + "RESIDENT" + ]; + + const turntable_list = [ + "デフォルト", + "トラン", + "JOJO", + "デルタ", + "オレンジディスク", + "DistorteD", + "GOLD", + "DJ TROOPERS", + "EMPRESS", + "SIRIUS", + "Resort Anthem", + "Lincle", + "tricoro", + "SPADA", + "灼熱", + "オンリーワンレコード", + "PENDUAL", + "copula", + "SINOBUZ", + "CANNON BALLERS", + "Rootage", + "HEROIC VERSE", + "BEMANI PRO LEAGUE", + "BPL ROUND1", + "BPL APINA VRAMeS", + "BPL SILKHAT", + "BPL レジャーランド", + "BPL SUPER NOVA Tohoku", + "BPL GAME PANIC", + "いちご", + "CastHour", + "CastHour2", + "BEMANI PRO LEAGUE SEASON 2", + "BPLS2 APINA VRAMeS", + "BPLS2 GiGO", + "BPLS2 GAME PANIC", + "BPLS2 SILKHAT", + "BPLS2 SUPERNOVA Tohoku", + "BPLS2 TAITO STATION Tradz", + "BPLS2 ROUND1", + "BPLS2 レジャーランド", + "RESIDENT", + "BEMANI PRO LEAGUE SEASON 3", + ]; + + const lanecover_list = [ + "デフォルト", + "SigSig", + "内部フレーム", + "空", + "KAMAITACHI", + "タオル", + "コスモス", + "度胸兄弟", + "Blind Justice", + "迷彩", + "bloomin feeling", + "Marie Antoinette", + "Elisha", + "Kung-fu Empire", + "Tune of beat#3", + "EMPRESS", + "Programmed World", + "3y3s", + "UMEGIRI", + "KANZAKI", + "Rock Da House", + "THE DOOR INTO RAINBOW", + "Aegis", + "Vermillion", + "Phoenix", + "Lucky Days", + "Almace", + "DIAMOND CROSSING", + "Mamonis", + "Ashemu", + "Bulluvegola", + "Beridzebeth", + "Levaslater", + "STN", + "Rche", + "Neulakyussra", + "Cybele", + "Cuvelia", + "Liberation", + "Praludium", + "少女アリスと箱庭幻想コンチェルト", + "ReGENERATION", + "20 system bg", + "旋律のドグマ~Miserables~/TYPE A", + "旋律のドグマ~Miserables~/TYPE B", + "Elektrick U-Phoria", + "MAGIC & LOVE", + "スパーダレリーフ", + "S!ck", + "CONCEPTUAL", + "ΕΛΠΙΣ", + "rumrum triplets", + "SYNC-ANTHEM", + "Thor's Hammer", + "Plan 8", + "仮想空間の旅人たち", + "8bit Princess", + "planarian", + "Dynamite", + "龍と少女とデコヒーレンス", + "トリカゴノ鳳凰", + "Proof of the existence", + "BRAVE GLOW/機動怪獣リングール", + "BRAVE GLOW/トリコロイダー", + "VEGA/VEGAうさぎ", + "VEGA/中のひと", + "カジノファイヤーことみちゃん", + "New Lights", + "灼熱くんやきそば", + "即席!脳直★ミュージックシステム", + "キャトられ恋はモ~モク", + "オンリーワンカバー", + "ジザル", + "ジャックティーロ", + "ジャックハンス", + "イェンス", + "アムドゥシアン", + "マクスウェリオン", + "ラプラシア", + "ルシェ", + "スモモ", + "ファウラ", + "ベリゼベス", + "エルピス・キラ", + "フェリーラ", + "オールパトナ", + "あいむちゃん", + "人魚のPrim", + "アヤカシ二人", + "SHELTER OF THE MIND", + "Acid Pumper", + "X", + "ハーティー", + "Nightmare before oversleep", + "Highcharge Divolt", + "Godspeed(少年)", + "車掌イージス", + "GENERATE", + "Dynamite", + "格闘乙女", + "レル DX2300系", + "つゆ太", + "La dolce primavera", + "AO-1", + "真 地獄超特急 -HELL or HELL-", + "モード", + "ミニョンヌ鉄道兄弟", + "冬椿", + "PAPAYAPA BASS", + "鴉", + "AsiaN distractive", + "TOGAKUSHI", + "Modular Technology", + "獅子霞麗ノ舞", + "Music is The Answer", + "!Viva!", + "SINOBUZ UI", + "ChaserXX", + "Amor De Verao", + "エディブルフラワーの独白", + "ハイ*ビスカス ft. Kanae Asaba", + "Midnight Lady", + "FUTURE is Dead", + "Break Stasis", + "草原の王女-軌跡を辿って-", + "Exhaust Hype", + "25UI", + "焔極OVERKILL", + "Breakin' Chain", + "津軽雪", + "Yellow Sketch(RX-Ver.S.P.L.)", + "Steel Edge", + "Go Ahead!!", + "Sky High", + "イザナミノナゲキ", + "GuNGNiR", + "ディッシュウォッシャー◎彡おいわちゃん", + "BroGamer", + "FUZIN RIZIN", + "Mare Nectaris", + "Quakes", + "Rave Cannon", + "ECHIDNA", + "Snakey Kung-fu", + "刃図羅", + "忍恋花", + "法具「バズラ」", + "HADES", + "DEATH†ZIGOQ", + "東京神話", + "Initiation", + "EMERALDAS", + "Chemical Cookie", + "ナイトシティー・アヴァンチュール", + "シムルグの目醒め", + "n'pa pa BBQ", + "ANCHOR", + "IIDX AIR RACE", + "THE DAY OF JUBILATIONS", + "HEISEI", + "IDC feat.REVERBEE", + "Yum Yum Jelly", + "夏の匂い。キミの残像。 ft. Kanae Asaba", + "Hurry Hurry", + "OVERTIME", + "ミストレス・アンに花束を", + "Ember Lights", + "Rootage", + "Urban Constellations", + "金野火織の金色提言", + "龍王の霊廟(Mausoleum Of The Primal Dragon)", + "Painful Fate", + "Drastic Dramatic", + "抱きしめてモナムール", + "Trill auf G", + "Lethal Weapon", + "HEROIC VERSE", + "Primitive Vibes", + "Calvados Queen", + "Ska-sh All Neurons!!", + "Moving on", + "Hyper Drive feat. ぷにぷに電機", + "THE BRAVE MUST DIE", + "曼荼羅恋々", + "Silly Love", + "Change Yourself", + "Virus Funk", + "BEMANI PRO LEAGUE", + "BPL ROUND1", + "BPL APINA VRAMeS", + "BPL SILKHAT", + "BPL レジャーランド", + "BPL SUPER NOVA Tohoku", + "BPL GAME PANIC", + "涙のテ・エストラーニョ・ムーチョ", + "∀", + "S-Bahn", + "Vitrum ", + "水無月の雫", + "Lovely Howdy Cowboy!!", + "WAKE UP NOW", + "魔法のかくれんぼ", + "POLKAMAИIA", + "POLKAMAИIA(2)", + "犬に雨傘", + "Ah Hah Yeah", + "HIGH VOLTAGE ", + "IIDX28汎用", + "Chewingood!!!", + "がっつり陰キャ!? 怪盗いいんちょの億劫", + "がっつり陰キャ!? 怪盗いいんちょの億劫(2)", + "魅惑のYUMMYスイーツ", + "度胸兄弟", + "STOIC HYPOTHESIS", + "GHOST", + "GIGA VIOLATE", + "Crank It", + "Horizons of Promise", + "Backyard Stars", + "Smashing Wedge", + "HEROIC VERSE Shutter", + "LIGHTNING MODEL", + "ARENA UI 2.0", + "華麗なる大犬円舞曲", + "BPL2021 BLACK", + "BPL2021 WHITE", + "召しませ!BISTROVER", + "ピンシェフくん", + "バッド・スイーツ、バッド・ドリーム", + "Sinus Iridum", + "ジェイ君とドゥイさん", + "あまいじかん", + "リフレナ", + "THE PEERLESS UNDER HEAVEN", + "二人ノ廃城幽踊宴", + "乱膳の舞姫", + "ハイテックトキオ", + "月とミルク", + "Ariah", + "LIVE DRIVING!! feat. 花たん", + "Wonderful Escape", + "GiGaGaHell", + "オールトの雲", + "Ventriloquist", + "DREAM OF SPACE UFO ABDUCTION", + "Skreaming for Salvation", + "No Day But Today!", + "CastHour", + "BEMANI PRO LEAGUE SEASON 2", + "BPLS2 APINA VRAMeS", + "BPLS2 GiGO", + "BPLS2 GAME PANIC", + "BPLS2 SILKHAT", + "BPLS2 SUPERNOVA Tohoku", + "BPLS2 TAITO STATION Tradz", + "BPLS2 ROUND1", + "BPLS2 レジャーランド", + "もにに", + "ピカグレ御守", + "ふるこんぼ御守", + "ANEMONE", + "お肉", + "WHA", + "ABSOLUTE EVIL", + "RAGE feat.H14 of LEONAIR", + "RESIDENT UI", + "B.O.D.Y.", + "Shadow World", + "TECHNOPHOBIA", + "Programmed Genom", + "C-C-C-N-N-N", + "儚キ戀ノ幻想譚", + "きゅんです。", + "Summerblue", + "罪過の聖堂", + "CUE CUE RESCUE", + "Sunny Day Vibes", + "BEMANI PRO LEAGUE SEASON 3", + "BPLS3 APINA VRAMeS", + "BPLS3 GiGO", + "BPLS3 GAME PANIC", + "BPLS3 SILK HAT", + "BPLS3 SUPERNOVA Tohoku", + "BPLS3 TAITO STATION Tradz", + "BPLS3 ROUND1", + "BPLS3 レジャーランド", + ]; + + const notes_list = [ + "通常ノーツ", + "ゴージャス", + "アクア", + "ギャル", + "フォトン", + "パステル", + "シンプルカラー", + "ライト", + "tricoro", + "バブル", + ]; + + const fullcombo_list = [ + "デフォルト", + "IIDX RED", + "HAPPY SKY", + "DistorteD", + "GOLD", + "DJ TROOPERS", + "EMPRESS", + "SIRIUS", + "Resort Anthem", + "Lincle", + "tricoro", + "SPADA", + "オンリーワンフルコンボ", + "PENDUAL", + "copula", + "SINOBUZ", + "CANNON BALLERS", + "Rootage", + "HEROIC VERSE", + "BISTROVER SLASH", + "CastHour", + "RESIDENT", + ]; + + const keybeam_list = [ + "デフォルト", + "オレンジ", + "ピンク", + "モノクロ", + "ライトニング", + "オンリーワンビーム", + "コピュライト", + "CBビーム", + "HEROIC VERSE", + "BISTROVER BURNER", + "フレネルビーム", + "RESIDENT", + ]; + + const judge_list = [ + "デフォルト", + "デジタル", + "スマート", + "メタリックブルー", + "テクノ", + "ワイヤー", + "ABYSS", + "SPADA", + "ANCIENT", + "オンリーワンジャッジ", + "電光掲示板風", + "SINOBUZ", + "セグメント", + "Rootage", + "HEROIC VERSE", + "BISTROVER JUDGE", + "CastHour", + "RESIDENT", + ]; + + const premium_skin_list = [ + "デフォルト", + "ピンシェフ", + "トラン", + "BPLS3 APINA", + "BPLS3 GiGO", + "BPLS3 GAME PANIC", + "BPLS3 SILKHAT", + "BPLS3 SUPERNOVA", + "BPLS3 TAITO Tradz", + "BPLS3 ROUND1", + "BPLS3 レジャーランド", + ]; + + const effect_list = [ + "OFF", + "ECHO / REVERB", + "COMPRESSOR / REVERB EX", + "CHORUS / FLANGER", + "GARGLE / DISTORTION", + "EQ ONLY" + ]; + + const bombsize_list = [ + "100%", + "70%", + "80%", + "90%", + "110%", + "120%", + "130%", + ]; + + const notesize_list = [ + "通常", + "極細", + "細", + "太", + ]; + + const notebeamsize_list = [ + "通常", + "ベリーショート", + "ショート", + "ロング", + ]; + + const first_note_preview_list = [ + "デフォルト", + "Always ON", + "Always OFF", + ]; + + const category_vox_list = [ + "デフォルト" + ]; + +div + .card + .card-header + p.card-header-title + span.icon + i.mdi.mdi-account-edit + | Settings + .card-content + form(method="post" action="/emit/updateIIDXProfileSettings") + .field + label.label ID + .control + input.input(type="text" name="iidxid", value=profile.iidxidstr readonly) + .field + label.label Name + .control + input.input(type="text" name="name", value=profile.name) + .field + label.label Frame + .control + .select + select(name="frame") + each i in frame_list + option(selected=(i==frame_list[setting.frame])) #{i} + .field + label.label Menu Music + .control + .select + select(name="menu_music") + each i in menumusic_list + option(selected=(i==menumusic_list[setting.menu_music])) #{i} + .field + label.label Category Voice + .control + .select + select(name="category_vox") + each i in category_vox_list + option(selected=(i==category_vox_list[setting.category_vox])) #{i} + .field + label.label Premium Skin + .control + .select + select(name="premium_skin") + each i in premium_skin_list + option(selected=(i==premium_skin_list[setting.premium_skin])) #{i} + .field + label.label Note Burst + .control + .select + select(name="note_burst") + each i in noteburst_list + option(selected=(i==noteburst_list[setting.note_burst])) #{i} + .field + label.label Turntable + .control + .select + select(name="turntable") + each i in turntable_list + option(selected=(i==turntable_list[setting.turntable])) #{i} + .field + label.label Lane Cover + .control + .select + select(name="lane_cover") + each i in lanecover_list + option(selected=(i==lanecover_list[setting.lane_cover])) #{i} + .field + label.label Pacemaker Cover + .control + .select + select(name="pacemaker_cover") + each i in lanecover_list + option(selected=(i==lanecover_list[setting.pacemaker_cover])) #{i} + .field + label.label Lift Cover + .control + .select + select(name="lift_cover") + each i in lanecover_list + option(selected=(i==lanecover_list[setting.lift_cover])) #{i} + .field + label.label Judge Font + .control + .select + select(name="judge_font") + each i in judge_list + option(selected=(i==judge_list[setting.judge_font])) #{i} + .field + label.label Note Skin + .control + .select + select(name="note_skin") + each i in notes_list + option(selected=(i==notes_list[setting.note_skin])) #{i} + .field + label.label Note Beam + .control + .select + select(name="note_beam") + each i in keybeam_list + option(selected=(i==keybeam_list[setting.note_beam])) #{i} + .field + label.label Full Combo Splash + .control + .select + select(name="full_combo_splash") + each i in fullcombo_list + option(selected=(i==fullcombo_list[setting.full_combo_splash])) #{i} + .field + label.label Note Bomb Size + .control + .select + select(name="bomb_size") + each i in bombsize_list + option(selected=(i==bombsize_list[setting.bomb_size])) #{i} + .field + label.label Note Beam Size + .control + .select + select(name="note_beam_size") + each i in notebeamsize_list + option(selected=(i==notebeamsize_list[setting.note_beam_size])) #{i} + .field + label.label Note Size + .control + .select + select(name="note_size") + each i in notesize_list + option(selected=(i==notesize_list[setting.note_size])) #{i} + .field + label.label Disable HCN color + .control + input(type="checkbox" name="disable_hcn_color", checked=Boolean(setting.disable_hcn_color)) + .field + label.label First Note Preview + .control + .select + select(name="first_note_preview") + each i in first_note_preview_list + option(selected=(i==first_note_preview_list[setting.first_note_preview])) #{i} + .field + label.label BGM Flag [Unknown] + .control + if setting.skin_bgm_flg === undefined + input.input(type="number" name="skin_bgm_flg", value="0") + else + input.input(type="number" name="skin_bgm_flg", value=setting.skin_bgm_flg) + .field + label.label Frame Flag [Unknown] + .control + if setting.skin_frame_flg === undefined + input.input(type="number" name="skin_frame_flg", value="0") + else + input.input(type="number" name="skin_frame_flg", value=setting.skin_frame_flg) + .field + label.label Lane Flag [Unknown] + .control + if setting.skin_lane_flg === undefined + input.input(type="number" name="skin_lane_flg", value="0") + else + input.input(type="number" name="skin_lane_flg", value=setting.skin_lane_flg) + .field + label.label Score Folders + .control + input(type="checkbox" name="score_folders", checked=setting.score_folders) + .field + label.label Clear Folders + .control + input(type="checkbox" name="clear_folders", checked=setting.clear_folders) + .field + label.label Difficulty Folders + .control + input(type="checkbox" name="difficulty_folders", checked=setting.difficulty_folders) + .field + label.label Alphabet Folders + .control + input(type="checkbox" name="alphabet_folders", checked=setting.alphabet_folders) + .field + label.label All Rival Play Folder + .control + if setting.rival_played === undefined + input(type="checkbox" name="rival_played", checked) + else + input(type="checkbox" name="rival_played", checked=setting.rival_played) + .field + label.label Rival Folders + .control + input(type="checkbox" name="rival_folders", checked=setting.rival_folders) + .field + label.label Rival Clear Folders + .control + input(type="checkbox" name="rival_clear_folders", checked=setting.rival_clear_folders) + .field + label.label Rival Score Data + .control + input(type="checkbox" name="rival_shop_info", checked=setting.rival_shop_info) + .field + label.label Classic Hi-SPEED + .control + input(type="checkbox" name="classic_hispeed", checked=setting.classic_hispeed) + .field + label.label Disable Graph Cut-In + .control + input(type="checkbox" name="disable_graphcutin", checked=setting.disable_graphcutin) + .field + label.label Disable Music Preview + .control + input(type="checkbox" name="disable_musicpreview", checked=Boolean(setting.disable_musicpreview)) + .field + label.label Hide Play Count + .control + input(type="checkbox" name="hide_playcount", checked=setting.hide_playcount) + .field + label.label Hide IIDXID + .control + input(type="checkbox" name="hide_iidxid", checked=setting.hide_iidxid) + .field + label.label VEFX Lock + .control + input(type="checkbox" name="vefx_lock", checked=Boolean(setting.vefx_lock)) + .field + label.label Effect [VEFX Lock] + .control + .select + select(name="effect") + each i in effect_list + option(selected=(i==effect_list[setting.effect])) #{i} + .field + label.label Judge Position [Unknown] + .control + input.input(type="number" name="judge_pos", value=setting.judge_pos) + .field + label.label QPRO Head + .control + input.input(type="number" name="qpro_head", value=setting.qpro_head) + .field + label.label QPRO Hair + .control + input.input(type="number" name="qpro_hair", value=setting.qpro_hair) + .field + label.label QPRO Hand + .control + input.input(type="number" name="qpro_hand", value=setting.qpro_hand) + .field + label.label QPRO Face + .control + input.input(type="number" name="qpro_face", value=setting.qpro_face) + .field + label.label QPRO Body + .control + input.input(type="number" name="qpro_body", value=setting.qpro_body) + .field + label.label Random Lane Ticket + .control + if setting.random_lane_ticket === undefined + input.input(type="text" name="random_lane_ticket") + else + input.input(type="text" name="random_lane_ticket", value=setting.random_lane_ticket.toString()) + .field + label.label Random Lane Ticket [Favorite] + .control + if setting.random_lane_ticket_search === undefined + input.input(type="text" name="random_lane_ticket_search") + else + input.input(type="text" name="random_lane_ticket_search", value=setting.random_lane_ticket_search.toString()) + .field + button.button.is-primary(type="submit") + span.icon + i.mdi.mdi-check + span Submit