「解锁条件(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難度特殊名稱