Fix a game-breaking parsing issue for some dans with individual conditions
This commit is contained in:
parent
6b9387a490
commit
52cd66d2b6
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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:
|
||||
|
@ -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:
|
||||
|
Loading…
Reference in New Issue
Block a user