跳到内容

解锁条件(unlocks)格式:修订间差异

添加722字节 、​ 2023年2月4日 (星期六)
使用代码高亮
(使用代码高亮)
第8行: 第8行:


== 总论 ==
== 总论 ==
 文件在\assets\songs下
 文件在<code>\assets\songs</code>


 打开文件大概是这样的画风:
 打开文件大概是这样的画风:


{
<syntaxhighlight lang="json">
{
   "unlocks": [
   "unlocks": [
    {
    {
第24行: 第25行:
    …
    …
   ]
   ]
}
}
</syntaxhighlight>


 整个文件以一个大括号和一个 ”unlocks” 字符串开头,大体结构如下
 整个文件以一个大括号和一个<code>unlocks</code> 字符串开头,大体结构如下


{
<syntaxhighlight lang="json">
{
  "unlocks":[
  "unlocks":[
//all contents…
  //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。