解锁条件(unlocks)格式:修订间差异
小 (使用代码高亮) |
|||
第8行: | 第8行: | ||
== 总论 == | == 总论 == | ||
文件在\assets\songs下 | 文件在<code>\assets\songs</code> 下 | ||
打开文件大概是这样的画风: | 打开文件大概是这样的画风: | ||
<syntaxhighlight lang="json"> | |||
{ | |||
"unlocks": [ | "unlocks": [ | ||
{ | { | ||
第24行: | 第25行: | ||
… | … | ||
] | ] | ||
} | |||
</syntaxhighlight> | |||
整个文件以一个大括号和一个 | 整个文件以一个大括号和一个<code>unlocks</code> 字符串开头,大体结构如下 | ||
<syntaxhighlight lang="json"> | |||
{ | |||
"unlocks":[ | "unlocks":[ | ||
//all contents… | |||
] | ] | ||
} | |||
</syntaxhighlight> | |||
===细节解析=== | ===细节解析=== | ||
例子 | 例子 | ||
<syntaxhighlight lang="json"> | |||
{ | |||
"songId": "chronostasis", | "songId": "chronostasis", | ||
"ratingClass": 1, | "ratingClass": 1, | ||
第51行: | 第57行: | ||
} | } | ||
] | ] | ||
} | |||
</syntaxhighlight> | |||
归纳 | 归纳 | ||
<syntaxhighlight lang="json"> | |||
{ | |||
"songId": this.songname, | "songId": this.songname, | ||
"ratingClass": classNum, | "ratingClass": classNum, | ||
第64行: | 第72行: | ||
} | } | ||
] //end of condition(s) | ] //end of condition(s) | ||
} | |||
</syntaxhighlight> | |||
从上到下依次解析如下: | 从上到下依次解析如下: | ||
*songId (String):双引号包含的字符串,代表了欲限定条件的歌曲名称。'''至关重要''',所引用歌曲对应谱面文件夹也必须是id名,不能出现非ASCII字符 | *songId (String):双引号包含的字符串,代表了欲限定条件的歌曲名称。'''至关重要''',所引用歌曲对应谱面文件夹也必须是id名,不能出现非ASCII字符 | ||
第72行: | 第81行: | ||
====type 0:残片型解锁==== | ====type 0:残片型解锁==== | ||
<syntaxhighlight lang="json"> | |||
{ | |||
"type": 0, | "type": 0, | ||
"credit": frag_needed_to_unlock | "credit": frag_needed_to_unlock | ||
} | |||
</syntaxhighlight> | |||
当type取0时,为残片型解锁。玩家需要花费残片来开启当前歌曲的游玩权限。credit的取值是一个整数,代表了解锁当前难度歌曲需要花费的残片数量。 | 当type取0时,为残片型解锁。玩家需要花费残片来开启当前歌曲的游玩权限。credit的取值是一个整数,代表了解锁当前难度歌曲需要花费的残片数量。 | ||
第82行: | 第92行: | ||
====type 1:先行通过歌曲型解锁==== | ====type 1:先行通过歌曲型解锁==== | ||
<syntaxhighlight lang="json"> | |||
{ | |||
"type":1, | "type":1, | ||
"song_id": songname, | "song_id": songname, | ||
"song_difficulty": difficulty, | "song_difficulty": difficulty, | ||
"grade": gradeNum | "grade": gradeNum | ||
} | |||
</syntaxhighlight> | |||
type取1时,为先行通过歌曲型解锁,玩家需要在其前置歌曲中达到相应要求。 | type取1时,为先行通过歌曲型解锁,玩家需要在其前置歌曲中达到相应要求。 | ||
*song_id (String):指在游玩本难度的歌曲时,需要先行通过的歌曲名称,引用要求与songId相同。 | *song_id (String):指在游玩本难度的歌曲时,需要先行通过的歌曲名称,引用要求与songId相同。 | ||
第94行: | 第106行: | ||
====type 2:先行游玩歌曲型解锁==== | ====type 2:先行游玩歌曲型解锁==== | ||
<syntaxhighlight lang="json"> | |||
{ | |||
"type":2, | "type":2, | ||
"song_id": songname, | "song_id": songname, | ||
"song_difficulty": difficulty | "song_difficulty": difficulty | ||
} | |||
</syntaxhighlight> | |||
type取2时,为先行游玩歌曲型解锁,与[[#先行通过歌曲型解锁|先行通过歌曲型解锁]]类似,不过对应结果为游玩相应曲目即可。变量不再赘述。 | type取2时,为先行游玩歌曲型解锁,与[[#先行通过歌曲型解锁|先行通过歌曲型解锁]]类似,不过对应结果为游玩相应曲目即可。变量不再赘述。 | ||
====type 3:多次通过歌曲型解锁==== | ====type 3:多次通过歌曲型解锁==== | ||
<syntaxhighlight lang="json"> | |||
{ | |||
"type":3, | "type":3, | ||
"song_id": songname, | "song_id": songname, | ||
第108行: | 第123行: | ||
"grade": gradeNum, | "grade": gradeNum, | ||
"times": timesNum | "times": timesNum | ||
} | |||
</syntaxhighlight> | |||
type取3时,为多次通过歌曲型解锁,与[[#先行通过歌曲型解锁|先行通过歌曲型解锁]]类似,不过需要多次通过相应曲目并达到给定评级。 | type取3时,为多次通过歌曲型解锁,与[[#先行通过歌曲型解锁|先行通过歌曲型解锁]]类似,不过需要多次通过相应曲目并达到给定评级。 | ||
*times (int):指先行通过的歌曲需要达到限定评级的次数。 | *times (int):指先行通过的歌曲需要达到限定评级的次数。 | ||
第114行: | 第130行: | ||
====type 4:选择任务型解锁==== | ====type 4:选择任务型解锁==== | ||
<syntaxhighlight lang="json"> | |||
{ | |||
"type":4, | "type":4, | ||
"conditions": [ | "conditions": [ | ||
第124行: | 第141行: | ||
} | } | ||
] //end of condition(s) | ] //end of condition(s) | ||
} | |||
</syntaxhighlight> | |||
type取4时,为选择任务型解锁。其中conditions类似最外侧的conditions,可填入不同的condition语句组。玩家只需挑选其中任意一个任务完成即可解锁。<s>套娃警告</s> | type取4时,为选择任务型解锁。其中conditions类似最外侧的conditions,可填入不同的condition语句组。玩家只需挑选其中任意一个任务完成即可解锁。<s>套娃警告</s> | ||
====type 5:个人游玩潜力值型解锁==== | ====type 5:个人游玩潜力值型解锁==== | ||
<syntaxhighlight lang="json"> | |||
{ | |||
"type":5, | "type":5, | ||
"rating": potentialNum | "rating": potentialNum | ||
} | |||
</syntaxhighlight> | |||
type取5时,为个人游玩潜力值型解锁,玩家需要取得或超过限定的潜力值即可解锁。 | type取5时,为个人游玩潜力值型解锁,玩家需要取得或超过限定的潜力值即可解锁。 | ||
*rating (int):指限定的个人游玩潜力值乘以100后的整数。<s>可以随便填,负数都行,但即使填负数在未登录状态下本条件仍然算未达成</s> | *rating (int):指限定的个人游玩潜力值乘以100后的整数。<s>可以随便填,负数都行,但即使填负数在未登录状态下本条件仍然算未达成</s> | ||
====type 101:特殊解锁类型==== | ====type 101:特殊解锁类型==== | ||
<syntaxhighlight lang="json"> | |||
{ | |||
"type": 101, | "type": 101, | ||
"min": minNum, | "min": minNum, | ||
"max": maxNum | "max": maxNum | ||
} | |||
</syntaxhighlight> | |||
type取101时,为特殊解锁类型,通常用于解锁异象曲/终末曲。 | type取101时,为特殊解锁类型,通常用于解锁异象曲/终末曲。 | ||
*min (int):解锁异象曲或终末曲失败时获得的最小进度数。 | *min (int):解锁异象曲或终末曲失败时获得的最小进度数。 | ||
第147行: | 第168行: | ||
====type 103:搭档解锁类型==== | ====type 103:搭档解锁类型==== | ||
<syntaxhighlight lang="json"> | |||
{ | |||
"type": 103, | "type": 103, | ||
"id": int | "id": int | ||
} | |||
</syntaxhighlight> | |||
type取103时,为搭档解锁类型。目前仅有[[Aegleseeker]]出现此种解锁方式。 | type取103时,为搭档解锁类型。目前仅有[[Aegleseeker]]出现此种解锁方式。 | ||
第159行: | 第181行: | ||
====type 104:剧情解锁类型==== | ====type 104:剧情解锁类型==== | ||
<syntaxhighlight lang="json"> | |||
{ | |||
"type": 104, | "type": 104, | ||
} | |||
</syntaxhighlight> | |||
type取104时,通常不会有其他语句一起存在,但type104出现且仅出现于[[Final Verdict]]及其附加内容[[Silent Answer]]的所有曲目中(开门曲[[Defection]]除外) | type取104时,通常不会有其他语句一起存在,但type104出现且仅出现于[[Final Verdict]]及其附加内容[[Silent Answer]]的所有曲目中(开门曲[[Defection]]除外) | ||
====type 105:搭档技能解锁类型==== | ====type 105:搭档技能解锁类型==== | ||
<syntaxhighlight lang="json"> | |||
{ | |||
"type": 105, | "type": 105, | ||
"char_id": int, | "char_id": int, | ||
"awakened": boolean, | "awakened": boolean, | ||
"inverted": boolean | "inverted": boolean | ||
} | |||
</syntaxhighlight> | |||
type取105时,为搭档剧情解锁类型(存疑),目前仅有Last|Eternity<ref group="注释">不是Last或Last|Moment,从unlocks和songlist文件可以看出其实lasteternity是有别于last的另一个id,而Last|Moment只是和PRAGMATISM -RESURRECTION-一样的Beyond难度特殊名称</ref>的byd难度存在该解锁条件。 | type取105时,为搭档剧情解锁类型(存疑),目前仅有Last|Eternity<ref group="注释">不是Last或Last|Moment,从unlocks和songlist文件可以看出其实lasteternity是有别于last的另一个id,而Last|Moment只是和PRAGMATISM -RESURRECTION-一样的Beyond难度特殊名称</ref>的byd难度存在该解锁条件。 | ||
*char_id (int): 和type103的id作用相同,此处不再赘述。 | *char_id (int): 和type103的id作用相同,此处不再赘述。 | ||
第178行: | 第202行: | ||
====type 106:绑定谱面解锁类型==== | ====type 106:绑定谱面解锁类型==== | ||
<syntaxhighlight lang="json"> | |||
{ | |||
"type": 106, | "type": 106, | ||
"song_id": string, | "song_id": string, | ||
"song_difficulty": int, | "song_difficulty": int, | ||
"inverted": boolean | "inverted": boolean | ||
} | |||
</syntaxhighlight> | |||
type取106时,为绑定谱面解锁类型(存疑),目前仅有Last的byd难度(即Last|Moment)存在该解锁条件。 | type取106时,为绑定谱面解锁类型(存疑),目前仅有Last的byd难度(即Last|Moment)存在该解锁条件。 | ||
*song_id (string): 曲目的songid。 | *song_id (string): 曲目的songid。 |
2023年2月4日 (六) 21:04的版本
此页面为技术型隐藏页面 |
- 本页面内容保持孤立!
总论
文件在\assets\songs
下
打开文件大概是这样的画风:
{
"unlocks": [
{
"songId": …,
"ratingClass": …,
"conditions": [
…
],
…
},
…
]
}
整个文件以一个大括号和一个unlocks
字符串开头,大体结构如下
{
"unlocks":[
//all contents…
]
}
细节解析
例子
{
"songId": "chronostasis",
"ratingClass": 1,
"conditions": [
{
"type": 1,
"song_id": "infinityheaven",
"song_difficulty": 1,
"grade": 0
},
{
"type": 0,
"credit": 80
}
]
}
归纳
{
"songId": this.songname,
"ratingClass": classNum,
"conditions": [
{
//condition 1
},
{
//condition 2
}
] //end of condition(s)
}
从上到下依次解析如下:
- songId (String):双引号包含的字符串,代表了欲限定条件的歌曲名称。至关重要,所引用歌曲对应谱面文件夹也必须是id名,不能出现非ASCII字符
- ratingClass (int):代表了欲限定条件的歌曲难度,取值只能为0,1,2,3。0为PST难度,1为PRS难度,2为FTR难度,3为BYD难度。
- conditions:unlocks文件中的核心,以一对英文方括号包裹,每一个condition语句组以一对大括号包含。一个歌曲的一个难度可以有很多个condition语句组,它们之间以英文逗号分开。
每一个语句组中一定有一个type语句,根据type的取值不同,其中会有不同的呈现。
type 0:残片型解锁
{
"type": 0,
"credit": frag_needed_to_unlock
}
当type取0时,为残片型解锁。玩家需要花费残片来开启当前歌曲的游玩权限。credit的取值是一个整数,代表了解锁当前难度歌曲需要花费的残片数量。
在该解锁条件情况下,花费残片后可以永久解锁对应谱面,意味着解锁后其他条件不满足时对应谱面不会锁回去。
type 1:先行通过歌曲型解锁
{
"type":1,
"song_id": songname,
"song_difficulty": difficulty,
"grade": gradeNum
}
type取1时,为先行通过歌曲型解锁,玩家需要在其前置歌曲中达到相应要求。
- song_id (String):指在游玩本难度的歌曲时,需要先行通过的歌曲名称,引用要求与songId相同。
- song_difficulty (int):取值为0,1,2,与ratingClass含义相同。
- grade (int):限定先行通过的歌曲需要达到的评级,0为不限定,1为达到C,2为达到B,3为达到A,4为达到AA,5为达到EX,6为达到EX+。
type 2:先行游玩歌曲型解锁
{
"type":2,
"song_id": songname,
"song_difficulty": difficulty
}
type取2时,为先行游玩歌曲型解锁,与先行通过歌曲型解锁类似,不过对应结果为游玩相应曲目即可。变量不再赘述。
type 3:多次通过歌曲型解锁
{
"type":3,
"song_id": songname,
"song_difficulty": difficulty,
"grade": gradeNum,
"times": timesNum
}
type取3时,为多次通过歌曲型解锁,与先行通过歌曲型解锁类似,不过需要多次通过相应曲目并达到给定评级。
- times (int):指先行通过的歌曲需要达到限定评级的次数。
其他变量不再赘述。
type 4:选择任务型解锁
{
"type":4,
"conditions": [
{
//condition 1
},
{
//condition 2
}
] //end of condition(s)
}
type取4时,为选择任务型解锁。其中conditions类似最外侧的conditions,可填入不同的condition语句组。玩家只需挑选其中任意一个任务完成即可解锁。套娃警告
type 5:个人游玩潜力值型解锁
{
"type":5,
"rating": potentialNum
}
type取5时,为个人游玩潜力值型解锁,玩家需要取得或超过限定的潜力值即可解锁。
- rating (int):指限定的个人游玩潜力值乘以100后的整数。
可以随便填,负数都行,但即使填负数在未登录状态下本条件仍然算未达成
type 101:特殊解锁类型
{
"type": 101,
"min": minNum,
"max": maxNum
}
type取101时,为特殊解锁类型,通常用于解锁异象曲/终末曲。
- min (int):解锁异象曲或终末曲失败时获得的最小进度数。
- max (int):解锁异象曲或终末曲失败时获得的最大进度数。
type 103:搭档解锁类型
{
"type": 103,
"id": int
}
type取103时,为搭档解锁类型。目前仅有Aegleseeker出现此种解锁方式。
除演出曲目Aegleseeker外,在普通曲目上使用该解锁类型会导致使用对应搭档游玩结束并返回到选曲界面后切换为其他搭档后对应曲目不显示曲绘和曲目信息(但可正常选择该曲目进入游戏)。 [参考资料 1]
ID | 对应搭档 |
---|---|
-1 | 不加 |
0 | 光 |
1 | 对立 |
2 | 红 |
3 | 萨菲亚 |
4 | 忘却 |
5 | 光 & 对立(Reunion) |
6 | 对立(Axium) |
7 | 对立(Grievous Lady) |
8 | 星 |
9 | 光 & 菲希卡 |
10 | 依莉丝 |
11 | 爱托 |
12 | 露娜 |
13 | 调 |
14 | 光(Zero) |
15 | 光(Fracture) |
16 | 光(夏日) |
17 | 对立(夏日) |
18 | 对立 & 托凛 |
19 | 彩梦 |
20 | 爱托 & 露娜(冬日) |
21 | 柚梅 |
22 | 光 & 赛依娜 |
23 | 咲弥 |
24 | 对立 & 中二企鹅(Grievous Lady) |
25 | 中二企鹅 |
26 | 榛名 |
27 | 诺诺 |
28 | 潘多拉涅墨西斯(MTA-XXX) |
29 | 轩辕十四(MDA-21) |
30 | 群愿 |
31 | 光(Fantasia) |
32 | 对立(Sonata) |
33 | 兮娅 |
34 | DORO*C |
35 | 对立(Tempest) |
36 | 布丽兰特 |
37 | 依莉丝(夏日) |
38 | 咲弥(Etude) |
39 | 爱丽丝 & 坦尼尔 |
40 | 露娜 & 美亚 |
41 | 阿莱乌斯 |
42 | 希尔 |
43 | 伊莎贝尔 |
44 | 迷尔 |
45 | 拉格兰 或 白姬 |
46 | 凛可 |
47 | 奈美 |
48 | 咲弥 & 伊莉莎白 |
49 | 莉莉 |
50 | 群愿(盛夏) |
51 | 爱丽丝 & 坦尼尔(Minuet) |
52 | 对立(Elegy) |
53 | 玛莉嘉 |
54 | 维塔 |
55 | 光(Fatalis) |
56 | 咲姬 |
57 | 刹那 |
58 | 天音 |
59 | 红(冬日) |
60 | 拉格兰(Aria) |
61 | 忘却(Apophenia) |
62 | 霞玛(大~宇~宙) |
63 | 米露可(大~宇~宙) |
64 | 紫黑 |
65 | 百合咲美香 |
66 | 密特拉·泰尔塞拉 |
67 | 不来方永爱 |
68 | 奈美(暮光) |
69 | Ilith & Ivy |
70 | Hikari & Vanessa |
71 | 摩耶 |
72 | 洞烛(至高:第八探索者) |
73 | 露恩 |
74 | 维塔(Cadenza) |
75 | Ai酱 |
99 | 白姬 或 拉格兰 |
type 104:剧情解锁类型
{
"type": 104,
}
type取104时,通常不会有其他语句一起存在,但type104出现且仅出现于Final Verdict及其附加内容Silent Answer的所有曲目中(开门曲Defection除外)
type 105:搭档技能解锁类型
{
"type": 105,
"char_id": int,
"awakened": boolean,
"inverted": boolean
}
type取105时,为搭档剧情解锁类型(存疑),目前仅有Last|Eternity[注释 1]的byd难度存在该解锁条件。
- char_id (int): 和type103的id作用相同,此处不再赘述。
- awakened (boolean)、inverted (boolean): 当搭档技能为觉醒技能/未觉醒技能时是否显示该难度,true为显示,false为不显示。
type 106:绑定谱面解锁类型
{
"type": 106,
"song_id": string,
"song_difficulty": int,
"inverted": boolean
}
type取106时,为绑定谱面解锁类型(存疑),目前仅有Last的byd难度(即Last|Moment)存在该解锁条件。
- song_id (string): 曲目的songid。
- song_difficulty (int): 捆绑曲目的难度。
- inverted (boolean): 当搭档技能为未觉醒技能时是否显示该难度,true为显示,false为不显示。
参考资料
注释
- ↑ 不是Last或Last|Moment,从unlocks和songlist文件可以看出其实lasteternity是有别于last的另一个id,而Last|Moment只是和PRAGMATISM -RESURRECTION-一样的Beyond难度特殊名称