diff --git a/TJAPlayer3/Songs/CDTX.cs b/TJAPlayer3/Songs/CDTX.cs index 1089f3e5..5a2a98de 100644 --- a/TJAPlayer3/Songs/CDTX.cs +++ b/TJAPlayer3/Songs/CDTX.cs @@ -2897,7 +2897,10 @@ namespace TJAPlayer3 } else if (nMode == 1) { - if (!string.IsNullOrEmpty(input[n]) && (input[n].Substring(0, 1) == "#" || NotesManager.FastFlankedParsing(input[n])))//this.CharConvertNote(input[n].Substring(0, 1)) != -1)) + if (!string.IsNullOrEmpty(input[n]) && + (input[n].Substring(0, 1) == "#" + || input[n].StartsWith("EXAM") + || NotesManager.FastFlankedParsing(input[n])))//this.CharConvertNote(input[n].Substring(0, 1)) != -1)) { if (input[n].StartsWith("BALLOON") || input[n].StartsWith("BPM")) { @@ -3319,9 +3322,24 @@ namespace TJAPlayer3 this.t入力_行解析譜面_V4(str); + /* if (!String.IsNullOrEmpty(strSplit読み込むコース[i])) this.tDanExamLoad(strSplit読み込むコース[i]); + */ + } + + if (DanSongs.Number > 0) + { + for (int i = 0; i < CExamInfo.cMaxExam; i++) + { + if (Dan_C[i] != null && List_DanSongs[0].Dan_C[i] == null) + { + List_DanSongs[0].Dan_C[i] = Dan_C[i]; + } + } + } + } catch (Exception ex) { @@ -4265,6 +4283,11 @@ namespace TJAPlayer3 this.t命令を挿入する(InputText); return; } + else if (InputText.StartsWith("EXAM")) + { + this.tDanExamLoad(InputText); + return; + } else { if (this.b小節線を挿入している == false) @@ -4769,8 +4792,7 @@ namespace TJAPlayer3 // Adapt to EXAM until 7, optimise condition - if (strCommandName.Equals("EXAM1") || strCommandName.Equals("EXAM2") || strCommandName.Equals("EXAM3") || strCommandName.Equals("EXAM4") - || strCommandName.Equals("EXAM5") || strCommandName.Equals("EXAM6") || strCommandName.Equals("EXAM7")) + if (strCommandName.StartsWith("EXAM")) { if (!string.IsNullOrEmpty(strCommandParam)) { @@ -4778,6 +4800,11 @@ namespace TJAPlayer3 int[] examValue; Exam.Range examRange; var splitExam = strCommandParam.Split(','); + int examNumber = int.Parse(strCommandName.Substring(4)) - 1; + + if (examNumber > CExamInfo.cMaxExam) + return; + switch (splitExam[0]) { case "g": @@ -4838,10 +4865,11 @@ namespace TJAPlayer3 break; } - if(Dan_C[int.Parse(strCommandName.Substring(4)) - 1] == null) - Dan_C[int.Parse(strCommandName.Substring(4)) - 1] = new Dan_C(examType, examValue, examRange); + if(Dan_C[examNumber] == null) + Dan_C[examNumber] = new Dan_C(examType, examValue, examRange); - List_DanSongs[DanSongs.Number - 1].Dan_C[int.Parse(strCommandName.Substring(4)) - 1] = new Dan_C(examType, examValue, examRange); + if (DanSongs.Number > 0) + List_DanSongs[DanSongs.Number - 1].Dan_C[examNumber] = new Dan_C(examType, examValue, examRange); } } } diff --git a/TJAPlayer3/Stages/07.Game/Taiko/CAct演奏Drums演奏終了演出.cs b/TJAPlayer3/Stages/07.Game/Taiko/CAct演奏Drums演奏終了演出.cs index 924bbeee..59359f82 100644 --- a/TJAPlayer3/Stages/07.Game/Taiko/CAct演奏Drums演奏終了演出.cs +++ b/TJAPlayer3/Stages/07.Game/Taiko/CAct演奏Drums演奏終了演出.cs @@ -439,47 +439,15 @@ namespace TJAPlayer3 switch (this.Mode[i]) { case EndMode.StageFailed: - //this.ct進行メイン.n現在の値 = 18; - /* - if (this.soundFailed != null && !this.b再生済み) - { - this.soundFailed.t再生を開始する(); - this.b再生済み = true; - } - */ this.showEndEffect_Failed(i); break; case EndMode.StageCleared: - //this.ct進行メイン.n現在の値 = 18; - /* - if (this.soundClear != null && !this.b再生済み) - { - this.soundClear.t再生を開始する(); - this.b再生済み = true; - } - */ this.showEndEffect_Clear(i); break; case EndMode.StageFullCombo: - //this.ct進行メイン.n現在の値 = 18; - /* - if (this.soundFullCombo != null && !this.b再生済み) - { - this.soundFullCombo.t再生を開始する(); - this.b再生済み = true; - } - */ this.showEndEffect_FullCombo(i); break; case EndMode.StageDondaFullCombo: - //this.ct進行メイン.n現在の値 = 18; - /* - if (this.soundDondaFullCombo != null && !this.b再生済み) - { - this.soundDondaFullCombo.t再生を開始する(); - this.b再生済み = true; - } - */ this.showEndEffect_DondaFullCombo(i); break; default: diff --git a/TJAPlayer3/Stages/07.Game/Taiko/Dan_Cert.cs b/TJAPlayer3/Stages/07.Game/Taiko/Dan_Cert.cs index 2165e5c5..c96d1a15 100644 --- a/TJAPlayer3/Stages/07.Game/Taiko/Dan_Cert.cs +++ b/TJAPlayer3/Stages/07.Game/Taiko/Dan_Cert.cs @@ -61,7 +61,8 @@ namespace TJAPlayer3 { if (TJAPlayer3.stage選曲.r確定された曲.DanSongs[0].Dan_C[j] != null) { - if (TJAPlayer3.stage選曲.r確定された曲.DanSongs[TJAPlayer3.stage選曲.r確定された曲.DanSongs.Count - 1].Dan_C[j] != null) //個別の条件がありますよー + if (TJAPlayer3.stage選曲.r確定された曲.DanSongs[TJAPlayer3.stage選曲.r確定された曲.DanSongs.Count - 1].Dan_C[j] != null + && TJAPlayer3.stage選曲.r確定された曲.DanSongs.Count > 1) // Individual exams, not counted if dan is only a single song { if (TJAPlayer3.stage選曲.r確定された曲.DanSongs[NowShowingNumber].Dan_C[j].GetExamRange() == Exam.Range.Less) { @@ -244,6 +245,7 @@ namespace TJAPlayer3 + TJAPlayer3.stage演奏ドラム画面.n可[NowShowingNumber] + TJAPlayer3.stage演奏ドラム画面.n不可[NowShowingNumber]); + /* notesremain = TJAPlayer3.DTX.nノーツ数[3] - (TJAPlayer3.stage演奏ドラム画面.nヒット数_Auto含む.Drums.Perfect + TJAPlayer3.stage演奏ドラム画面.nヒット数_Auto含まない.Drums.Perfect) @@ -251,10 +253,16 @@ namespace TJAPlayer3 + TJAPlayer3.stage演奏ドラム画面.nヒット数_Auto含まない.Drums.Great) - (TJAPlayer3.stage演奏ドラム画面.nヒット数_Auto含む.Drums.Miss + TJAPlayer3.stage演奏ドラム画面.nヒット数_Auto含まない.Drums.Miss); - - // 残り音符数が0になったときに判断されるやつ + */ - // Challenges that are judged when there are no remaining notes (janky ?) + notesremain = TJAPlayer3.DTX.nノーツ数[3] + - (TJAPlayer3.stage演奏ドラム画面.CChartScore[0].nGood + + TJAPlayer3.stage演奏ドラム画面.CChartScore[0].nGreat + + TJAPlayer3.stage演奏ドラム画面.CChartScore[0].nMiss); + + // 残り音符数が0になったときに判断されるやつ + + // Challenges that are judged when there are no remaining notes if (ExamChange[i] ? songsnotesremain[NowShowingNumber] <= 0 : notesremain <= 0) { // 残り音符数ゼロ @@ -307,7 +315,18 @@ namespace TJAPlayer3 { case Exam.Type.Score: case Exam.Type.Hit: - case Exam.Type.Roll: // Should be checked in live "If no remaining roll" + // Should be checked in live "If no remaining roll" + case Exam.Type.Roll: + // Should be checked in live "If no remaining ADLIB/Mine" + case Exam.Type.JudgeADLIB: + case Exam.Type.JudgeMine: + // Catch normaly already checked cases that would be forgotten before (ex : for charts with branches) + case Exam.Type.JudgePerfect: + case Exam.Type.JudgeGood: + case Exam.Type.JudgeBad: + case Exam.Type.Gauge: + case Exam.Type.Accuracy: + case Exam.Type.Combo: if (Challenge[i].Amount < Challenge[i].Value[0]) Challenge[i].SetReached(true); break; default: