1
0
mirror of synced 2024-11-27 17:00:50 +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": ""
}

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

@ -21,4 +21,8 @@
20 - Cyan
21 - OpTk Yellow (Roll)
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,
["ap"] = 1,
["aw"] = 1,
["ig"] = 0,
};
public class CUnlockConditions
@ -110,7 +111,7 @@ namespace TJAPlayer3
* 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]
*
* 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)
@ -161,7 +162,8 @@ namespace TJAPlayer3
return tConditionMet(new int[] { tGetCountChartsPassingCondition(player) }, screen);
else
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));
@ -248,12 +250,17 @@ namespace TJAPlayer3
if (this.Values.Length < this.RequiredArgCount)
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)
{
case "ch":
return (CLangManager.LangInstance.GetString(90002) + this.Values[0]);
return CLangManager.LangInstance.GetString(90002).SafeFormat(this.Values[0]);
case "cs":
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));
}
@ -316,7 +323,7 @@ namespace TJAPlayer3
{
string key = _songId + _aimedDifficulty.ToString();
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)
@ -325,7 +332,7 @@ namespace TJAPlayer3
{
string key = _songId + diff.ToString();
var _cht = bpDistinctCharts.TryGetValue(key, out var value) ? value : null;
if (_cht != null && _cht.ClearStatus >= _aimedStatus)
if (_cht != null && _cht.ClearStatus + 1 >= _aimedStatus)
{
_count++;
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

@ -26,7 +26,7 @@ namespace TJAPlayer3
[4] = "Reload Songs",
[5] = "Reload the song folder.",
[10148] = "Reload Songs (Hard Reload)",
[10149] = "Clean the existing database and\n" +
[10149] = "Clean the existing database and\n" +
"reload the song folder from scratch.",
[6] = "Player Count",
[7] = "Select how many players you want to play with.\nUp to 5 players can be active at once.",
@ -160,10 +160,10 @@ namespace TJAPlayer3
[9993] = "SimpleMode",
[9994] = "Texture Loading Type:\n" +
"Freeze on startup disappears\n" +
"Turn this option off if some textures turn black\n" +
"This change will take effect after restarting OpenTaiko\n",
[9995] = "ASync Texture Loading",
"Freeze on startup disappears\n" +
"Turn this option off if some textures turn black\n" +
"This change will take effect after restarting OpenTaiko\n",
[9995] = "ASync Texture Loading",
[9996] = "Drawing Method:\n" +
"Select from either OpenGL,\n" +
@ -306,8 +306,8 @@ namespace TJAPlayer3
[10124] = "Use Extreme/Extra Transitions",
[10125] = "Play a skin-defined animation\nwhile switching between\nExtreme & Extra.",
[10126] = "Always use normal gauge",
[10127] = "Always use normal gauge",
[10126] = "Always use normal gauge",
[10127] = "Always use normal gauge",
[10150] = "Video Playback Display Mode",
[10151] = "Change how videos are displayed\nin the background.",
@ -482,11 +482,36 @@ namespace TJAPlayer3
[1045] = "Extreme / Extra",
[90000] = "[ERROR] Invalid condition",
[90001] = "Item only avaliable at the Shop.",
[90002] = "Coin price : ",
[90003] = "Item bought !",
[90004] = "Not enough coins !",
[90005] = "The following condition : ",
[90001] = "Item only avaliable at the Shop.", // cs
[90002] = "Coin price : {0}", // ch, cs, cm
[90003] = "Item bought!",
[90004] = "Not enough coins!",
[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",
[901] = "Restart",

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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