Improved gauge calculation formulas for Easy~Hard charts and Level 11+ charts
This commit is contained in:
parent
7a8f090188
commit
683711434f
@ -622,6 +622,21 @@ namespace TJAPlayer3
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public class CTimingZones
|
||||||
|
{
|
||||||
|
public int nGoodZone;
|
||||||
|
public int nOkZone;
|
||||||
|
public int nBadZone;
|
||||||
|
|
||||||
|
public CTimingZones(int gz, int oz, int bz)
|
||||||
|
{
|
||||||
|
nGoodZone = gz;
|
||||||
|
nOkZone = oz;
|
||||||
|
nBadZone = bz;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#if false // #23625 2011.1.11 Config.iniからダメージ/回復値の定数変更を行う場合はここを有効にする 087リリースに合わせ機能無効化
|
#if false // #23625 2011.1.11 Config.iniからダメージ/回復値の定数変更を行う場合はここを有効にする 087リリースに合わせ機能無効化
|
||||||
//----------------------------------------
|
//----------------------------------------
|
||||||
@ -775,6 +790,16 @@ namespace TJAPlayer3
|
|||||||
new CAIPerformances(1000, 0, 0, 30)
|
new CAIPerformances(1000, 0, 0, 30)
|
||||||
};
|
};
|
||||||
|
|
||||||
|
public CTimingZones[] tzLevels =
|
||||||
|
{
|
||||||
|
new CTimingZones(75, 114, 125),
|
||||||
|
new CTimingZones(55, 108, 125), // (New) Easy ?
|
||||||
|
new CTimingZones(42, 108, 125), // Normal / Tower Normal (Ama-kuchi)
|
||||||
|
new CTimingZones(33, 86, 115), // (New) Hard ?
|
||||||
|
new CTimingZones(25, 75, 108), // Extreme / Tower Ex (Kara-kuchi) / Dan
|
||||||
|
new CTimingZones(25, 58, 108) // Extreme + Hard timing (Tatsu)
|
||||||
|
};
|
||||||
|
|
||||||
public bool b大音符判定;
|
public bool b大音符判定;
|
||||||
public int n両手判定の待ち時間;
|
public int n両手判定の待ち時間;
|
||||||
public int nBranchAnime;
|
public int nBranchAnime;
|
||||||
@ -2650,6 +2675,7 @@ namespace TJAPlayer3
|
|||||||
this.nヒット範囲ms.Poor = C変換.n値を文字列から取得して範囲内に丸めて返す(str4, 0, 0x3e7, this.nヒット範囲ms.Poor);
|
this.nヒット範囲ms.Poor = C変換.n値を文字列から取得して範囲内に丸めて返す(str4, 0, 0x3e7, this.nヒット範囲ms.Poor);
|
||||||
}
|
}
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
//-----------------------------
|
//-----------------------------
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
@ -116,7 +116,7 @@ namespace TJAPlayer3
|
|||||||
//ゲージのMAXまでの最低コンボ数を計算
|
//ゲージのMAXまでの最低コンボ数を計算
|
||||||
float dbGaugeMaxComboValue = 0;
|
float dbGaugeMaxComboValue = 0;
|
||||||
float[] dbGaugeMaxComboValue_branch = new float[3];
|
float[] dbGaugeMaxComboValue_branch = new float[3];
|
||||||
float dbDamageRate = 2.0f;
|
|
||||||
|
|
||||||
if (nRiskyTimes_InitialVal > 0)
|
if (nRiskyTimes_InitialVal > 0)
|
||||||
{
|
{
|
||||||
@ -125,8 +125,14 @@ namespace TJAPlayer3
|
|||||||
this.nRiskyTimes_Initial = TJAPlayer3.ConfigIni.nRisky;
|
this.nRiskyTimes_Initial = TJAPlayer3.ConfigIni.nRisky;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (this.DTX[nPlayer].LEVELtaiko[TJAPlayer3.stage選曲.n確定された曲の難易度[nPlayer]])
|
float gaugeRate = 0f;
|
||||||
|
float dbDamageRate = 2.0f;
|
||||||
|
|
||||||
|
int nanidou = TJAPlayer3.stage選曲.n確定された曲の難易度[nPlayer];
|
||||||
|
|
||||||
|
switch (this.DTX[nPlayer].LEVELtaiko[nanidou])
|
||||||
{
|
{
|
||||||
|
case 0:
|
||||||
case 1:
|
case 1:
|
||||||
case 2:
|
case 2:
|
||||||
case 3:
|
case 3:
|
||||||
@ -134,88 +140,85 @@ namespace TJAPlayer3
|
|||||||
case 5:
|
case 5:
|
||||||
case 6:
|
case 6:
|
||||||
case 7:
|
case 7:
|
||||||
{
|
gaugeRate = this.fGaugeMaxRate[0];
|
||||||
if (this.DTX[nPlayer].bチップがある.Branch)
|
|
||||||
{
|
|
||||||
dbGaugeMaxComboValue = this.DTX[nPlayer].nノーツ数[3] * (this.fGaugeMaxRate[0] / 100.0f);
|
|
||||||
for (int i = 0; i < 3; i++)
|
|
||||||
{
|
|
||||||
dbGaugeMaxComboValue_branch[i] = this.DTX[nPlayer].nノーツ数_Branch[i] * (this.fGaugeMaxRate[0] / 100.0f);
|
|
||||||
}
|
|
||||||
dbDamageRate = 0.625f;
|
dbDamageRate = 0.625f;
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
dbGaugeMaxComboValue = this.DTX[nPlayer].nノーツ数[3] * (this.fGaugeMaxRate[0] / 100.0f);
|
|
||||||
dbDamageRate = 0.625f;
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
case 8:
|
case 8:
|
||||||
{
|
gaugeRate = this.fGaugeMaxRate[1];
|
||||||
if (this.DTX[nPlayer].bチップがある.Branch)
|
|
||||||
{
|
|
||||||
dbGaugeMaxComboValue = this.DTX[nPlayer].nノーツ数[3] * (this.fGaugeMaxRate[1] / 100.0f);
|
|
||||||
for (int i = 0; i < 3; i++)
|
|
||||||
{
|
|
||||||
dbGaugeMaxComboValue_branch[i] = this.DTX[nPlayer].nノーツ数_Branch[i] * (this.fGaugeMaxRate[1] / 100.0f);
|
|
||||||
}
|
|
||||||
dbDamageRate = 0.625f;
|
dbDamageRate = 0.625f;
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
dbGaugeMaxComboValue = this.DTX[nPlayer].nノーツ数[3] * (this.fGaugeMaxRate[1] / 100.0f);
|
|
||||||
dbDamageRate = 0.625f;
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
}
|
|
||||||
|
|
||||||
case 9:
|
case 9:
|
||||||
case 10:
|
case 10:
|
||||||
{
|
gaugeRate = this.fGaugeMaxRate[2];
|
||||||
if (this.DTX[nPlayer].bチップがある.Branch)
|
dbDamageRate = 2.0f;
|
||||||
{
|
break;
|
||||||
dbGaugeMaxComboValue = this.DTX[nPlayer].nノーツ数[3] * (this.fGaugeMaxRate[2] / 100.0f);
|
|
||||||
for (int i = 0; i < 3; i++)
|
case 11:
|
||||||
{
|
gaugeRate = this.fGaugeMaxRate[3];
|
||||||
dbGaugeMaxComboValue_branch[i] = this.DTX[nPlayer].nノーツ数_Branch[i] * (this.fGaugeMaxRate[2] / 100.0f);
|
dbDamageRate = 2.2f;
|
||||||
}
|
break;
|
||||||
}
|
|
||||||
else
|
case 12:
|
||||||
{
|
gaugeRate = this.fGaugeMaxRate[4];
|
||||||
dbGaugeMaxComboValue = this.DTX[nPlayer].nノーツ数[3] * (this.fGaugeMaxRate[2] / 100.0f);
|
dbDamageRate = 2.4f;
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
}
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
{
|
gaugeRate = this.fGaugeMaxRate[5];
|
||||||
|
dbDamageRate = 2.6f;
|
||||||
|
break;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#region [(Unbloated) Gauge max combo values]
|
||||||
|
|
||||||
if (this.DTX[nPlayer].bチップがある.Branch)
|
if (this.DTX[nPlayer].bチップがある.Branch)
|
||||||
{
|
{
|
||||||
dbGaugeMaxComboValue = this.DTX[nPlayer].nノーツ数[3] * (this.fGaugeMaxRate[2] / 100.0f);
|
dbGaugeMaxComboValue = this.DTX[nPlayer].nノーツ数[3] * (gaugeRate / 100.0f);
|
||||||
for (int i = 0; i < 3; i++)
|
for (int i = 0; i < 3; i++)
|
||||||
{
|
{
|
||||||
dbGaugeMaxComboValue_branch[i] = this.DTX[nPlayer].nノーツ数[i] * (this.fGaugeMaxRate[2] / 100.0f);
|
dbGaugeMaxComboValue_branch[i] = this.DTX[nPlayer].nノーツ数_Branch[i] * (gaugeRate / 100.0f);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
dbGaugeMaxComboValue = this.DTX[nPlayer].nノーツ数[3] * (this.fGaugeMaxRate[2] / 100.0f);
|
dbGaugeMaxComboValue = this.DTX[nPlayer].nノーツ数[3] * (gaugeRate / 100.0f);
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region [Change the weights depending on the choosen difficulty (More lenient for easier diffs, set to 0 for Tower charts)]
|
||||||
|
|
||||||
|
float multiplicationFactor = 1f;
|
||||||
|
|
||||||
|
if (nanidou <= (int)Difficulty.Edit)
|
||||||
|
{
|
||||||
|
float[] factors =
|
||||||
|
{
|
||||||
|
1.6f,
|
||||||
|
1.33f,
|
||||||
|
1.14f,
|
||||||
|
1f,
|
||||||
|
1f,
|
||||||
|
};
|
||||||
|
|
||||||
|
multiplicationFactor = factors[nanidou];
|
||||||
}
|
}
|
||||||
|
else if (nanidou == (int)Difficulty.Tower)
|
||||||
|
multiplicationFactor = 0f;
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
double nGaugeRankValue = 0D;
|
double nGaugeRankValue = 0D;
|
||||||
double[] nGaugeRankValue_branch = new double[] { 0D, 0D, 0D };
|
double[] nGaugeRankValue_branch = new double[] { 0D, 0D, 0D };
|
||||||
|
|
||||||
nGaugeRankValue = 10000.0f / dbGaugeMaxComboValue;
|
nGaugeRankValue = (10000.0f / dbGaugeMaxComboValue) * multiplicationFactor;
|
||||||
for (int i = 0; i < 3; i++)
|
for (int i = 0; i < 3; i++)
|
||||||
{
|
{
|
||||||
nGaugeRankValue_branch[i] = 10000.0f / dbGaugeMaxComboValue_branch[i];
|
nGaugeRankValue_branch[i] = (10000.0f / dbGaugeMaxComboValue_branch[i]) * multiplicationFactor;
|
||||||
}
|
}
|
||||||
|
|
||||||
//ゲージ値計算
|
//ゲージ値計算
|
||||||
@ -238,7 +241,7 @@ namespace TJAPlayer3
|
|||||||
|
|
||||||
//2015.03.26 kairera0467 計算を初期化時にするよう修正。
|
//2015.03.26 kairera0467 計算を初期化時にするよう修正。
|
||||||
|
|
||||||
#region [ 計算結果がInfintyだった場合も考えて ]
|
#region [ Handling infinity cases ]
|
||||||
float fIsDontInfinty = 0.4f;//適当に0.4で
|
float fIsDontInfinty = 0.4f;//適当に0.4で
|
||||||
float[] fAddVolume = new float[] { 1.0f, 0.5f, dbDamageRate };
|
float[] fAddVolume = new float[] { 1.0f, 0.5f, dbDamageRate };
|
||||||
|
|
||||||
@ -266,7 +269,8 @@ namespace TJAPlayer3
|
|||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region ゲージの丸め処理
|
#region [Rounding process]
|
||||||
|
|
||||||
var increase = new float[] { dbゲージ増加量[0][nPlayer], dbゲージ増加量[1][nPlayer], dbゲージ増加量[2][nPlayer] };
|
var increase = new float[] { dbゲージ増加量[0][nPlayer], dbゲージ増加量[1][nPlayer], dbゲージ増加量[2][nPlayer] };
|
||||||
var increaseBranch = new float[3, 3];
|
var increaseBranch = new float[3, 3];
|
||||||
for (int i = 0; i < 3; i++)
|
for (int i = 0; i < 3; i++)
|
||||||
@ -360,9 +364,12 @@ namespace TJAPlayer3
|
|||||||
|
|
||||||
public float[] fGaugeMaxRate =
|
public float[] fGaugeMaxRate =
|
||||||
{
|
{
|
||||||
70.7f,//1~7
|
70.7f, // 1~7
|
||||||
70f, //8
|
70f, // 8
|
||||||
75.0f //9~10
|
75.0f, // 9~10
|
||||||
|
78.5f, // 11
|
||||||
|
80.5f, // 12
|
||||||
|
82f, // 13+
|
||||||
};//おおよその値。
|
};//おおよその値。
|
||||||
|
|
||||||
// ----------------------------------
|
// ----------------------------------
|
||||||
|
Loading…
Reference in New Issue
Block a user