1
0
mirror of synced 2025-02-17 19:09:25 +01:00

Meijin + extra stuff

This commit is contained in:
0auBSQ 2023-06-06 20:13:25 +09:00
parent bccc437e4d
commit 509c885c9a
31 changed files with 1440 additions and 322 deletions

View File

@ -4,312 +4,312 @@ using System.Text;
namespace FDK
{
/// <summary>
/// 一定間隔で単純増加する整数(カウント値)を扱う。
/// </summary>
/// <remarks>
/// ○使い方
/// 1.CCounterの変数をつくる。
/// 2.CCounterを生成
/// ctCounter = new CCounter( 0, 3, 10, CDTXMania.Timer );
/// 3.進行メソッドを使用する。
/// 4.ウマー。
///
/// double値を使う場合、t進行db、t進行LoopDbを使うこと。
/// また、double版では間隔の値はミリ秒単位ではなく、通常の秒単位になります。
/// </remarks>
public class CCounter
{
public bool b開始した
{
get;
set;
}
// 値プロパティ
public float n開始値
{
get;
private set;
}
public float n終了値
{
get;
set;
}
public int n現在の値
{
get;
set;
}
public double _n間隔
{
get
{
return this.n間隔;
}
set
{
this.n間隔 = value >= 0 ? value : value * -1;
}
}
public float n現在の経過時間ms
{
get;
set;
}
// 状態プロパティ
public bool b進行中
{
get { return (this.n現在の経過時間ms != -1); }
}
public bool b停止中
{
get { return !this.b進行中; }
}
public bool b終了値に達した
{
get { return (this.n現在の値 >= this.n終了値); }
}
public bool b終了値に達してない
{
get { return !this.b終了値に達した; }
}
// コンストラクタ
public CCounter()
{
this.timer = null;
this.n開始値 = 0;
this.n終了値 = 0;
this.n現在の値 = 0;
this.n現在の値 = 0;
this.n現在の経過時間ms = CSoundTimer.n未使用;
}
/// <summary>生成と同時に開始する。</summary>
public CCounter(float n開始値, float n終了値, float n間隔ms, CTimer timer)
: this()
{
this.t開始(n開始値, n終了値, n間隔ms, timer);
}
/// <summary>生成と同時に開始する。(double版)</summary>
public CCounter(double db開始値, double db終了値, double db間隔, CSoundTimer timer)
: this()
{
this.t開始(db開始値, db終了値, db間隔 * 1000.0f, timer);
}
// 状態操作メソッド
/// <summary>
/// カウントを開始する。
/// </summary>
/// <param name="n開始値">最初のカウント値。</param>
/// <param name="n終了値">最後のカウント値。</param>
/// <param name="n間隔ms">カウント値を1増加させるのにかける時間(ミリ秒単位)。</param>
/// <param name="timer">カウントに使用するタイマ。</param>
public void t開始(float n開始値, float n終了値, float n間隔ms, CTimer timer)
{
this.n開始値 = n開始値;
this.n終了値 = n終了値;
this._n間隔 = n間隔ms;
this.timer = timer;
this.n現在の経過時間ms = this.timer.n現在時刻;
this.n現在の値 = (int)n開始値;
this.b開始した = true;
}
/// <summary>
/// カウントを開始する。(double版)
/// </summary>
/// <param name="db開始値">最初のカウント値。</param>
/// <param name="db終了値">最後のカウント値。</param>
/// <param name="db間隔">カウント値を1増加させるのにかける時間(秒単位)。</param>
/// <param name="timer">カウントに使用するタイマ。</param>
public void t開始(double db開始値, double db終了値, double db間隔, CSoundTimer timer)
{
this.n開始値 = (float)db開始値;
this.n終了値 = (float)db終了値;
this._n間隔 = db間隔;
this.timerdb = timer;
this.n現在の経過時間ms = (float)this.timerdb.dbシステム時刻;
this.n現在の値 = (int)db開始値;
this.b開始した = true;
}
/// <summary>
/// 前回の t進行() の呼び出しからの経過時間をもとに、必要なだけカウント値を増加させる。
/// カウント値が終了値に達している場合は、それ以上増加しない(終了値を維持する)。
/// </summary>
public void t進行()
{
if ((this.timer != null) && (this.n現在の経過時間ms != CTimer.n未使用))
{
long num = this.timer.n現在時刻;
if (num < this.n現在の経過時間ms)
this.n現在の経過時間ms = num;
while ((num - this.n現在の経過時間ms) >= this.n間隔)
{
if (++this.n現在の値 > this.n終了値)
this.n現在の値 = (int)this.n終了値;
this.n現在の経過時間ms += (float)this.n間隔;
}
}
}
/// <summary>
/// 前回の t進行() の呼び出しからの経過時間をもとに、必要なだけカウント値を増加させる。
/// カウント値が終了値に達している場合は、それ以上増加しない(終了値を維持する)。
/// </summary>
public void t進行db()
{
if ((this.timerdb != null) && (this.n現在の経過時間ms != CSoundTimer.n未使用))
{
double num = this.timerdb.n現在時刻;
if (num < this.n現在の経過時間ms)
this.n現在の経過時間ms = (float)num;
while ((num - this.n現在の経過時間ms) >= this.n間隔)
{
if (++this.n現在の値 > this.n終了値)
this.n現在の値 = (int)this.n終了値;
this.n現在の経過時間ms += (float)this.n間隔;
}
}
}
/// <summary>
/// 前回の t進行Loop() の呼び出しからの経過時間をもとに、必要なだけカウント値を増加させる。
/// カウント値が終了値に達している場合は、次の増加タイミングで開始値に戻る(値がループする)。
/// </summary>
public void t進行Loop()
{
if ((this.timer != null) && (this.n現在の経過時間ms != CTimer.n未使用))
{
long num = this.timer.n現在時刻;
if (num < this.n現在の経過時間ms)
this.n現在の経過時間ms = num;
while ((num - this.n現在の経過時間ms) >= this.n間隔)
{
if (++this.n現在の値 > this.n終了値)
this.n現在の値 = (int)this.n開始値;
this.n現在の経過時間ms += (float)this.n間隔;
}
}
}
/// <summary>
/// 前回の t進行Loop() の呼び出しからの経過時間をもとに、必要なだけカウント値を増加させる。
/// カウント値が終了値に達している場合は、次の増加タイミングで開始値に戻る(値がループする)。
/// </summary>
public void t進行LoopDb()
{
if ((this.timerdb != null) && (this.n現在の経過時間ms != CSoundTimer.n未使用))
{
double num = this.timerdb.n現在時刻;
if (num < this.n現在の経過時間ms)
this.n現在の経過時間ms = (float)num;
while ((num - this.n現在の経過時間ms) >= this.n間隔)
{
if (++this.n現在の値 > this.n終了値)
this.n現在の値 = (int)this.n開始値;
this.n現在の経過時間ms += (float)this.n間隔;
}
}
}
/// <summary>
/// カウントを停止する。
/// これ以降に t進行() や t進行Loop() を呼び出しても何も処理されない。
/// </summary>
public void t停止()
{
this.n現在の経過時間ms = CTimer.n未使用;
}
public void t間隔値変更(double Value)
/// <summary>
/// 一定間隔で単純増加する整数(カウント値)を扱う。
/// </summary>
/// <remarks>
/// ○使い方
/// 1.CCounterの変数をつくる。
/// 2.CCounterを生成
/// ctCounter = new CCounter( 0, 3, 10, CDTXMania.Timer );
/// 3.進行メソッドを使用する。
/// 4.ウマー。
///
/// double値を使う場合、t進行db、t進行LoopDbを使うこと。
/// また、double版では間隔の値はミリ秒単位ではなく、通常の秒単位になります。
/// </remarks>
public class CCounter
{
public bool b開始した
{
this._n間隔 = Value;
get;
set;
}
// 値プロパティ
public double n開始値
{
get;
private set;
}
public double n終了値
{
get;
set;
}
public int n現在の値
{
get;
set;
}
// その他
public double _n間隔
{
get
{
return this.n間隔;
}
set
{
this.n間隔 = value >= 0 ? value : value * -1;
}
}
#region [ ]
//-----------------
public double n現在の経過時間ms
{
get;
set;
}
// 状態プロパティ
/// <summary>
/// <para>「bキー押下」引数が true の間中、「tキー処理」デリゲート引数を呼び出す。</para>
/// <para>ただし、2回目の呼び出しは1回目から 200ms の間を開けてから行い、3回目以降の呼び出しはそれぞれ 30ms の間隔で呼び出す。</para>
/// <para>「bキー押下」が false の場合は何もせず、呼び出し回数を 0 にリセットする。</para>
/// </summary>
/// <param name="bキー押下">キーが押下されている場合は true。</param>
/// <param name="tキー処理">キーが押下されている場合に実行する処理。</param>
public void tキー反復(bool bキー押下, DGキー処理 tキー処理)
{
const int n1回目 = 0;
const int n2回目 = 1;
const int n3回目以降 = 2;
public bool b進行中
{
get { return (this.n現在の経過時間ms != -1); }
}
public bool b停止中
{
get { return !this.b進行中; }
}
public bool b終了値に達した
{
get { return (this.n現在の値 >= this.n終了値); }
}
public bool b終了値に達してない
{
get { return !this.b終了値に達した; }
}
if (bキー押下)
{
switch (this.n現在の値)
{
case n1回目:
// コンストラクタ
tキー処理();
this.n現在の値 = n2回目;
this.n現在の経過時間ms = this.timer.n現在時刻;
return;
public CCounter()
{
this.timer = null;
this.n開始値 = 0;
this.n終了値 = 0;
this.n現在の値 = 0;
this.n現在の値 = 0;
this.n現在の経過時間ms = CSoundTimer.n未使用;
}
case n2回目:
/// <summary>生成と同時に開始する。</summary>
public CCounter(double n開始値, double n終了値, double n間隔ms, CTimer timer)
: this()
{
this.t開始(n開始値, n終了値, n間隔ms, timer);
}
if ((this.timer.n現在時刻 - this.n現在の経過時間ms) > 200)
{
tキー処理();
this.n現在の経過時間ms = this.timer.n現在時刻;
this.n現在の値 = n3回目以降;
}
return;
/// <summary>生成と同時に開始する。(double版)</summary>
public CCounter(double db開始値, double db終了値, double db間隔, CSoundTimer timer)
: this()
{
this.t開始(db開始値, db終了値, db間隔 * 1000.0f, timer);
}
case n3回目以降:
if ((this.timer.n現在時刻 - this.n現在の経過時間ms) > 30)
{
tキー処理();
this.n現在の経過時間ms = this.timer.n現在時刻;
}
return;
}
}
else
{
this.n現在の値 = n1回目;
}
}
public delegate void DGキー処理();
// 状態操作メソッド
//-----------------
#endregion
/// <summary>
/// カウントを開始する。
/// </summary>
/// <param name="n開始値">最初のカウント値。</param>
/// <param name="n終了値">最後のカウント値。</param>
/// <param name="n間隔ms">カウント値を1増加させるのにかける時間(ミリ秒単位)。</param>
/// <param name="timer">カウントに使用するタイマ。</param>
public void t開始(double n開始値, double n終了値, double n間隔ms, CTimer timer)
{
this.n開始値 = n開始値;
this.n終了値 = n終了値;
this._n間隔 = n間隔ms;
this.timer = timer;
this.n現在の経過時間ms = this.timer.n現在時刻;
this.n現在の値 = (int)n開始値;
this.b開始した = true;
}
#region [ private ]
//-----------------
private CTimer timer;
private CSoundTimer timerdb;
private double n間隔;
//-----------------
#endregion
}
/// <summary>
/// カウントを開始する。(double版)
/// </summary>
/// <param name="db開始値">最初のカウント値。</param>
/// <param name="db終了値">最後のカウント値。</param>
/// <param name="db間隔">カウント値を1増加させるのにかける時間(秒単位)。</param>
/// <param name="timer">カウントに使用するタイマ。</param>
public void t開始(double db開始値, double db終了値, double db間隔, CSoundTimer timer)
{
this.n開始値 = db開始値;
this.n終了値 = db終了値;
this._n間隔 = db間隔;
this.timerdb = timer;
this.n現在の経過時間ms = this.timerdb.dbシステム時刻;
this.n現在の値 = (int)db開始値;
this.b開始した = true;
}
/// <summary>
/// 前回の t進行() の呼び出しからの経過時間をもとに、必要なだけカウント値を増加させる。
/// カウント値が終了値に達している場合は、それ以上増加しない(終了値を維持する)。
/// </summary>
public void t進行()
{
if ((this.timer != null) && (this.n現在の経過時間ms != CTimer.n未使用))
{
long num = this.timer.n現在時刻;
if (num < this.n現在の経過時間ms)
this.n現在の経過時間ms = num;
while ((num - this.n現在の経過時間ms) >= this.n間隔)
{
if (++this.n現在の値 > this.n終了値)
this.n現在の値 = (int)this.n終了値;
this.n現在の経過時間ms += this.n間隔;
}
}
}
/// <summary>
/// 前回の t進行() の呼び出しからの経過時間をもとに、必要なだけカウント値を増加させる。
/// カウント値が終了値に達している場合は、それ以上増加しない(終了値を維持する)。
/// </summary>
public void t進行db()
{
if ((this.timerdb != null) && (this.n現在の経過時間ms != CSoundTimer.n未使用))
{
double num = this.timerdb.n現在時刻;
if (num < this.n現在の経過時間ms)
this.n現在の経過時間ms = num;
while ((num - this.n現在の経過時間ms) >= this.n間隔)
{
if (++this.n現在の値 > this.n終了値)
this.n現在の値 = (int)this.n終了値;
this.n現在の経過時間ms += this.n間隔;
}
}
}
/// <summary>
/// 前回の t進行Loop() の呼び出しからの経過時間をもとに、必要なだけカウント値を増加させる。
/// カウント値が終了値に達している場合は、次の増加タイミングで開始値に戻る(値がループする)。
/// </summary>
public void t進行Loop()
{
if ((this.timer != null) && (this.n現在の経過時間ms != CTimer.n未使用))
{
long num = this.timer.n現在時刻;
if (num < this.n現在の経過時間ms)
this.n現在の経過時間ms = num;
while ((num - this.n現在の経過時間ms) >= this.n間隔)
{
if (++this.n現在の値 > this.n終了値)
this.n現在の値 = (int)this.n開始値;
this.n現在の経過時間ms += this.n間隔;
}
}
}
/// <summary>
/// 前回の t進行Loop() の呼び出しからの経過時間をもとに、必要なだけカウント値を増加させる。
/// カウント値が終了値に達している場合は、次の増加タイミングで開始値に戻る(値がループする)。
/// </summary>
public void t進行LoopDb()
{
if ((this.timerdb != null) && (this.n現在の経過時間ms != CSoundTimer.n未使用))
{
double num = this.timerdb.n現在時刻;
if (num < this.n現在の経過時間ms)
this.n現在の経過時間ms = num;
while ((num - this.n現在の経過時間ms) >= this.n間隔)
{
if (++this.n現在の値 > this.n終了値)
this.n現在の値 = (int)this.n開始値;
this.n現在の経過時間ms += this.n間隔;
}
}
}
/// <summary>
/// カウントを停止する。
/// これ以降に t進行() や t進行Loop() を呼び出しても何も処理されない。
/// </summary>
public void t停止()
{
this.n現在の経過時間ms = CTimer.n未使用;
}
public void t間隔値変更(double Value)
{
this._n間隔 = Value;
}
// その他
#region [ ]
//-----------------
/// <summary>
/// <para>「bキー押下」引数が true の間中、「tキー処理」デリゲート引数を呼び出す。</para>
/// <para>ただし、2回目の呼び出しは1回目から 200ms の間を開けてから行い、3回目以降の呼び出しはそれぞれ 30ms の間隔で呼び出す。</para>
/// <para>「bキー押下」が false の場合は何もせず、呼び出し回数を 0 にリセットする。</para>
/// </summary>
/// <param name="bキー押下">キーが押下されている場合は true。</param>
/// <param name="tキー処理">キーが押下されている場合に実行する処理。</param>
public void tキー反復(bool bキー押下, DGキー処理 tキー処理)
{
const int n1回目 = 0;
const int n2回目 = 1;
const int n3回目以降 = 2;
if (bキー押下)
{
switch (this.n現在の値)
{
case n1回目:
tキー処理();
this.n現在の値 = n2回目;
this.n現在の経過時間ms = this.timer.n現在時刻;
return;
case n2回目:
if ((this.timer.n現在時刻 - this.n現在の経過時間ms) > 200)
{
tキー処理();
this.n現在の経過時間ms = this.timer.n現在時刻;
this.n現在の値 = n3回目以降;
}
return;
case n3回目以降:
if ((this.timer.n現在時刻 - this.n現在の経過時間ms) > 30)
{
tキー処理();
this.n現在の経過時間ms = this.timer.n現在時刻;
}
return;
}
}
else
{
this.n現在の値 = n1回目;
}
}
public delegate void DGキー処理();
//-----------------
#endregion
#region [ private ]
//-----------------
private CTimer timer;
private CSoundTimer timerdb;
private double n間隔;
//-----------------
#endregion
}
}

