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)
|
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"))
|
if (input[n].StartsWith("BALLOON") || input[n].StartsWith("BPM"))
|
||||||
{
|
{
|
||||||
@ -3319,9 +3322,24 @@ namespace TJAPlayer3
|
|||||||
|
|
||||||
this.t入力_行解析譜面_V4(str);
|
this.t入力_行解析譜面_V4(str);
|
||||||
|
|
||||||
|
/*
|
||||||
if (!String.IsNullOrEmpty(strSplit読み込むコース[i]))
|
if (!String.IsNullOrEmpty(strSplit読み込むコース[i]))
|
||||||
this.tDanExamLoad(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)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
@ -4265,6 +4283,11 @@ namespace TJAPlayer3
|
|||||||
this.t命令を挿入する(InputText);
|
this.t命令を挿入する(InputText);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
else if (InputText.StartsWith("EXAM"))
|
||||||
|
{
|
||||||
|
this.tDanExamLoad(InputText);
|
||||||
|
return;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (this.b小節線を挿入している == false)
|
if (this.b小節線を挿入している == false)
|
||||||
@ -4769,8 +4792,7 @@ namespace TJAPlayer3
|
|||||||
|
|
||||||
// Adapt to EXAM until 7, optimise condition
|
// Adapt to EXAM until 7, optimise condition
|
||||||
|
|
||||||
if (strCommandName.Equals("EXAM1") || strCommandName.Equals("EXAM2") || strCommandName.Equals("EXAM3") || strCommandName.Equals("EXAM4")
|
if (strCommandName.StartsWith("EXAM"))
|
||||||
|| strCommandName.Equals("EXAM5") || strCommandName.Equals("EXAM6") || strCommandName.Equals("EXAM7"))
|
|
||||||
{
|
{
|
||||||
if (!string.IsNullOrEmpty(strCommandParam))
|
if (!string.IsNullOrEmpty(strCommandParam))
|
||||||
{
|
{
|
||||||
@ -4778,6 +4800,11 @@ namespace TJAPlayer3
|
|||||||
int[] examValue;
|
int[] examValue;
|
||||||
Exam.Range examRange;
|
Exam.Range examRange;
|
||||||
var splitExam = strCommandParam.Split(',');
|
var splitExam = strCommandParam.Split(',');
|
||||||
|
int examNumber = int.Parse(strCommandName.Substring(4)) - 1;
|
||||||
|
|
||||||
|
if (examNumber > CExamInfo.cMaxExam)
|
||||||
|
return;
|
||||||
|
|
||||||
switch (splitExam[0])
|
switch (splitExam[0])
|
||||||
{
|
{
|
||||||
case "g":
|
case "g":
|
||||||
@ -4838,10 +4865,11 @@ namespace TJAPlayer3
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(Dan_C[int.Parse(strCommandName.Substring(4)) - 1] == null)
|
if(Dan_C[examNumber] == null)
|
||||||
Dan_C[int.Parse(strCommandName.Substring(4)) - 1] = new Dan_C(examType, examValue, examRange);
|
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])
|
switch (this.Mode[i])
|
||||||
{
|
{
|
||||||
case EndMode.StageFailed:
|
case EndMode.StageFailed:
|
||||||
//this.ct進行メイン.n現在の値 = 18;
|
|
||||||
/*
|
|
||||||
if (this.soundFailed != null && !this.b再生済み)
|
|
||||||
{
|
|
||||||
this.soundFailed.t再生を開始する();
|
|
||||||
this.b再生済み = true;
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
this.showEndEffect_Failed(i);
|
this.showEndEffect_Failed(i);
|
||||||
break;
|
break;
|
||||||
case EndMode.StageCleared:
|
case EndMode.StageCleared:
|
||||||
//this.ct進行メイン.n現在の値 = 18;
|
|
||||||
/*
|
|
||||||
if (this.soundClear != null && !this.b再生済み)
|
|
||||||
{
|
|
||||||
this.soundClear.t再生を開始する();
|
|
||||||
this.b再生済み = true;
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
this.showEndEffect_Clear(i);
|
this.showEndEffect_Clear(i);
|
||||||
break;
|
break;
|
||||||
case EndMode.StageFullCombo:
|
case EndMode.StageFullCombo:
|
||||||
//this.ct進行メイン.n現在の値 = 18;
|
|
||||||
/*
|
|
||||||
if (this.soundFullCombo != null && !this.b再生済み)
|
|
||||||
{
|
|
||||||
this.soundFullCombo.t再生を開始する();
|
|
||||||
this.b再生済み = true;
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
this.showEndEffect_FullCombo(i);
|
this.showEndEffect_FullCombo(i);
|
||||||
break;
|
break;
|
||||||
case EndMode.StageDondaFullCombo:
|
case EndMode.StageDondaFullCombo:
|
||||||
//this.ct進行メイン.n現在の値 = 18;
|
|
||||||
/*
|
|
||||||
if (this.soundDondaFullCombo != null && !this.b再生済み)
|
|
||||||
{
|
|
||||||
this.soundDondaFullCombo.t再生を開始する();
|
|
||||||
this.b再生済み = true;
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
this.showEndEffect_DondaFullCombo(i);
|
this.showEndEffect_DondaFullCombo(i);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -61,7 +61,8 @@ namespace TJAPlayer3
|
|||||||
{
|
{
|
||||||
if (TJAPlayer3.stage選曲.r確定された曲.DanSongs[0].Dan_C[j] != null)
|
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)
|
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]
|
||||||
+ TJAPlayer3.stage演奏ドラム画面.n不可[NowShowingNumber]);
|
+ TJAPlayer3.stage演奏ドラム画面.n不可[NowShowingNumber]);
|
||||||
|
|
||||||
|
/*
|
||||||
notesremain = TJAPlayer3.DTX.nノーツ数[3]
|
notesremain = TJAPlayer3.DTX.nノーツ数[3]
|
||||||
- (TJAPlayer3.stage演奏ドラム画面.nヒット数_Auto含む.Drums.Perfect
|
- (TJAPlayer3.stage演奏ドラム画面.nヒット数_Auto含む.Drums.Perfect
|
||||||
+ 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.Great)
|
||||||
- (TJAPlayer3.stage演奏ドラム画面.nヒット数_Auto含む.Drums.Miss
|
- (TJAPlayer3.stage演奏ドラム画面.nヒット数_Auto含む.Drums.Miss
|
||||||
+ TJAPlayer3.stage演奏ドラム画面.nヒット数_Auto含まない.Drums.Miss);
|
+ TJAPlayer3.stage演奏ドラム画面.nヒット数_Auto含まない.Drums.Miss);
|
||||||
|
*/
|
||||||
|
|
||||||
|
notesremain = TJAPlayer3.DTX.nノーツ数[3]
|
||||||
|
- (TJAPlayer3.stage演奏ドラム画面.CChartScore[0].nGood
|
||||||
|
+ TJAPlayer3.stage演奏ドラム画面.CChartScore[0].nGreat
|
||||||
|
+ TJAPlayer3.stage演奏ドラム画面.CChartScore[0].nMiss);
|
||||||
|
|
||||||
// 残り音符数が0になったときに判断されるやつ
|
// 残り音符数が0になったときに判断されるやつ
|
||||||
|
|
||||||
// Challenges that are judged when there are no remaining notes (janky ?)
|
// Challenges that are judged when there are no remaining notes
|
||||||
if (ExamChange[i] ? songsnotesremain[NowShowingNumber] <= 0 : notesremain <= 0)
|
if (ExamChange[i] ? songsnotesremain[NowShowingNumber] <= 0 : notesremain <= 0)
|
||||||
{
|
{
|
||||||
// 残り音符数ゼロ
|
// 残り音符数ゼロ
|
||||||
@ -307,7 +315,18 @@ namespace TJAPlayer3
|
|||||||
{
|
{
|
||||||
case Exam.Type.Score:
|
case Exam.Type.Score:
|
||||||
case Exam.Type.Hit:
|
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);
|
if (Challenge[i].Amount < Challenge[i].Value[0]) Challenge[i].SetReached(true);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
Loading…
Reference in New Issue
Block a user