1
0
mirror of synced 2024-11-30 18:24:32 +01:00

Fix sp unlockables and Kernschmelze 256 uniqueID

This commit is contained in:
0auBSQ 2024-06-23 06:32:16 +09:00
parent 58878a43c5
commit cc8cd25ebc
16 changed files with 78 additions and 25 deletions

View File

@ -1,4 +1,4 @@
{ {
"id": "h4HQFxFFIVo5F7SuBGf8eWfHeXsmZQDkg9JG7IOI79zutvCrIa6l2L0FfQlrgPpx", "id": "kernschmelzefunkyzukin",
"url": "" "url": ""
} }

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

View File

@ -22,3 +22,7 @@
21 - OpTk Yellow (Roll) 21 - OpTk Yellow (Roll)
22 - Bol white 22 - Bol white
23 - Saturated blue 23 - Saturated blue
24 - Saturated green
25 - OpTk Chapter I
26 - OpTk Chapter II
27 - OpTk Chapter III

View File

@ -23,6 +23,7 @@ namespace TJAPlayer3
["tp"] = 1, ["tp"] = 1,
["ap"] = 1, ["ap"] = 1,
["aw"] = 1, ["aw"] = 1,
["ig"] = 0,
}; };
public class CUnlockConditions public class CUnlockConditions
@ -110,7 +111,7 @@ namespace TJAPlayer3
* tp : "Total plays", 1 value : [Total playcount] * tp : "Total plays", 1 value : [Total playcount]
* ap : "AI battle plays", 1 value : [AI battle playcount] * ap : "AI battle plays", 1 value : [AI battle playcount]
* aw : "AI battle wins", 1 value : [AI battle wins count] * aw : "AI battle wins", 1 value : [AI battle wins count]
* * ig : "Impossible to Get", (not recommanded) used to be able to have content in database that is impossible to unlock, no values
* *
*/ */
public (bool, string) tConditionMetWrapper(int player, EScreen screen = EScreen.MyRoom) public (bool, string) tConditionMetWrapper(int player, EScreen screen = EScreen.MyRoom)
@ -161,7 +162,8 @@ namespace TJAPlayer3
return tConditionMet(new int[] { tGetCountChartsPassingCondition(player) }, screen); return tConditionMet(new int[] { tGetCountChartsPassingCondition(player) }, screen);
else else
return (false, CLangManager.LangInstance.GetString(90005) + this.Condition + " requires (" + this.RequiredArgCount.ToString() + " * n) values and n references."); return (false, CLangManager.LangInstance.GetString(90005) + this.Condition + " requires (" + this.RequiredArgCount.ToString() + " * n) values and n references.");
case "ig":
return (false, "");
} }
return (false, CLangManager.LangInstance.GetString(90000)); return (false, CLangManager.LangInstance.GetString(90000));
@ -248,12 +250,17 @@ namespace TJAPlayer3
if (this.Values.Length < this.RequiredArgCount) if (this.Values.Length < this.RequiredArgCount)
return (CLangManager.LangInstance.GetString(90005) + this.Condition + " requires " + this.RequiredArgCount.ToString() + " values."); return (CLangManager.LangInstance.GetString(90005) + this.Condition + " requires " + this.RequiredArgCount.ToString() + " values.");
// Only the player loaded as 1P can check unlockables in real time
var SaveData = TJAPlayer3.SaveFileInstances[TJAPlayer3.SaveFile].data;
switch (this.Condition) switch (this.Condition)
{ {
case "ch": case "ch":
return (CLangManager.LangInstance.GetString(90002) + this.Values[0]); return CLangManager.LangInstance.GetString(90002).SafeFormat(this.Values[0]);
case "cs": case "cs":
return (CLangManager.LangInstance.GetString(90001)); // Will be buyable later from the randomized shop return (CLangManager.LangInstance.GetString(90001)); // Will be buyable later from the randomized shop
case "ce":
return CLangManager.LangInstance.GetString(90006).SafeFormat(this.Values[0]);
} }
return (CLangManager.LangInstance.GetString(90000)); return (CLangManager.LangInstance.GetString(90000));
} }
@ -316,7 +323,7 @@ namespace TJAPlayer3
{ {
string key = _songId + _aimedDifficulty.ToString(); string key = _songId + _aimedDifficulty.ToString();
var _cht = bpDistinctCharts.TryGetValue(key, out var value) ? value : null; var _cht = bpDistinctCharts.TryGetValue(key, out var value) ? value : null;
if (_cht != null && _cht.ClearStatus >= _aimedStatus) _count++; if (_cht != null && _cht.ClearStatus + 1 >= _aimedStatus) _count++;
} }
else if (_aimedDifficulty < (int)Difficulty.Easy) else if (_aimedDifficulty < (int)Difficulty.Easy)
@ -325,7 +332,7 @@ namespace TJAPlayer3
{ {
string key = _songId + diff.ToString(); string key = _songId + diff.ToString();
var _cht = bpDistinctCharts.TryGetValue(key, out var value) ? value : null; var _cht = bpDistinctCharts.TryGetValue(key, out var value) ? value : null;
if (_cht != null && _cht.ClearStatus >= _aimedStatus) if (_cht != null && _cht.ClearStatus + 1 >= _aimedStatus)
{ {
_count++; _count++;
break; break;

View File

@ -130,4 +130,21 @@ namespace System
} }
} }
// Below methods are added by 0AuBSQ
public static class StringExtensions
{
public static string SafeFormat(this string format, params object?[] args)
{
try
{
return String.Format(format, args);
}
catch
{
return format;
}
}
}
} }