View File

@ -26,6 +26,11 @@ namespace TJAPlayer3
return nodes.Count();
}
public static string[] tGetNodesByGenreName(string genreName)
{
return nodes.Where(_nd => _nd.Value.strジャンル == genreName).Select(_nd => _nd.Key).ToArray();
}
#region [General song dict methods]
public static C曲リストード tGetNodeFromID(string id)

View File

@ -23,8 +23,9 @@ namespace TJAPlayer3
public DBUnlockables.CUnlockConditions unlockConditions;
}
public void tGetUnlockedItems(int player, ModalQueue mq)
public void tGetUnlockedItems(int _player, ModalQueue mq)
{
int player = TJAPlayer3.GetActualPlayer(_player);
var _sf = TJAPlayer3.SaveFileInstances[player].data.NamePlateTitles;
bool _edited = false;
@ -45,7 +46,7 @@ namespace TJAPlayer3
HRarity.tRarityToModalInt(item.Value.rarity),
item.Value.nameplateInfo.cld.GetString(item.Key)
),
player);
_player);
}
}
}

View File

@ -1,4 +1,5 @@
using System.Collections.Generic;
using System;
using System.Collections.Generic;
using System.IO;
using System.Runtime.InteropServices;
using Newtonsoft.Json;
@ -11,6 +12,10 @@ namespace TJAPlayer3
{
["ch"] = 1,
["cs"] = 1,
["dp"] = 3,
["lp"] = 3,
["sp"] = 2,
["sg"] = 3,
};
public class CUnlockConditions
@ -20,9 +25,9 @@ namespace TJAPlayer3
Condition = "";
Values = new int[]{ 0 };
Type = "me";
Reference = "";
Reference = new string[] { "" };
}
public CUnlockConditions(string cd, int[] vl, string tp, string rf)
public CUnlockConditions(string cd, int[] vl, string tp, string[] rf)
{
Condition = cd;
Values = vl;
@ -42,9 +47,9 @@ namespace TJAPlayer3
[JsonProperty("type")]
public string Type;
// Referenced chart
[JsonProperty("reference")]
public string Reference;
// Referenced charts
[JsonProperty("references")]
public string[] Reference;
[JsonIgnore]
private int RequiredArgCount = -1;
@ -91,11 +96,15 @@ namespace TJAPlayer3
* cm : "Coins menu", coin requirement, payable only within the song select screen (used only for songs)
* dp : "Difficulty pass", count of difficulties pass, unlock check during the results screen, condition 3 values : [Difficulty int (0~4), Clear status (0~2), 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~2), 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)
* sg : "Song genre (performance)", count of any song pass within a specific genre folder, unlock check during the results screen, condition 3 x n values for n songs : [Song count, Difficulty int (0~4, if -1 : Any), Clear status (0~2), ...], input 1 value [Count of fullfiled genres], n references for n genres (Genre names)
*
*
*/
public (bool, string) tConditionMetWrapper(int player, EScreen screen = EScreen.MyRoom)
{
if (RequiredArgCount < 0 && RequiredArgs.ContainsKey(Condition))
RequiredArgCount = RequiredArgs[Condition];
switch (this.Condition)
{
@ -112,7 +121,13 @@ namespace TJAPlayer3
return tConditionMet(new int[] { tGetCountChartsPassingCondition(player) }, screen);
else
return (false, CLangManager.LangInstance.GetString(90005) + this.Condition + " requires " + this.RequiredArgCount.ToString() + " values.");
case "sp":
case "sg":
if (this.Values.Length % this.RequiredArgCount == 0
&& this.Reference.Length == this.Values.Length / this.RequiredArgCount)
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.");
}
@ -150,6 +165,10 @@ namespace TJAPlayer3
case "lp":
bool fulfiled = this.tValueRequirementMet(inputValues[0], this.Values[2]);
return (fulfiled, "");
case "sp":
case "sg":
fulfiled = this.tValueRequirementMet(inputValues[0], this.Reference.Length);
return (fulfiled, "");
}
}
// Trying to unlock an item from the Shop menu (If shop => check if enough coins, else => Invalid command)
@ -211,8 +230,14 @@ namespace TJAPlayer3
private int tGetCountChartsPassingCondition(int player)
{
int _aimedDifficulty = this.Values[0]; // Difficulty if dp, Level if lp
int _aimedStatus = this.Values[1];
int _aimedDifficulty = 0;
int _aimedStatus = 0;
if (this.Condition == "dp" || this.Condition == "lp")
{
_aimedDifficulty = this.Values[0]; // Difficulty if dp, Level if lp
_aimedStatus = this.Values[1];
}
var _sf = TJAPlayer3.SaveFileInstances[player].data.standardPasses;
if (_sf == null
@ -253,7 +278,67 @@ namespace TJAPlayer3
}
}
return _count;
case "sp":
_count = 0;
for (int i = 0; i < this.Values.Length / this.RequiredArgCount; i++)
{
int _base = i * this.RequiredArgCount;
string _songId = this.Reference[i];
_aimedDifficulty = this.Values[_base];
_aimedStatus = this.Values[_base + 1];
if (_sf.ContainsKey(_songId))
{
var _values = _sf[_songId].d;
if (_aimedDifficulty >= 0 && _aimedDifficulty < 4)
{
if (_values[_aimedDifficulty] >= _aimedStatus)
_count++;
}
else
{
if (Array.Exists(_values, _v => _v >= _aimedStatus))
_count++;
}
}
}
return _count;
case "sg":
_count = 0;
for (int i = 0; i < this.Values.Length / this.RequiredArgCount; i++)
{
int _base = i * this.RequiredArgCount;
string _genreName = this.Reference[i];
int _songCount = this.Values[_base];
_aimedDifficulty = this.Values[_base + 1];
_aimedStatus = this.Values[_base + 2];
int _innerCount = 0;
var _songList = CSongDict.tGetNodesByGenreName(_genreName);
foreach (string songId in _songList)
{
_innerCount = 0;
if (_sf.ContainsKey(songId))
{
var _values = _sf[songId].d;
if (_aimedDifficulty >= 0 && _aimedDifficulty < 4)
{
if (_values[_aimedDifficulty] >= _aimedStatus)
_innerCount++;
}
else
{
if (Array.Exists(_values, _v => _v >= _aimedStatus))
_innerCount++;
}
}
}
if (_innerCount >= _songCount)
_count++;
}
return _count;
}
return -1;
}

