ADLIBs and Mines no longer eat inputs, hitting mines now breaks combo and substract gauge points, ADLIBs no longer break DFC runs (always judged as Goods), bombs and ADLIBs are never judged 'Bad' when hit
This commit is contained in:
parent
d99e9924da
commit
9710bf75f7
@ -226,6 +226,7 @@ namespace TJAPlayer3
|
||||
Bad = 5,
|
||||
Auto = 6,
|
||||
ADLIB = 7,
|
||||
Mine = 8,
|
||||
}
|
||||
internal enum E判定文字表示位置
|
||||
{
|
||||
|
@ -375,6 +375,13 @@ namespace TJAPlayer3
|
||||
#endregion
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
public void MineDamage(int nPlayer)
|
||||
{
|
||||
this.db現在のゲージ値[nPlayer] = Math.Max(0, this.db現在のゲージ値[nPlayer] - 4);
|
||||
}
|
||||
|
||||
public void Damage(E楽器パート screenmode, E楽器パート part, E判定 e今回の判定, int nPlayer)
|
||||
{
|
||||
float fDamage;
|
||||
|
@ -770,6 +770,36 @@ namespace TJAPlayer3
|
||||
}
|
||||
}
|
||||
|
||||
private bool tEasyTimeZones(int nPlayer)
|
||||
{
|
||||
bool _timingzonesAreEasy = false;
|
||||
|
||||
int diff = TJAPlayer3.stage選曲.n確定された曲の難易度[nPlayer];
|
||||
|
||||
// Diff = Normal or Easy
|
||||
if (diff <= (int)Difficulty.Normal)
|
||||
{
|
||||
_timingzonesAreEasy = true;
|
||||
}
|
||||
|
||||
// Diff = Dan and current song is Normal or Easy
|
||||
if (diff == (int)Difficulty.Dan)
|
||||
{
|
||||
int _nb = TJAPlayer3.stage演奏ドラム画面.actDan.NowShowingNumber;
|
||||
var _danSongs = TJAPlayer3.stage選曲.r確定された曲.DanSongs;
|
||||
|
||||
if (_nb < _danSongs.Count)
|
||||
{
|
||||
var _currentDiff = _danSongs[_nb].Difficulty;
|
||||
if (_currentDiff <= (int)Difficulty.Normal)
|
||||
_timingzonesAreEasy = true;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
return _timingzonesAreEasy;
|
||||
}
|
||||
|
||||
private E判定 e指定時刻からChipのJUDGEを返すImpl( long nTime, CDTX.CChip pChip, int player = 0 )
|
||||
{
|
||||
|
||||
@ -793,7 +823,7 @@ namespace TJAPlayer3
|
||||
}
|
||||
}
|
||||
|
||||
int diff = TJAPlayer3.stage選曲.n確定された曲の難易度[player];
|
||||
|
||||
|
||||
// To change later to adapt to Tower Ama-kuchi
|
||||
//diff = Math.Min(diff, (int)Difficulty.Oni);
|
||||
@ -802,28 +832,7 @@ namespace TJAPlayer3
|
||||
|
||||
int timingShift = TJAPlayer3.ConfigIni.nTimingZones[actual];
|
||||
|
||||
bool _timingzonesAreEasy = false;
|
||||
|
||||
// Diff = Normal or Easy
|
||||
if (diff <= (int)Difficulty.Normal)
|
||||
{
|
||||
_timingzonesAreEasy = true;
|
||||
}
|
||||
|
||||
// Diff = Dan and current song is Normal or Easy
|
||||
if (diff == (int)Difficulty.Dan)
|
||||
{
|
||||
int _nb = TJAPlayer3.stage演奏ドラム画面.actDan.NowShowingNumber;
|
||||
var _danSongs = TJAPlayer3.stage選曲.r確定された曲.DanSongs;
|
||||
|
||||
if (_nb < _danSongs.Count)
|
||||
{
|
||||
var _currentDiff = _danSongs[_nb].Difficulty;
|
||||
if (_currentDiff <= (int)Difficulty.Normal)
|
||||
_timingzonesAreEasy = true;
|
||||
|
||||
}
|
||||
}
|
||||
bool _timingzonesAreEasy = tEasyTimeZones(player);
|
||||
|
||||
CConfigIni.CTimingZones tz = (_timingzonesAreEasy == true) ? TJAPlayer3.ConfigIni.tzLevels[timingShift] : TJAPlayer3.ConfigIni.tzLevels[2 + timingShift];
|
||||
|
||||
@ -833,16 +842,19 @@ namespace TJAPlayer3
|
||||
}
|
||||
if (nDeltaTime <= tz.nOkZone * (((double)TJAPlayer3.ConfigIni.n演奏速度) / 20.0))
|
||||
{
|
||||
if ( TJAPlayer3.ConfigIni.bJust[actual] == 1 ) // Just
|
||||
if ( TJAPlayer3.ConfigIni.bJust[actual] == 1 && NotesManager.IsMissableNote(pChip)) // Just
|
||||
return E判定.Poor;
|
||||
return E判定.Good;
|
||||
}
|
||||
if (nDeltaTime <= tz.nBadZone * (((double)TJAPlayer3.ConfigIni.n演奏速度) / 20.0))
|
||||
{
|
||||
if (TJAPlayer3.ConfigIni.bJust[actual] == 2) // Safe
|
||||
|
||||
|
||||
if (nDeltaTime <= tz.nBadZone * (((double)TJAPlayer3.ConfigIni.n演奏速度) / 20.0))
|
||||
{
|
||||
if (TJAPlayer3.ConfigIni.bJust[actual] == 2 || !NotesManager.IsMissableNote(pChip)) // Safe
|
||||
return E判定.Good;
|
||||
return E判定.Poor;
|
||||
}
|
||||
return E判定.Poor;
|
||||
}
|
||||
|
||||
}
|
||||
return E判定.Miss;
|
||||
}
|
||||
@ -1284,6 +1296,8 @@ namespace TJAPlayer3
|
||||
//unsafeコードにつき、デバッグ中の変更厳禁!
|
||||
|
||||
bool bAutoPlay = false;
|
||||
bool bBombHit = false;
|
||||
|
||||
switch (nPlayer)
|
||||
{
|
||||
case 0:
|
||||
@ -1423,6 +1437,20 @@ namespace TJAPlayer3
|
||||
this.actJudgeString.Start(nPlayer, eJudgeResult != E判定.Bad ? E判定.ADLIB : E判定.Bad);
|
||||
TJAPlayer3.stage演奏ドラム画面.actLaneTaiko.Start(0x11, eJudgeResult, true, nPlayer);
|
||||
TJAPlayer3.stage演奏ドラム画面.actChipFireD.Start(0x11, eJudgeResult, nPlayer);
|
||||
eJudgeResult = E判定.Perfect; // Prevent ADLIB notes breaking DFC runs
|
||||
}
|
||||
break;
|
||||
}
|
||||
else if (NotesManager.IsMine(pChip))
|
||||
{
|
||||
if (eJudgeResult != E判定.Auto && eJudgeResult != E判定.Miss)
|
||||
{
|
||||
this.actJudgeString.Start(nPlayer, eJudgeResult != E判定.Bad ? E判定.Mine : E判定.Bad);
|
||||
TJAPlayer3.stage演奏ドラム画面.actLaneTaiko.Start(0x11, eJudgeResult, true, nPlayer);
|
||||
TJAPlayer3.stage演奏ドラム画面.actChipFireD.Start(0x11, eJudgeResult, nPlayer);
|
||||
bBombHit = true;
|
||||
eJudgeResult = E判定.Bad;
|
||||
actGauge.MineDamage(nPlayer);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@ -1445,9 +1473,10 @@ namespace TJAPlayer3
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if ((pChip.e楽器パート != E楽器パート.UNKNOWN))
|
||||
{
|
||||
if (!NotesManager.IsGenericRoll(pChip) && !NotesManager.IsADLIB(pChip))
|
||||
if (NotesManager.IsMissableNote(pChip))
|
||||
{
|
||||
actGauge.Damage(screenmode, pChip.e楽器パート, eJudgeResult, nPlayer);
|
||||
}
|
||||
@ -1561,7 +1590,7 @@ namespace TJAPlayer3
|
||||
case E判定.Miss:
|
||||
case E判定.Bad:
|
||||
{
|
||||
if(NotesManager.IsADLIB(pChip))
|
||||
if(!NotesManager.IsMissableNote(pChip) && !bBombHit)
|
||||
break;
|
||||
|
||||
if (TJAPlayer3.stage選曲.n確定された曲の難易度[0] == (int)Difficulty.Dan)
|
||||
@ -1955,6 +1984,7 @@ namespace TJAPlayer3
|
||||
protected CDTX.CChip r指定時刻に一番近い未ヒットChipを過去方向優先で検索する( long nTime, int nPlayer )
|
||||
{
|
||||
//sw2.Start();
|
||||
|
||||
int nIndex_InitialPositionSearchingToPast;
|
||||
int nTimeDiff;
|
||||
int count = listChip[ nPlayer ].Count;
|
||||
@ -2011,20 +2041,19 @@ namespace TJAPlayer3
|
||||
{
|
||||
CDTX.CChip chip = listChip[ nPlayer ][ nIndex_NearestChip_Past ];
|
||||
//if ( (!chip.bHit && chip.b可視 ) && ( ( 0x93 <= chip.nチャンネル番号 ) && ( chip.nチャンネル番号 <= 0x99 ) ) )
|
||||
|
||||
|
||||
|
||||
if ( (!chip.bHit && chip.b可視 ) && NotesManager.IsHittableNote(chip) && !NotesManager.IsRollEnd(chip) )
|
||||
{
|
||||
if ( (!chip.bHit && chip.b可視 ) && NotesManager.IsHittableNote(chip) && !NotesManager.IsRollEnd(chip) )
|
||||
{
|
||||
break;
|
||||
}
|
||||
//2015.11.5 kairera0467 連打対策
|
||||
else if ( ( chip.b可視 ) && NotesManager.IsGenericRoll(chip) && !NotesManager.IsRollEnd(chip))
|
||||
{
|
||||
break;
|
||||
}
|
||||
// nIndex_NearestChip_Past--;
|
||||
}
|
||||
}
|
||||
|
||||
// nIndex_NearestChip_Past--;
|
||||
}
|
||||
if ( ( nIndex_NearestChip_Future >= count ) && ( nIndex_NearestChip_Past < 0 ) ) // 検索対象が過去未来どちらにも見つからなかった場合
|
||||
{
|
||||
//sw2.Stop();
|
||||
@ -2045,9 +2074,13 @@ namespace TJAPlayer3
|
||||
{
|
||||
int nTimeDiff_Future = Math.Abs( (int) ( nTime - listChip[ nPlayer ][ nIndex_NearestChip_Future ].n発声時刻ms ) );
|
||||
int nTimeDiff_Past = Math.Abs( (int) ( nTime - listChip[ nPlayer ][ nIndex_NearestChip_Past ].n発声時刻ms ) );
|
||||
if ( nTimeDiff_Future < nTimeDiff_Past )
|
||||
|
||||
if ( nTimeDiff_Future < nTimeDiff_Past )
|
||||
{
|
||||
if( !listChip[ nPlayer ][ nIndex_NearestChip_Past ].bHit && ( listChip[ nPlayer ][ nIndex_NearestChip_Past ].n発声時刻ms + ( 108 ) >= nTime ) )
|
||||
if( !listChip[ nPlayer ][ nIndex_NearestChip_Past ].bHit
|
||||
&& listChip[ nPlayer ][ nIndex_NearestChip_Past ].n発声時刻ms + 108 >= nTime
|
||||
&& NotesManager.IsMissableNote(listChip[nPlayer][nIndex_NearestChip_Past])
|
||||
)
|
||||
{
|
||||
nearestChip = listChip[ nPlayer ][ nIndex_NearestChip_Past ];
|
||||
}
|
||||
|
@ -67,17 +67,37 @@ namespace TJAPlayer3
|
||||
public void Start(int player, E判定 judge)
|
||||
{
|
||||
JudgeAnimes[player, JudgeAnime.Index].counter.t開始(0, 410, 1, TJAPlayer3.Timer);
|
||||
JudgeAnimes[player, JudgeAnime.Index].Judge = judge;
|
||||
int njudge = judge == E判定.Perfect ? 0 : judge == E判定.Good ? 1 : judge == E判定.ADLIB ? 3 : judge == E判定.Auto ? 0 : 2;
|
||||
JudgeAnimes[player, JudgeAnime.Index].Judge = judge;
|
||||
|
||||
//int njudge = judge == E判定.Perfect ? 0 : judge == E判定.Good ? 1 : judge == E判定.ADLIB ? 3 : judge == E判定.Auto ? 0 : 2;
|
||||
|
||||
int njudge = 2;
|
||||
if (JudgesDict.ContainsKey(judge))
|
||||
{
|
||||
njudge = JudgesDict[judge];
|
||||
}
|
||||
|
||||
|
||||
JudgeAnimes[player, JudgeAnime.Index].rc = new Rectangle(0, (int)njudge * 60, 90, 60);
|
||||
JudgeAnime.Index++;
|
||||
if (JudgeAnime.Index >= 511) JudgeAnime.Index = 0;
|
||||
}
|
||||
|
||||
// その他
|
||||
|
||||
}
|
||||
|
||||
// その他
|
||||
|
||||
#region [ private ]
|
||||
//-----------------
|
||||
//-----------------
|
||||
|
||||
private static Dictionary<E判定, int> JudgesDict = new Dictionary<E判定, int>
|
||||
{
|
||||
[E判定.Perfect] = 0,
|
||||
[E判定.Auto] = 0,
|
||||
[E判定.Good] = 1,
|
||||
[E判定.Bad] = 2,
|
||||
[E判定.Miss] = 2,
|
||||
[E判定.ADLIB] = 3,
|
||||
[E判定.Mine] = 4,
|
||||
};
|
||||
|
||||
private JudgeAnime[,] JudgeAnimes;
|
||||
private class JudgeAnime
|
||||
|
@ -789,14 +789,16 @@ namespace TJAPlayer3
|
||||
|
||||
e判定 = AlterJudgement(nPlayer, e判定, false);
|
||||
|
||||
//if( pChip.nコース == this.n現在のコース )
|
||||
this.actGame.t叩ききりまショー_判定から各数値を増加させる( e判定, (int)( nHitTime - pChip.n発声時刻ms ) );
|
||||
|
||||
if( e判定 == E判定.Miss )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
this.tチップのヒット処理( nHitTime, pChip, E楽器パート.TAIKO, true, nInput, nPlayer );
|
||||
if( ( e判定 != E判定.Poor ) && ( e判定 != E判定.Miss ) )
|
||||
|
||||
if( ( e判定 != E判定.Poor ) && ( e判定 != E判定.Miss ) )
|
||||
{
|
||||
TJAPlayer3.stage演奏ドラム画面.actLaneTaiko.Start( pChip.nチャンネル番号, e判定, b両手入力, nPlayer );
|
||||
|
||||
@ -1255,6 +1257,19 @@ namespace TJAPlayer3
|
||||
}
|
||||
|
||||
|
||||
if (e判定 != E判定.Miss && NotesManager.IsADLIB(chipNoHit))
|
||||
{
|
||||
this.tドラムヒット処理(nTime, (Eパッド)nPad, chipNoHit, false, nUsePlayer);
|
||||
bHitted = true;
|
||||
}
|
||||
|
||||
if (e判定 != E判定.Miss && NotesManager.IsMine(chipNoHit))
|
||||
{
|
||||
this.tドラムヒット処理(nTime, (Eパッド)nPad, chipNoHit, false, nUsePlayer);
|
||||
bHitted = true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
#region [ (A) ヒットしていればヒット処理して次の inputEvent へ ]
|
||||
//-----------------------------
|
||||
@ -1512,18 +1527,14 @@ namespace TJAPlayer3
|
||||
#endregion
|
||||
|
||||
//2016.07.14 kairera0467 Adlibの場合、一括して処理を行う。
|
||||
if (e判定 != E判定.Miss && NotesManager.IsADLIB(chipNoHit))
|
||||
{
|
||||
this.tドラムヒット処理(nTime, (Eパッド)nPad, chipNoHit, false, nUsePlayer);
|
||||
bHitted = true;
|
||||
}
|
||||
|
||||
//-----------------------------
|
||||
|
||||
|
||||
//-----------------------------
|
||||
#endregion
|
||||
|
||||
|
||||
|
||||
|
||||
#region [ (B) ヒットしてなかった場合は、レーンフラッシュ、パッドアニメ、空打ち音再生を実行 ]
|
||||
//-----------------------------
|
||||
//-----------------------------
|
||||
int pad = nPad; // 以下、nPad の代わりに pad を用いる。(成りすまし用)
|
||||
// BAD or TIGHT 時の処理。
|
||||
if (TJAPlayer3.ConfigIni.bTight && !b連打中[nUsePlayer]) // 18/8/13 - 連打時にこれが発動すると困る!!! (AioiLight)
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 15 KiB |
Loading…
x
Reference in New Issue
Block a user