templatemoyai
@ -1,10 +0,0 @@
|
||||
{
|
||||
"name" : {
|
||||
"strings": {
|
||||
"default": "OpenTaiko-Kun",
|
||||
"ja": "OpenTaiko君"
|
||||
}
|
||||
},
|
||||
"rarity": "Common",
|
||||
"author": "Komi"
|
||||
}
|
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 24 KiB |
BIN
OpenTaiko/Global/PuchiChara/01a - OpenTaiko-Kun/Chara.xcf
Normal file
@ -0,0 +1,16 @@
|
||||
{
|
||||
"name" : {
|
||||
"strings": {
|
||||
"default": "OpenTaiko-Kun",
|
||||
"ja": "OpenTaiko君"
|
||||
}
|
||||
},
|
||||
"rarity": "Common",
|
||||
"description": {
|
||||
"strings": {
|
||||
"default": "The most basic puchichara.\nSimple but effective.",
|
||||
"ja": "一番シンプルなプチキャラ。\n単純ですが効果的。"
|
||||
}
|
||||
},
|
||||
"author": "Komi"
|
||||
}
|
@ -0,0 +1,7 @@
|
||||
{
|
||||
"condition": "ch",
|
||||
"type": "me",
|
||||
"values": [
|
||||
100,
|
||||
],
|
||||
}
|
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 23 KiB |
@ -0,0 +1,16 @@
|
||||
{
|
||||
"name" : {
|
||||
"strings": {
|
||||
"default": "OpenTaiko-Kun (Violet edition)",
|
||||
"ja": "OpenTaiko君 (バイオレット版)"
|
||||
}
|
||||
},
|
||||
"rarity": "Common",
|
||||
"description": {
|
||||
"strings": {
|
||||
"default": "The evil brother of OpenTaiko-Kun.\nBeware of the sneaky Swap notes.",
|
||||
"ja": "OpenTaiko君の邪悪な兄弟。\nこそこそなカドン音符に注意しましょう。"
|
||||
}
|
||||
},
|
||||
"author": "Komi"
|
||||
}
|
@ -1,5 +0,0 @@
|
||||
{
|
||||
"name" : "Template",
|
||||
"rarity": "Uncommon",
|
||||
"author": "[Author]",
|
||||
}
|
After Width: | Height: | Size: 56 KiB |
@ -0,0 +1,6 @@
|
||||
{
|
||||
"allpurple":false,
|
||||
"autoroll":6,
|
||||
"showadlib":false,
|
||||
"splitlane":false
|
||||
}
|
@ -0,0 +1,16 @@
|
||||
{
|
||||
"name" : {
|
||||
"strings": {
|
||||
"default": "OpenTaiko-Kun (Rich edition)",
|
||||
"ja": "OpenTaiko君 (金持ち版)"
|
||||
}
|
||||
},
|
||||
"rarity": "Common",
|
||||
"description": {
|
||||
"strings": {
|
||||
"default": "The rich brother of OpenTaiko-Kun.\nRolls over others businesses.",
|
||||
"ja": "OpenTaiko君のお金持ちな兄弟。\nコインの大部分と引き換えに連打の支援になります。"
|
||||
}
|
||||
},
|
||||
"author": "Komi"
|
||||
}
|
@ -0,0 +1,7 @@
|
||||
{
|
||||
"condition": "ce",
|
||||
"type": "me",
|
||||
"values": [
|
||||
1000
|
||||
]
|
||||
}
|
After Width: | Height: | Size: 26 KiB |
@ -0,0 +1,6 @@
|
||||
{
|
||||
"allpurple":false,
|
||||
"autoroll":0,
|
||||
"showadlib":true,
|
||||
"splitlane":false
|
||||
}
|
@ -0,0 +1,16 @@
|
||||
{
|
||||
"name" : {
|
||||
"strings": {
|
||||
"default": "OpenTaiko-Kun (Glass edition)",
|
||||
"ja": "OpenTaiko君 (グラス版)"
|
||||
}
|
||||
},
|
||||
"rarity": "Common",
|
||||
"description": {
|
||||
"strings": {
|
||||
"default": "The fragine brother of OpenTaiko-Kun.\nCan see everything, even the most invisible notes.",
|
||||
"ja": "OpenTaiko君の割れやすいな兄弟。\n何でも見えます、隠れてる音符でも。"
|
||||
}
|
||||
},
|
||||
"author": "Komi"
|
||||
}
|
@ -2,6 +2,6 @@
|
||||
"condition": "tp",
|
||||
"type": "me",
|
||||
"values": [
|
||||
1,
|
||||
],
|
||||
100
|
||||
]
|
||||
}
|
After Width: | Height: | Size: 70 KiB |
@ -0,0 +1,6 @@
|
||||
{
|
||||
"allpurple":false,
|
||||
"autoroll":0,
|
||||
"showadlib":false,
|
||||
"splitlane":true
|
||||
}
|
@ -0,0 +1,16 @@
|
||||
{
|
||||
"name" : {
|
||||
"strings": {
|
||||
"default": "OpenTaiKO-Kun & OpenTaiKO-Chan",
|
||||
"ja": "OpenTai子君とOpenTai子ちゃん"
|
||||
}
|
||||
},
|
||||
"rarity": "Common",
|
||||
"description": {
|
||||
"strings": {
|
||||
"default": "The twin siblings of OpenTaiko-kun.\nWhen one is here the other is never far away.",
|
||||
"ja": "OpenTaiko君の双子の姉弟。\n一方がここにいれば、もう一方が遠くにいることはない。"
|
||||
}
|
||||
},
|
||||
"author": "Komi"
|
||||
}
|
@ -0,0 +1,7 @@
|
||||
{
|
||||
"condition": "ap",
|
||||
"type": "me",
|
||||
"values": [
|
||||
10
|
||||
]
|
||||
}
|
@ -159,7 +159,7 @@ namespace TJAPlayer3
|
||||
Int64 roundedDifficulty = Math.Max((int)Difficulty.Easy, Math.Min((int)Difficulty.Total - 1, record.ChartDifficulty));
|
||||
if (roundedDifficulty <= (int)Difficulty.Edit)
|
||||
{
|
||||
string[] ChartersArr = record.Charter.Split(",", StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries);
|
||||
string[] ChartersArr = record.Charter.SplitByCommas();
|
||||
Int64 roundedScoreRank = Math.Max(0, Math.Min(7, record.ScoreRank + 1));
|
||||
Int64 roundedClearStatus = Math.Max((int)EClearStatus.NONE, Math.Min((int)EClearStatus.PERFECT, record.ClearStatus + 1));
|
||||
|
||||
|
@ -33,7 +33,7 @@ namespace TJAPlayer3
|
||||
connection.Open();
|
||||
|
||||
|
||||
// Get nameplates
|
||||
// Get songs info
|
||||
var command = connection.CreateCommand();
|
||||
command.CommandText =
|
||||
@$"
|
||||
|
@ -3,6 +3,7 @@ using System.Reflection;
|
||||
using System.ArrayExtensions;
|
||||
using System.Globalization;
|
||||
using System.Text.RegularExpressions;
|
||||
using TJAPlayer3;
|
||||
|
||||
// https://github.com/Burtsev-Alexey/net-object-deep-copy/blob/master/ObjectExtensions.cs
|
||||
|
||||
@ -158,6 +159,24 @@ namespace System
|
||||
}
|
||||
}
|
||||
|
||||
public static string[] SplitByCommas(this string input)
|
||||
{
|
||||
// Regular expression to split by commas, but not by escaped commas (\,)
|
||||
var pattern = @"(?<!\\),";
|
||||
var parts = Regex.Split(input, pattern);
|
||||
|
||||
// Replace escaped commas with actual commas in the parts
|
||||
for (int i = 0; i < parts.Length; i++)
|
||||
{
|
||||
parts[i] = parts[i].Replace(@"\,", ",");
|
||||
}
|
||||
|
||||
// Filter out empty strings
|
||||
var filteredParts = parts.Where(part => !string.IsNullOrEmpty(part)).ToArray();
|
||||
|
||||
return filteredParts;
|
||||
}
|
||||
|
||||
public static double[] ParseComplex(this string input)
|
||||
{
|
||||
try
|
||||
@ -227,7 +246,7 @@ namespace System
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
// Log Error
|
||||
LogNotification.PopWarning($"'{input}': Incorrect complex number formatting, defaulting to 0");
|
||||
return new double[] { 0, 0 }; // Return default value in case of error
|
||||
}
|
||||
}
|
||||
|
@ -46,7 +46,7 @@ namespace TJAPlayer3
|
||||
new Modal(
|
||||
Modal.EModalType.Character,
|
||||
HRarity.tRarityToModalInt(metadata.Rarity),
|
||||
_npvKey
|
||||
metadata.Name
|
||||
),
|
||||
_player);
|
||||
|
||||
|
@ -50,7 +50,7 @@ namespace TJAPlayer3
|
||||
new Modal(
|
||||
Modal.EModalType.Puchichara,
|
||||
HRarity.tRarityToModalInt(metadata.Rarity),
|
||||
_npvKey
|
||||
metadata.Name
|
||||
),
|
||||
_player);
|
||||
|
||||
|
@ -1837,107 +1837,6 @@ namespace TJAPlayer3
|
||||
|
||||
if (!bAddedToRecentlyPlayedSongs)
|
||||
{
|
||||
/*
|
||||
#region [ Apply new local status for song select screens ]
|
||||
//---------------------
|
||||
if (!TJAPlayer3.bコンパクトモード)
|
||||
{
|
||||
if (TJAPlayer3.stageSongSelect.nChoosenSongDifficulty[0] != (int)Difficulty.Dan && TJAPlayer3.stageSongSelect.nChoosenSongDifficulty[0] != (int)Difficulty.Tower)
|
||||
{
|
||||
#region [Update status]
|
||||
|
||||
Cスコア cScore = TJAPlayer3.stageSongSelect.r確定されたスコア;
|
||||
|
||||
for (int i = 0; i < TJAPlayer3.ConfigIni.nPlayerCount; i++)
|
||||
{
|
||||
if ((i != 1 && TJAPlayer3.ConfigIni.b太鼓パートAutoPlay[i])
|
||||
|| (i == 1 && (TJAPlayer3.ConfigIni.b太鼓パートAutoPlay[i] || TJAPlayer3.ConfigIni.bAIBattleMode)))
|
||||
continue;
|
||||
|
||||
int actualPlayer = TJAPlayer3.GetActualPlayer(i);
|
||||
|
||||
if (cScore.GPInfo[actualPlayer].nClear[TJAPlayer3.stageSongSelect.nChoosenSongDifficulty[i]] < nクリア[i])
|
||||
cScore.GPInfo[actualPlayer].nClear[TJAPlayer3.stageSongSelect.nChoosenSongDifficulty[i]] = nクリア[i];
|
||||
|
||||
if (cScore.GPInfo[actualPlayer].nScoreRank[TJAPlayer3.stageSongSelect.nChoosenSongDifficulty[i]] < nスコアランク[i])
|
||||
cScore.GPInfo[actualPlayer].nScoreRank[TJAPlayer3.stageSongSelect.nChoosenSongDifficulty[i]] = nスコアランク[i];
|
||||
|
||||
if (cScore.GPInfo[actualPlayer].nHighScore[TJAPlayer3.stageSongSelect.nChoosenSongDifficulty[i]] < (int)TJAPlayer3.stage演奏ドラム画面.actScore.Get(EInstrumentPad.DRUMS, i))
|
||||
cScore.GPInfo[actualPlayer].nHighScore[TJAPlayer3.stageSongSelect.nChoosenSongDifficulty[i]] = (int)TJAPlayer3.stage演奏ドラム画面.actScore.Get(EInstrumentPad.DRUMS, i);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
}
|
||||
else if (TJAPlayer3.stageSongSelect.nChoosenSongDifficulty[0] == (int)Difficulty.Dan)
|
||||
{
|
||||
#region [Dan update status]
|
||||
|
||||
Cスコア cスコア = TJAPlayer3.stageSongSelect.r確定されたスコア;
|
||||
|
||||
Exam.Status examStatus = TJAPlayer3.stage演奏ドラム画面.actDan.GetExamStatus(TJAPlayer3.stage結果.st演奏記録.Drums.Dan_C);
|
||||
|
||||
int clearValue = 0;
|
||||
|
||||
if (examStatus != Exam.Status.Failure)
|
||||
{
|
||||
// Red Goukaku
|
||||
clearValue += 1;
|
||||
|
||||
// Gold Goukaku
|
||||
if (examStatus == Exam.Status.Better_Success)
|
||||
clearValue += 1;
|
||||
|
||||
// Gold Iki
|
||||
if (this.st演奏記録.Drums.nMiss数 == 0)
|
||||
{
|
||||
clearValue += 2;
|
||||
|
||||
// Rainbow Iki
|
||||
if (this.st演奏記録.Drums.nGreat数 == 0)
|
||||
clearValue += 2;
|
||||
}
|
||||
}
|
||||
|
||||
int actualPlayer = TJAPlayer3.SaveFile;
|
||||
|
||||
if (!TJAPlayer3.ConfigIni.b太鼓パートAutoPlay[0])
|
||||
{
|
||||
cスコア.GPInfo[actualPlayer].nClear[0] = Math.Max(cスコア.GPInfo[actualPlayer].nClear[0], clearValue);
|
||||
|
||||
if (cスコア.GPInfo[actualPlayer].nHighScore[0] < (int)TJAPlayer3.stage演奏ドラム画面.actScore.Get(EInstrumentPad.DRUMS, 0))
|
||||
cスコア.GPInfo[actualPlayer].nHighScore[0] = (int)TJAPlayer3.stage演奏ドラム画面.actScore.Get(EInstrumentPad.DRUMS, 0);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
//cスコア.譜面情報.nクリア[0] = Math.Max(cスコア.譜面情報.nクリア[0], clearValue);
|
||||
}
|
||||
else if (TJAPlayer3.stageSongSelect.nChoosenSongDifficulty[0] == (int)Difficulty.Tower)
|
||||
{
|
||||
#region [Update Tower status]
|
||||
|
||||
Cスコア cスコア = TJAPlayer3.stageSongSelect.r確定されたスコア;
|
||||
int actualPlayer = TJAPlayer3.SaveFile;
|
||||
|
||||
int tmpClear = GetTowerScoreRank();
|
||||
|
||||
if (!TJAPlayer3.ConfigIni.b太鼓パートAutoPlay[0])
|
||||
{
|
||||
cスコア.GPInfo[actualPlayer].nClear[0] = Math.Max(cスコア.GPInfo[actualPlayer].nClear[0], tmpClear);
|
||||
cスコア.GPInfo[actualPlayer].nScoreRank[0] = Math.Max(cスコア.GPInfo[actualPlayer].nScoreRank[0], CFloorManagement.LastRegisteredFloor);
|
||||
|
||||
if (cスコア.GPInfo[actualPlayer].nHighScore[0] < (int)TJAPlayer3.stage演奏ドラム画面.actScore.Get(EInstrumentPad.DRUMS, 0))
|
||||
cスコア.GPInfo[actualPlayer].nHighScore[0] = (int)TJAPlayer3.stage演奏ドラム画面.actScore.Get(EInstrumentPad.DRUMS, 0);
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
//---------------------
|
||||
#endregion
|
||||
*/
|
||||
|
||||
// Song added to recently added songs here
|
||||
|
||||
TJAPlayer3.RecentlyPlayedSongs.tAddChart(TJAPlayer3.stageSongSelect.rChoosenSong.uniqueId.data.id);
|
||||
|