View File

@ -463,7 +463,7 @@
},
"Challenger from another world": {
"NameplateInfo": {
"iType": 6,
"iType": 11,
"Localization": {
"strings": {
"default": "Challenger from another world",
@ -485,7 +485,7 @@
},
"Unbeatable warrior": {
"NameplateInfo": {
"iType": 6,
"iType": 13,
"Localization": {
"strings": {
"default": "Unbeatable warrior",
@ -494,7 +494,7 @@
}
}
},
"Rarity": "Rare",
"Rarity": "Epic",
"UnlockCondition": {
"condition": "lp",
"type": "me",
@ -551,7 +551,7 @@
},
"Talented drummer": {
"NameplateInfo": {
"iType": 2,
"iType": 12,
"Localization": {
"strings": {
"default": "Talented drummer",
@ -560,7 +560,7 @@
}
}
},
"Rarity": "Uncommon",
"Rarity": "Rare",
"UnlockCondition": {
"condition": "lp",
"type": "me",
@ -661,7 +661,7 @@
},
"Nine sparkling stars": {
"NameplateInfo": {
"iType": 3,
"iType": 7,
"Localization": {
"strings": {
"default": "Nine sparkling stars",
@ -670,7 +670,7 @@
}
}
},
"Rarity": "Rare",
"Rarity": "Epic",
"UnlockCondition": {
"condition": "lp",
"type": "me",
@ -705,7 +705,7 @@
},
"Eternal legend": {
"NameplateInfo": {
"iType": 7,
"iType": 8,
"Localization": {
"strings": {
"default": "Eternal legend",
@ -714,7 +714,7 @@
}
}
},
"Rarity": "Epic",
"Rarity": "Legendary",
"UnlockCondition": {
"condition": "lp",
"type": "me",
@ -768,5 +768,30 @@
1
],
}
}
},
"First Secret": {
"NameplateInfo": {
"iType": 15,
"Localization": {
"strings": {
"default": "First Secret",
"fr": "Mon premier secret",
"ja": "初めての秘密"
}
}
},
"Rarity": "Common",
"UnlockCondition": {
"condition": "sg",
"type": "me",
"values": [
1,
-1,
0
],
"references": [
"Dashy's Secrets"
]
}
},
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -15,8 +15,24 @@
"format": "WAV",
},
{
"name": "None",
"path": "None\\",
"name": "'08 Dual",
"path": "'08 Dual\\",
"format": "WAV",
},
]
{
"name": "Break",
"path": "Break\\",
"format": "WAV",
},
{
"name": "Gorgeous Taiko",
"path": "Gorgeous Taiko\\",
"format": "WAV",
},
{
"name": "None",
"path": "None",
"format": "WAV",
},
]

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -6,9 +6,10 @@ BPM:190.00
OFFSET:-0.050
DEMOSTART:82.629
MAKER:Komi
LYRICS:BackWhereImFrom.vtt
COURSE:Oni
LEVEL:9
LEVEL:8
BALLOON:8
#START

View File

@ -0,0 +1,217 @@
WEBVTT Offset: 0.050;
NOTE Set 1
00:00.000 --> 00:02.684
why does the sunsets have to go forever?
00:02.684 --> 00:05.211
why does the life we live have to end forever?
00:05.211 --> 00:07.737
why does the stars stop shining on us forever?
00:07.737 --> 00:10.263
why does it fall to its knees?
NOTE Set 2
00:10.263 --> 00:12.789
why does the world look at me like a monster?
00:12.789 --> 00:15.316
why do you find my life spilled out on the altar?
00:15.316 --> 00:18.000
why did my life take such a massive corner
00:18.000 --> 00:20.842
I want it all back.
NOTE Set 3
00:42.316 --> 00:44.684
Take my hand
00:44.684 --> 00:47.053
and im gonna help you win
00:47.053 --> 00:52.105
the roundabout of life that circles through you
00:52.105 --> 00:54.632
dont cry my friend
00:54.632 --> 00:57.158
cause i am here with you
00:57.158 --> 00:59.684
theres nothing falling from the sky
00:59.684 --> 01:01.579
as big as a meteorite
NOTE Set 4
01:02.526 --> 01:05.053
In this moment
01:05.053 --> 01:07.579
you called out
01:07.579 --> 01:12.632
and i found you laying there
01:12.632 --> 01:14.842
In that moment
01:14.842 --> 01:17.447
i helped you to your feet
01:17.447 --> 01:22.105
and took you to stand on a thousand minerals at a time
NOTE Set 5
01:23.684 --> 01:26.289
You call me to help you along
01:26.289 --> 01:28.737
help you along
01:28.737 --> 01:32.842
to stand up tall
NOTE Set 6
01:33.789 --> 01:36.316
dont worry about whats gone wrong
01:36.316 --> 01:38.763
bout whats gone wrong
01:38.763 --> 01:42.947
so you can grow
NOTE Set 7
01:43.263 --> 01:44.289
I got away from you
01:44.289 --> 01:45.632
i stood you by your side
01:45.632 --> 01:46.816
i showed my heart to you
01:46.816 --> 01:48.158
you threw it out of spite
NOTE Set 8
01:48.158 --> 01:49.421
I wanna show my world
01:49.421 --> 01:50.684
to your everyone
01:50.684 --> 01:52.026
i find your mind is purged
01:52.026 --> 01:53.211
when you were young
NOTE Set 9
01:53.211 --> 01:54.474
I got away from you
01:54.474 --> 01:55.737
i stood you by your side
01:55.737 --> 01:57.000
i showed my heart to you
01:57.000 --> 01:58.263
you threw it out of spite
NOTE Set 10
01:58.263 --> 01:59.526
I wanna show my world
01:59.526 --> 02:00.789
to your everyone
02:00.789 --> 02:02.053
i find your mind is purged
02:02.053 --> 02:05.053
when you were young
02:06.789 --> 02:12.632
when you were young
NOTE Set 11
02:24.632 --> 02:27.000
In this moment
02:27.000 --> 02:29.526
you called out
02:29.526 --> 02:34.737
and i found you laying there
02:34.737 --> 02:36.947
In that moment
02:36.947 --> 02:39.474
i helped you to your feet
02:39.474 --> 02:44.211
and took you to stand on a thousand minerals at a time
NOTE Set 12
02:45.789 --> 02:48.474
You call me to help you along
02:48.474 --> 02:50.842
help you along
02:50.842 --> 02:54.947
to stand up tall
NOTE Set 13
02:55.895 --> 02:58.421
dont worry about whats gone wrong
02:58.421 --> 03:00.789
bout whats gone wrong
03:00.789 --> 03:05.053
so you can grow
NOTE Set 14
03:05.842 --> 03:08.684
You call me to help you along
03:08.684 --> 03:10.934
help you along
03:10.934 --> 03:15.158
to stand up tall
NOTE Set 15
03:16.105 --> 03:18.789
dont worry about whats gone wrong
03:18.789 --> 03:21.079
bout whats gone wrong
03:21.079 --> 03:25.263
so you can grow

View File

@ -736,7 +736,7 @@ SCOREDIFF:0
#END
COURSE:Hard
LEVEL:8
LEVEL:9
BALLOON:88,88,88,88
SCOREINIT:1150
SCOREDIFF:0

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,764 @@
// ===== Made using 0AuBSQ's Dan Chart Maker =====
TITLE:名人
BPM:230
WAVE:Slayer of..ogg
DEMOSTART:60.564
SCOREMODE:2
COURSE:Dan
LEVEL:10
BPM:230
BALLOON:2,30
EXAM1:g,100,100,m
EXAM2:jg,41,21,l
EXAM3:jb,6,2,l
DANTICK:5
DANTICKCOLOR:#ff00cd
#START
#NEXTSONG Slayer of.,Aden Mayo,,1.ogg,350,80,10,3
#BPMCHANGE 230
#MEASURE 4/4
#SCROLL 1.0
#BARLINEON
#DELAY 0.043
EXAM4:r,67,75,m
#SCROLL 0.75
30201201,
20120121,
10201201,
#SCROLL 1.1
#GOGOSTART
3011103000104010,
#SCROLL 0.75
#GOGOEND
10201201,
20120121,
10201201,
#SCROLL 1.1
#GOGOSTART
3011103022204020,
10201120,
1011202010002011,
1011202010112020,
1011202010002000,
10201120,
1011202010002011,
1011202020101110,
1021201010002210,
10201120,
1011202010002011,
1011202010112020,
1011202010002000,
10201120,
1011202010002011,
1011202020101110,
2220111040004000,
#SCROLL 1.25
1110201020102220,
4010401040101110,
#GOGOEND
#SCROLL 1.1
1000200011201020,
1000201110201020,
1000200011201020,
1000200011201120,
1000200011201020,
1000201110201020,
1120102012101020,
2010211010221020,
1000200011201020,
1000201110201020,
1000200011201020,
1110201110201120,
1000200011201020,
1000201110201020,
1010112010101121,
200100100110400100400100,
1000200011201120,
1000201110201120,
1000201110201120,
1110201011102020,
1000222011201120,
1010201120201120,
1111200011122000,
1122200022112000,
5008,
1121200011102020,
2220111021202220,
1110201120102210,
1000222011201120,
1000201120201120,
50000008,
41414140,
#GOGOSTART
1000200011201120,
1000201110201120,
1000201110201120,
1110201011102020,
1000222011201120,
1010201120201120,
1111200011122000,
1122200022112000,
5008,
1121200011102020,
2220111021202220,
1110201120102210,
1000222011201120,
1000201120201120,
50000008,
1000201110404040,
#SCROLL 0.75
1000211121112111,
2000201120002020,
1010201040104011,
2000300040112000,
#SCROLL 1.1
1121201010201020,
2110201210202020,
11211212,
2111211121212120,
1212121112122121,
2112222211111122,
1121202011202020,
21121122,
1211122111202000,
1120201110102010,
1120201010102010,
21212121,
1000200011201120,
1000201110201120,
1000201110201120,
1110201011102020,
1000222011201120,
1010201120201120,
1110202011102020,
1210202022102020,
5008,
1121200011102020,
2220111021202220,
1110201120102210,
1000222011201120,
1000201120201120,
1121221211211121,
2121121112211212,
#GOGOEND
,
,
#NEXTSONG Seismic Shake,DeBisco,,2.ogg,350,80,10,3
#BPMCHANGE 155
#MEASURE 4/4
#SCROLL 1.0
#BARLINEON
#DELAY 0.193
EXAM4:r,0,0,m
#MEASURE 4/4
1011202010201022,
1011201020102010,
2011201020102010,
2011201020
#SCROLL 3
204000,
#BPMCHANGE 310
#MEASURE 4/4
#SCROLL 1
20112122,
10112122,
#SCROLL 1.5
40
#SCROLL 1
112122,
10112122,
#SCROLL 1.5
4000
#SCROLL 1
111010102010,
#SCROLL 1.5
4000
#SCROLL 1
111010102010,
#SCROLL 1.5
40
#SCROLL 1
11
#SCROLL 1.5
40
#SCROLL 1
11,
#SCROLL 1.5
4
#SCROLL 1
222,
#SCROLL 1.5
40
#SCROLL 0.75
122121,
10122121,
1000102020102011,
11122121,
10122121,
10122121,
1000102020102011,
11122121,
10122121,
10122121,
1000102020102011,
11122121,
10122121,
10122121,
10122121,
212121212120,
#SCROLL 1.5
40
#SCROLL 0.75
222121,
12222121,
12221212,
10222121,
12222121,
12222121,
12221212,
1000202020101110,
#SCROLL 1.5
40
#SCROLL 0.75
222121,
12222121,
#SCROLL 1.5
4
#SCROLL 0.75
2221212,
10222121,
#SCROLL 1.5
40
#SCROLL 0.75
222121,
#SCROLL 1.5
40
#SCROLL 0.75
222121,
#SCROLL 1.5
40
#SCROLL 0.75
111010
#SCROLL 1.5
40
#SCROLL 0.75
111010,
212121212120,
#BPMCHANGE 155
#SCROLL 3
4,
00000004,
4,
00044040,
4,
00000004,
4,
000000000400404040404040,
#BPMCHANGE 310
#SCROLL 1.5
40
#SCROLL 0.6
202222,
20202222,
20202222,
20202222,
20202222,
02202202,
022220
#SCROLL 1.5
30,
44,
40
#SCROLL 0.75
222022,
02202022,
#SCROLL 1.5
40
#SCROLL 0.75
222022,
02222222,
#SCROLL 1.5
40
#SCROLL 0.75
220222,
#SCROLL 1.5
40
#SCROLL 0.75
220222,
#SCROLL 1.5
4111,
#SCROLL 1.43
2
#SCROLL 1.36
1
#SCROLL 1.3
2
#SCROLL 1.24
1
#SCROLL 1.18
2
#SCROLL 1.12
1
#SCROLL 1.07
2
#SCROLL 1.02
1
#SCROLL 0.97
2
#SCROLL 0.92
1
#SCROLL 0.87
20,
#SCROLL 0.75
11,
22222000,
#SCROLL 1
#GOGOSTART
12010201,
02110201,
12010201,
02110201,
12010201,
02110201,
12010201,
0020111010201010,
12010201,
02110201,
12010201,
02110201,
12010201,
02110201,
12010201,
#GOGOEND
212121212120,
#GOGOSTART
12010201,
0020101000200011,
12010201,
0020101000200012,
12010201,
0020101000200011,
12010201,
0020111010201011,
#GOGOEND
12011201,
1020001011200010,
12011201,
1020001110200010,
1020201110202011,
1020201110202011,
12211221,
#SCROLL 0.4
200200100100202020100000,
#SCROLL 1
#GOGOSTART
11211021,
11211021,
12121212,
1110202010002000,
10211021,
11211021,
10211021,
1110202010102010,
11211021,
11211021,
12121212,
1110202010002000,
10211021,
11211021,
1120202011202020,
#GOGOEND
212121212120,
#GOGOSTART
11211021,
11211021,
12121212,
1110202010002000,
10211021,
11211021,
10211021,
1110202010102010,
11211021,
11211021,
12121212,
1110202010002000,
10211021,
11211021,
33333333,
#SCROLL 0.75
#GOGOEND
212121212120,
11,
222220
#SCROLL 1
40,
#SCROLL 4
3,
,
#NEXTSONG Shockwave,Yonokid,,3.ogg,350,80,10,3
#BPMCHANGE 225
#MEASURE 4/4
#SCROLL 1.0
#BARLINEON
EXAM4:r,26,32,m
#MEASURE 8/4
#SCROLL 0.5
1010000101010010,
2020000202020000,
1010000101010010,
2020000202020000,
1010000101010010,
2020000202020000,
1010000101010010,
200000200200000200000100000100000100202020202020,
1021020102011020,
1021020102011020,
1021020102011020,
1021020102011020,
1021020102011020,
1021020102011020,
1021020102011020,
1021020102012010,
2011201120112121,
2011201121120120,
2020202120202021,
20202020202020202222222222222222,
10112010202210201021101020000000,
#GOGOSTART
100000100100100000100100200000200200200000200200200000200000200000200000200020002000200020002000,
100000101010200100202020100000101010200100100100,
100000100100100000100100200000200200200000200200200000200000200000200000200020002000200020002000,
100000000000100010001000200000100000200020002000100000100100200000100000200100200200100000000000,
100000100100100000100100200020002000200020001000200020002000200020002000200200200000100100100000,
100100101010202020202020100100100000200200100000,
100000100100100000100100200000200200200000200200200020001000200020001000200020001000200020001000,
100000100100100000100100200010001000200010001000100010001000200020002000100100100100200200200200,
#GOGOEND
1010000101010010,
2020000202020000,
1010000101010010,
2020000202020000,
100200200200100200200200100200200200100200200222,
100200200200102020202020100200200200100200220220,
100200200200100200200200100200200200100200200222,
100200200200102020202020100200200200202020101010,
200100100100200100100100200100100100200100200111,
200100100100201010101010200100100200100100220110,
200100200100200100200100200100200100200100200111,
200000200000200000200000200000200000200000200000200200200200200200200200202020202020202020202020,
102000000000200100100200000200000100200010002000,
#MEASURE 4/4
#GOGOSTART
#SCROLL 2
300334,
403040
#SCROLL 1
222222,
1011201000201120,
1011201110222050,
0000008010112020,
0010002000112000,
1111221110221022,
221221221221,
344344,
112121112121,
1011201020221020,
1111203000300060,
0008,
100000100100200000100000200020001000200200200100,
#GOGOEND
1011201110201110,
1020121011102210,
1011201110201110,
100000200000100200100000200020002000200020002000,
1011201110201110,
1020121011102210,
1011201110201110,
1020121022221111,
1011201110201110,
1020121011102210,
1011201110201110,
1020121022221110,
111212111212,
111212111212,
100020002000100020002000100200200100200200100200,
100010101000100010101000100200200100200200100200,
78
#SCROLL 2
300000,
#SCROLL 1
,
,
,
,
#NEXTSONG DON'T LOOK BACK,TFD500,,4.ogg,350,80,10,3,true
#BPMCHANGE 200
#MEASURE 4/4
#SCROLL 1.0
#BARLINEON
#DELAY 0.0095
EXAM4:r,86,95,m
#SCROLL 0.5
12121212,
#BARLINEOFF
02020202,
12121212,
02020202,
#BARLINEON
12121212,
#BARLINEOFF
02020202,
12121212,
02020202,
#SCROLL 1
#BARLINEON
1022102010201000,
12121210,
1022102010201000,
12121210,
1022102010201000,
12121210,
1022102010201000,
12121210,
11121112,
11122211,
11221122,
11222211,
11121112,
11122211,
11221122,
11222211,
3012102012212010,
02020211,
3012102012222010,
02020211,
3012102012212010,
02020211,
3012102012222010,
02020211,
1212
#SCROLL 1.25
1212,
#SCROLL 1.5
1212
#SCROLL 1.75
1212
#SCROLL 2
50000080,
#SCROLL 1
#BPMCHANGE 190
70
#BPMCHANGE 180
00
#BPMCHANGE 175
00
#BPMCHANGE 150
0
#BPMCHANGE 140
0,
#BARLINEOFF
#BPMCHANGE 130
0
#BPMCHANGE 110
0
#BPMCHANGE 90
0
#BPMCHANGE 70
0
#BPMCHANGE 200
80
#SCROLL 3
68,
#BARLINEON
#BPMCHANGE 225
#GOGOSTART
#SCROLL 1
3022102012221022,
1022102212221212,
1220102210201222,
1022102212221212,
0212102210221222,
1022102212201212,
1022102212201222,
100000100000100000100100100000100000101010101010,
1120201120201120,
1220201210201120,
1220201220201120,
2110211021112120,
1210101220201120,
2120202110202120,
1220201220201120,
100100200000100000100200100000200000202020202020,
#GOGOEND
1110201110201110,
1210201210201210,
1110201110201120,
100100200000100000200200100200200000202020202020,
1110201110201220,
1022201022201220,
200020001000200020001000200200100000200200100000,
100100200000100200200000100100200200102020202020,
1000221120102120,
1120102021120120,
100000100100200000100000200100200000202020200000,
#SCROLL 1.5
#GOGOSTART
303060806080
#SCROLL 3
6008,
#GOGOEND
#SCROLL 1
1011201022112011,
202010100000202010100000200200100000200100100000,
202020200000202020200000200200100000200100200000,
1210212021121120,
#SCROLL 0.75
10101011,
01101011,
10101110,
10111011,
11111011,
10101011,
10111111,
3330,
#SCROLL 1
1111,
1100,
#BPMCHANGE 450
#MEASURE 8/4
#SCROLL 0.5
11111111,
11110000,
#BPMCHANGE 900
#MEASURE 16/4
#SCROLL 0.25
1111111111111111,
1111111111111111,
#SCROLL 1
6,
#BPMCHANGE 225
#MEASURE 4/4
800
#SCROLL 3
4,
#GOGOSTART
#SCROLL 1
3022102012221022,
1022102212221212,
1220102210201222,
1022102212221212,
0212102210221222,
1022102212201212,
1022102212201222,
100000100000100000100100100000100000101010101010,
1120201120201120,
1220201210201120,
1220201220201120,
2110211021112120,
1210101220201120,
2120202110202120,
1220201220201120,
#GOGOEND
#BPMCHANGE 250
100100200000100000100200
#BPMCHANGE 275
100000200000202020202020,
#BPMCHANGE 300
#GOGOSTART
12121212,
12121211,
12121212,
12121211,
21121212,
1020102010111010,
12121212,
11111111,
12121212,
12121211,
1020102010201111,
12121211,
21121212,
12121211,
12121212,
1010101011101110,
3600,
0008,
44,
3,
0000000022201110,
#GOGOEND
#BPMCHANGE 75
#SCROLL 4
3,
,
,
,
#END

View File

@ -0,0 +1,4 @@
{
"id": "x8WlzLf0q1bcRR30R8eUCQiqNzGx5Q2a7NZXY1L3Li9acAPDAqjHaH5bQ1UDMcIU",
"url": ""
}