View File

@ -482,12 +482,37 @@ namespace TJAPlayer3
[1045] = "Extreme / Extra", [1045] = "Extreme / Extra",
[90000] = "[ERROR] Invalid condition", [90000] = "[ERROR] Invalid condition",
[90001] = "Item only avaliable at the Shop.", [90001] = "Item only avaliable at the Shop.", // cs
[90002] = "Coin price : ", [90002] = "Coin price : {0}", // ch, cs, cm
[90003] = "Item bought!", [90003] = "Item bought!",
[90004] = "Not enough coins!", [90004] = "Not enough coins!",
[90005] = "The following condition: ", [90005] = "The following condition: ",
[90006] = "Earn a total of {0} coins to unlock this item! ({1}/{0})", // ce
[90007] = "Play {0} AI battle matches to unlock this item! ({1}/{0})", // ap
[90008] = "Win {0} AI battle matches to unlock this item! ({1}/{0})", // aw
[90009] = "Play {0} songs to unlock this item! ({1}/{0})", // tp
[90010] = "{0} {1} songs on {2} difficulty to unlock this item! ({3}/{1})", // dp
[90011] = "{0} {1} songs with a star rating of {2} to unlock this item! ({3}/{1})", // lp
[91000] = "Play",
[91001] = "Get an Assisted Clear on",
[91011] = "Get at least an Assisted Clear on",
[91002] = "Get a Clear on",
[91012] = "Get at least a Clear on",
[91003] = "Get a Full Combo on",
[91013] = "Get at least a Full Combo on",
[91004] = "Get a Perfect on",
[92000] = "Easy",
[92001] = "Normal",
[92002] = "Hard",
[92003] = "Extreme",
[92004] = "Extra Extreme",
[92013] = "Extreme/Extra Extreme",
[92005] = "Tower",
[92006] = "Dan",
[900] = "Resume", [900] = "Resume",
[901] = "Restart", [901] = "Restart",
[902] = "Quit", [902] = "Quit",

View File

@ -474,7 +474,7 @@ namespace TJAPlayer3
[90000] = "[ERROR] Condicion no valida", [90000] = "[ERROR] Condicion no valida",
[90001] = "Item solamente disponible en la tienda.", [90001] = "Item solamente disponible en la tienda.",
[90002] = "Precio: ", [90002] = "Precio: {0}",
[90003] = "Item comprado!", [90003] = "Item comprado!",
[90004] = "Monedas insuficientes!", [90004] = "Monedas insuficientes!",
[90005] = "Esta condición: ", [90005] = "Esta condición: ",

View File

@ -445,7 +445,7 @@ namespace TJAPlayer3
[90000] = "[ERREUR] Condition invalide", [90000] = "[ERREUR] Condition invalide",
[90001] = "L'article n'est disponible que dans le Magasin.", [90001] = "L'article n'est disponible que dans le Magasin.",
[90002] = "Prix en jetons : ", [90002] = "Prix en jetons : {0}",
[90003] = "Article acheté !", [90003] = "Article acheté !",
[90004] = "Nombre de jetons insuffisant !", [90004] = "Nombre de jetons insuffisant !",
[90005] = "La condition suivante : ", [90005] = "La condition suivante : ",

View File

@ -553,7 +553,7 @@ namespace TJAPlayer3
[90000] = "[エラー] 無効な条件", [90000] = "[エラー] 無効な条件",
[90001] = "上記の商品はコイン商店に限りです、部屋に購入ができません。", [90001] = "上記の商品はコイン商店に限りです、部屋に購入ができません。",
[90002] = "コインの値段 : ", [90002] = "コインの値段 : {0}",
[90003] = "商品購入済み !", [90003] = "商品購入済み !",
[90004] = "コインが足りません !", [90004] = "コインが足りません !",
[90005] = "下記の条件 : ", [90005] = "下記の条件 : ",

View File

@ -481,7 +481,7 @@ namespace TJAPlayer3
[90000] = "[ERROR] Invalid condition", [90000] = "[ERROR] Invalid condition",
[90001] = "Item only avaliable at the Shop.", [90001] = "Item only avaliable at the Shop.",
[90002] = "Coin price : ", [90002] = "Coin price : {0}",
[90003] = "Item bought !", [90003] = "Item bought !",
[90004] = "Not enough coins !", [90004] = "Not enough coins !",
[90005] = "The following condition : ", [90005] = "The following condition : ",

View File

@ -481,7 +481,7 @@ namespace TJAPlayer3
[90000] = "[ERROR] Invalid condition", [90000] = "[ERROR] Invalid condition",
[90001] = "Item only avaliable at the Shop.", [90001] = "Item only avaliable at the Shop.",
[90002] = "Coin price : ", [90002] = "Coin price : {0}",
[90003] = "Item bought !", [90003] = "Item bought !",
[90004] = "Not enough coins !", [90004] = "Not enough coins !",
[90005] = "The following condition : ", [90005] = "The following condition : ",

View File

@ -526,7 +526,7 @@ namespace TJAPlayer3
[90000] = "【错误】未达成条件", [90000] = "【错误】未达成条件",
[90001] = "物品仅在商店可用。", [90001] = "物品仅在商店可用。",
[90002] = "奖牌价格:", [90002] = "奖牌价格:{0}",
[90003] = "购买成功!", [90003] = "购买成功!",
[90004] = "金币不足!", [90004] = "金币不足!",
[90005] = "需求条件:", [90005] = "需求条件:",