1
0
mirror of synced 2024-11-24 07:30:21 +01:00

Add the unlockable conditions ce, sc, tp, ap and aw

This commit is contained in:
0auBSQ 2024-06-22 10:52:51 +09:00
parent 9117f7313f
commit a8163583e7
8 changed files with 70 additions and 4 deletions

View File

@ -3,11 +3,15 @@
* ch : "Coins here", coin requirement, payable within the heya menu, 1 value : [Coin price] * ch : "Coins here", coin requirement, payable within the heya menu, 1 value : [Coin price]
* cs : "Coins shop", coin requirement, payable only within the Medal shop selection screen * cs : "Coins shop", coin requirement, payable only within the Medal shop selection screen
* cm : "Coins menu", coin requirement, payable only within the song select screen (used only for songs) * cm : "Coins menu", coin requirement, payable only within the song select screen (used only for songs)
* ce : "Coins earned", coins earned since the creation of the save file, 1 value : [Total earned coins]
* dp : "Difficulty pass", count of difficulties pass, unlock check during the results screen, condition 3 values : [Difficulty int (0~4), Clear status (0~4), Number of performances], input 1 value [Plays fitting the condition] * dp : "Difficulty pass", count of difficulties pass, unlock check during the results screen, condition 3 values : [Difficulty int (0~4), Clear status (0~4), Number of performances], input 1 value [Plays fitting the condition]
* lp : "Level pass", count of level pass, unlock check during the results screen, condition 3 values : [Star rating, Clear status (0~4), Number of performances], input 1 value [Plays fitting the condition] * lp : "Level pass", count of level pass, unlock check during the results screen, condition 3 values : [Star rating, Clear status (0~4), Number of performances], input 1 value [Plays fitting the condition]
* sp : "Song performance", count of a specific song pass, unlock check during the results screen, condition 2 x n values for n songs : [Difficulty int (0~4, if -1 : Any), Clear status (0~2), ...], input 1 value [Count of fullfiled songs], n references for n songs (Song ids) * sp : "Song performance", count of a specific song pass, unlock check during the results screen, condition 2 x n values for n songs : [Difficulty int (0~4, if -1 : Any), Clear status (0~2), ...], input 1 value [Count of fullfiled songs], n references for n songs (Song ids)
* sg : "Song genre (performance)", count of any song pass within a specific genre folder, unlock check during the results screen, condition 2 x n values for n songs : [Song count, Clear status (0~4), ...], input 1 value [Count of fullfiled genres], n references for n genres (Genre names) * sg : "Song genre (performance)", count of any song pass within a specific genre folder, unlock check during the results screen, condition 2 x n values for n songs : [Song count, Clear status (0~4), ...], input 1 value [Count of fullfiled genres], n references for n genres (Genre names)
* sc : "Song charter (performance)", count of any chart pass by a specific charter, unlock check during the results screen, condition 2 x n values for n songs : [Song count, Clear status (0~4), ...], input 1 value [Count of fullfiled charters], n references for n charters (Charter names)
* tp : "Total plays", 1 value : [Total playcount]
* ap : "AI battle plays", 1 value : [AI battle playcount]
* aw : "AI battle wins", 1 value : [AI battle wins count]
== UnlockType == == UnlockType ==
* l : "Less than" * l : "Less than"

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

View File

@ -19,3 +19,6 @@
18 - Sky Purple 18 - Sky Purple
19 - AI 19 - AI
20 - Cyan 20 - Cyan
21 - OpTk Yellow (Roll)
22 - Bol white
23 - Saturated blue

View File

