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",
|
"condition": "tp",
|
||||||
"type": "me",
|
"type": "me",
|
||||||
"values": [
|
"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));
|
Int64 roundedDifficulty = Math.Max((int)Difficulty.Easy, Math.Min((int)Difficulty.Total - 1, record.ChartDifficulty));
|
||||||
if (roundedDifficulty <= (int)Difficulty.Edit)
|
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 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));
|
Int64 roundedClearStatus = Math.Max((int)EClearStatus.NONE, Math.Min((int)EClearStatus.PERFECT, record.ClearStatus + 1));
|
||||||
|
|
||||||
|
@ -33,7 +33,7 @@ namespace TJAPlayer3
|
|||||||
connection.Open();
|
connection.Open();
|
||||||
|
|
||||||
|
|
||||||
// Get nameplates
|
// Get songs info
|
||||||
var command = connection.CreateCommand();
|
var command = connection.CreateCommand();
|
||||||
command.CommandText =
|
command.CommandText =
|
||||||
@$"
|
@$"
|
||||||
|
@ -3,6 +3,7 @@ using System.Reflection;
|
|||||||
using System.ArrayExtensions;
|
using System.ArrayExtensions;
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
|
using TJAPlayer3;
|
||||||
|
|
||||||
// https://github.com/Burtsev-Alexey/net-object-deep-copy/blob/master/ObjectExtensions.cs
|
// 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)
|
public static double[] ParseComplex(this string input)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
@ -227,7 +246,7 @@ namespace System
|
|||||||
}
|
}
|
||||||
catch (Exception ex)
|
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
|
return new double[] { 0, 0 }; // Return default value in case of error
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -46,7 +46,7 @@ namespace TJAPlayer3
|
|||||||
new Modal(
|
new Modal(
|
||||||
Modal.EModalType.Character,
|
Modal.EModalType.Character,
|
||||||
HRarity.tRarityToModalInt(metadata.Rarity),
|
HRarity.tRarityToModalInt(metadata.Rarity),
|
||||||
_npvKey
|
metadata.Name
|
||||||
),
|
),
|
||||||
_player);
|
_player);
|
||||||
|
|
||||||
|
@ -50,7 +50,7 @@ namespace TJAPlayer3
|
|||||||
new Modal(
|
new Modal(
|
||||||
Modal.EModalType.Puchichara,
|
Modal.EModalType.Puchichara,
|
||||||
HRarity.tRarityToModalInt(metadata.Rarity),
|
HRarity.tRarityToModalInt(metadata.Rarity),
|
||||||
_npvKey
|
metadata.Name
|
||||||
),
|
),
|
||||||
_player);
|
_player);
|
||||||
|
|
||||||
|
@ -1837,107 +1837,6 @@ namespace TJAPlayer3
|
|||||||
|
|
||||||
if (!bAddedToRecentlyPlayedSongs)
|
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
|
// Song added to recently added songs here
|
||||||
|
|
||||||
TJAPlayer3.RecentlyPlayedSongs.tAddChart(TJAPlayer3.stageSongSelect.rChoosenSong.uniqueId.data.id);
|
TJAPlayer3.RecentlyPlayedSongs.tAddChart(TJAPlayer3.stageSongSelect.rChoosenSong.uniqueId.data.id);
|
||||||
|