@ -17,6 +17,12 @@ namespace TJAPlayer3
["lp"] = 3, ["lp"] = 3,
["sp"] = 2, ["sp"] = 2,
["sg"] = 2, ["sg"] = 2,
["sc"] = 2,
["ce"] = 1,
["tp"] = 1,
["ap"] = 1,
["aw"] = 1,
}; };
public class CUnlockConditions public class CUnlockConditions
@ -95,10 +101,15 @@ namespace TJAPlayer3
* ch : "Coins here", coin requirement, payable within the heya menu, 1 value : [Coin price] * ch : "Coins here", coin requirement, payable within the heya menu, 1 value : [Coin price]
* cs : "Coins shop", coin requirement, payable only within the Medal shop selection screen * cs : "Coins shop", coin requirement, payable only within the Medal shop selection screen
* cm : "Coins menu", coin requirement, payable only within the song select screen (used only for songs) * cm : "Coins menu", coin requirement, payable only within the song select screen (used only for songs)
* ce : "Coins earned", coins earned since the creation of the save file, 1 value : [Total earned coins]
* dp : "Difficulty pass", count of difficulties pass, unlock check during the results screen, condition 3 values : [Difficulty int (0~4), Clear status (0~4), Number of performances], input 1 value [Plays fitting the condition] * dp : "Difficulty pass", count of difficulties pass, unlock check during the results screen, condition 3 values : [Difficulty int (0~4), Clear status (0~4), Number of performances], input 1 value [Plays fitting the condition]
* lp : "Level pass", count of level pass, unlock check during the results screen, condition 3 values : [Star rating, Clear status (0~4), Number of performances], input 1 value [Plays fitting the condition] * lp : "Level pass", count of level pass, unlock check during the results screen, condition 3 values : [Star rating, Clear status (0~4), Number of performances], input 1 value [Plays fitting the condition]
* sp : "Song performance", count of a specific song pass, unlock check during the results screen, condition 2 x n values for n songs : [Difficulty int (0~4, if -1 : Any), Clear status (0~4), ...], input 1 value [Count of fullfiled songs], n references for n songs (Song ids) * sp : "Song performance", count of a specific song pass, unlock check during the results screen, condition 2 x n values for n songs : [Difficulty int (0~4, if -1 : Any), Clear status (0~4), ...], input 1 value [Count of fullfiled songs], n references for n songs (Song ids)
* sg : "Song genre (performance)", count of any unique song pass within a specific genre folder, unlock check during the results screen, condition 2 x n values for n songs : [Song count, Clear status (0~4), ...], input 1 value [Count of fullfiled genres], n references for n genres (Genre names) * sg : "Song genre (performance)", count of any unique song pass within a specific genre folder, unlock check during the results screen, condition 2 x n values for n songs : [Song count, Clear status (0~4), ...], input 1 value [Count of fullfiled genres], n references for n genres (Genre names)
* sc : "Song charter (performance)", count of any chart pass by a specific charter, unlock check during the results screen, condition 2 x n values for n songs : [Song count, Clear status (0~4), ...], input 1 value [Count of fullfiled charters], n references for n charters (Charter names)
* tp : "Total plays", 1 value : [Total playcount]
* ap : "AI battle plays", 1 value : [AI battle playcount]
* aw : "AI battle wins", 1 value : [AI battle wins count]
* *
* *
*/ */
@ -116,6 +127,26 @@ namespace TJAPlayer3
return tConditionMet(new int[] { (int)TJAPlayer3.SaveFileInstances[player].data.Medals }, screen); return tConditionMet(new int[] { (int)TJAPlayer3.SaveFileInstances[player].data.Medals }, screen);
else else
return (false, CLangManager.LangInstance.GetString(90005) + this.Condition + " requires " + this.RequiredArgCount.ToString() + " values."); return (false, CLangManager.LangInstance.GetString(90005) + this.Condition + " requires " + this.RequiredArgCount.ToString() + " values.");
case "ce":
if (this.Values.Length == 1)
return tConditionMet(new int[] { (int)TJAPlayer3.SaveFileInstances[player].data.TotalEarnedMedals }, screen);
else
return (false, CLangManager.LangInstance.GetString(90005) + this.Condition + " requires " + this.RequiredArgCount.ToString() + " values.");
case "ap":
if (this.Values.Length == 1)
return tConditionMet(new int[] { (int)TJAPlayer3.SaveFileInstances[player].data.AIBattleModePlaycount }, screen);
else
return (false, CLangManager.LangInstance.GetString(90005) + this.Condition + " requires " + this.RequiredArgCount.ToString() + " values.");
case "aw":
if (this.Values.Length == 1)
return tConditionMet(new int[] { (int)TJAPlayer3.SaveFileInstances[player].data.AIBattleModeWins }, screen);
else
return (false, CLangManager.LangInstance.GetString(90005) + this.Condition + " requires " + this.RequiredArgCount.ToString() + " values.");
case "tp":
if (this.Values.Length == 1)
return tConditionMet(new int[] { (int)TJAPlayer3.SaveFileInstances[player].data.TotalPlaycount }, screen);
else
return (false, CLangManager.LangInstance.GetString(90005) + this.Condition + " requires " + this.RequiredArgCount.ToString() + " values.");
case "dp": case "dp":
case "lp": case "lp":
if (this.Values.Length == 3) if (this.Values.Length == 3)
@ -124,6 +155,7 @@ namespace TJAPlayer3
return (false, CLangManager.LangInstance.GetString(90005) + this.Condition + " requires " + this.RequiredArgCount.ToString() + " values."); return (false, CLangManager.LangInstance.GetString(90005) + this.Condition + " requires " + this.RequiredArgCount.ToString() + " values.");
case "sp": case "sp":
case "sg": case "sg":
case "sc":
if (this.Values.Length % this.RequiredArgCount == 0 if (this.Values.Length % this.RequiredArgCount == 0
&& this.Reference.Length == this.Values.Length / this.RequiredArgCount) && this.Reference.Length == this.Values.Length / this.RequiredArgCount)
return tConditionMet(new int[] { tGetCountChartsPassingCondition(player) }, screen); return tConditionMet(new int[] { tGetCountChartsPassingCondition(player) }, screen);
@ -162,12 +194,19 @@ namespace TJAPlayer3
case "cs": case "cs":
case "cm": case "cm":
return (false, CLangManager.LangInstance.GetString(90000)); return (false, CLangManager.LangInstance.GetString(90000));
case "ce":
case "tp":
case "ap":
case "aw":
bool fulfiled = this.tValueRequirementMet(inputValues[0], this.Values[0]);
return (fulfiled, "");
case "dp": case "dp":
case "lp": case "lp":
bool fulfiled = this.tValueRequirementMet(inputValues[0], this.Values[2]); fulfiled = this.tValueRequirementMet(inputValues[0], this.Values[2]);
return (fulfiled, ""); return (fulfiled, "");
case "sp": case "sp":
case "sg": case "sg":
case "sc":
fulfiled = this.tValueRequirementMet(inputValues[0], this.Reference.Length); fulfiled = this.tValueRequirementMet(inputValues[0], this.Reference.Length);
return (fulfiled, ""); return (fulfiled, "");
} }
@ -313,6 +352,24 @@ namespace TJAPlayer3
if (_satifsiedCount >= _songCount) _count++; if (_satifsiedCount >= _songCount) _count++;
} }
return _count; return _count;
case "sc":
_count = 0;
for (int i = 0; i < this.Values.Length / this.RequiredArgCount; i++)
{
int _base = i * this.RequiredArgCount;
string _charterName = this.Reference[i];
int _songCount = this.Values[_base];
_aimedStatus = this.Values[_base + 1];
int _satifsiedCount = 0;
if (_aimedStatus == (int)EClearStatus.NONE) _satifsiedCount = chartStats.CharterPlays.TryGetValue(_charterName, out var value) ? value : 0;
else if (_aimedStatus <= (int)EClearStatus.CLEAR) _satifsiedCount = chartStats.CharterClears.TryGetValue(_charterName, out var value) ? value : 0;
else if (_aimedStatus == (int)EClearStatus.FC) _satifsiedCount = chartStats.CharterFCs.TryGetValue(_charterName, out var value) ? value : 0;
else _satifsiedCount = chartStats.CharterPerfects.TryGetValue(_charterName, out var value) ? value : 0;
if (_satifsiedCount >= _songCount) _count++;
}
return _count;
} }
return -1; return -1;
} }

View File

@ -655,7 +655,9 @@ namespace TJAPlayer3
for (int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++) for (int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++)
{ {
if (this.nEarnedMedalsCount[i] > 0) if (TJAPlayer3.ConfigIni.bAutoPlay[i] || TJAPlayer3.ConfigIni.bAIBattleMode && i == 1) continue;
if (this.nEarnedMedalsCount[i] > 0)
mqModals.tAddModal( mqModals.tAddModal(
new Modal( new Modal(
Modal.EModalType.Coin, Modal.EModalType.Coin,