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

添加4,917字节 、​ 2024年3月10日 (星期日)
无编辑摘要
(添加搭档解锁类型补充说明的参考资料)
无编辑摘要
(未显示6个用户的12个中间版本)
第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字符
*ratingClass (int):代表了欲限定条件的歌曲难度,取值只能为0,1,2。0为PST难度,1为PRS难度,2为FTR难度。
*ratingClass (int):代表了欲限定条件的歌曲难度,取值只能为0,1,2 ,3 。0为PST难度,1为PRS难度,2为FTR 难度,3为BYD 难度。
*conditions:unlocks文件中的核心,以一对英文方括号包裹,每一个condition语句组以一对大括号包含。一个歌曲的一个难度可以有很多个condition语句组,它们之间以英文逗号分开。
*conditions:unlocks文件中的核心,以一对英文方括号包裹,每一个condition语句组以一对大括号包含。一个歌曲的一个难度可以有很多个condition语句组,它们之间以英文逗号分开。<ref>一个conditions内可以有多条相同的解锁条件,并且每个解锁条件都会单独判断<small>(例如[[Memory Archive]]中的右侧警示解锁难度所需的歌曲,曲目选择页面中会实时渐变切换的解锁条件等等)</small></ref>
 每一个语句组中一定有一个type语句,根据type的取值不同,其中会有不同的呈现。
 每一个语句组中一定有一个type语句,根据type的取值不同,其中会有不同的呈现。


====残片型解锁====
====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的取值是一个整数,代表了解锁当前难度歌曲需要花费的残片数量。


 在该解锁条件情况下,花费残片后可以永久解锁对应谱面,意味着解锁后其他条件不满足时对应谱面不会锁回去。
 在该解锁条件情况下,花费残片后可以永久解锁对应谱面,意味着解锁后其他条件不满足时对应谱面不会锁回去。


====先行通过歌曲型解锁====
====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相同。
*song_difficulty (int):取值为0,1,2,与ratingClass含义相同。
*song_difficulty (int):取值为0,1,2,与ratingClass含义相同。
*grade (int):限定先行通过的歌曲需要达到的评级,0为不限定,1为达到C,2为达到B,3为达到A,4为达到AA,5为达到EX,6为达到EX+。
*grade (int):限定先行通过的歌曲需要达到的评级,0为不限定,1为达到C,2为达到B,3为达到A,4为达到AA,5为达到EX,6为达到EX+。


====先行游玩歌曲型解锁====
====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: 多次通过歌曲型解锁====
{
<syntaxhighlight lang="json">
    "type":3,   
{
    "song_id": songname,
    "type": 3,   
    "song_id": "songname",
    "song_difficulty": difficulty,
    "song_difficulty": difficulty,
    "grade": gradeNum,
    "grade": gradeNum,
    "times": timesNum
    "times": timesNum
}
}
</syntaxhighlight>
type取3时,为多次通过歌曲型解锁,与[[#先行通过歌曲型解锁|先行通过歌曲型解锁]]类似,不过需要多次通过相应曲目并达到给定评级。
type取3时,为多次通过歌曲型解锁,与[[#先行通过歌曲型解锁|先行通过歌曲型解锁]]类似,不过需要多次通过相应曲目并达到给定评级。
*times (int):指先行通过的歌曲需要达到限定评级的次数。
*times (int):指先行通过的歌曲需要达到限定评级的次数。
 其他变量不再赘述。
 其他变量不再赘述。


====选择任务型解锁====
====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: 个人游玩潜力值型解锁====
{
<syntaxhighlight lang="json">
    "type":5,   
{
    "rating": potentialNum
    "type": 5,   
}
    "rating": PotentialNum
}
</syntaxhighlight>
type取5时,为个人游玩潜力值型解锁,玩家需要取得或超过限定的潜力值即可解锁。
type取5时,为个人游玩潜力值型解锁,玩家需要取得或超过限定的潜力值即可解锁。
*rating (int):指限定的个人游玩潜力值乘以100后的整数。<s>可以随便填,负数都行,但即使填负数在未登录状态下本条件仍然算未达成</s>
*rating (int):指限定的个人游玩潜力值乘以100后的整数。<s>可以随便填,负数都行,但即使填负数在未登录状态下本条件仍然算未达成</s>


==== 特殊 解锁 类型====
====type 6:多次通过对应等级歌曲型 解锁====
<syntaxhighlight lang="json">
{
   "type": 6,  
   "count": countNum,
   "rating": ratingNum,
   "ratingPlus": boolean
}
</syntaxhighlight>
type取6时,为多次通过对应等级歌曲型解锁,与[[#多次通过歌曲型解锁|多次通过歌曲型解锁]]相似,不过需要多次通过相应等级的歌曲。
*count (int):跟上文的[[#多次通过歌曲型解锁|多次通过歌曲型解锁]]中的times同理。
*rating (int):指限定的游玩等级。
*ratingPlus (boolean):可以不存在于条件内,用来设定等级的“+”,true为设定,false为不设定,该语句不存在于条件内时默认为false。


{
====type 101:特殊解锁类型====
<syntaxhighlight lang="json">
{
    "type": 101,
    "type": 101,
    "min": minNum,
    "min": minNum,
    "max": maxNum
    "max": maxNum
}
}
type取101时,为特殊解锁类型,通常用于解锁 隐藏歌 曲。
</syntaxhighlight>
*min (int):解 锁anomaly 失败时获得的最小进度数。
type取101时,为特殊解锁类型,通常用于解锁 异象曲/终末 曲。
*max (int):解 锁anomaly 失败时获得的最大进度数。
*min (int):解 锁异象曲或终末曲 失败时获得的最小进度数。
*max (int):解 锁异象曲或终末曲 失败时获得的最大进度数。
 
====type 102:特殊挑战类型====
本类型不会在unlocks文件中出现,但是在本地记录解锁状态的文件中可以发现本类型。<br>
目前使用本类型解锁条件的曲目有[[Aegleseeker]]、[[Testify]]与[[Tempestissimo]](包含解锁前的四个挑战与曲目本身的pst难度)


====搭档解锁类型====


{
====type 103:搭档解锁类型====
<syntaxhighlight lang="json">
{
    "type": 103,
    "type": 103,
    "id": int
    "id": int
}
}
type取103时,为搭档解锁类型。目前仅有[[Aegleseeker]]出现此种解锁方式。
</syntaxhighlight>
 除 异象 曲目[[Aegleseeker]]外,在普通曲目上使用该解锁类型会导致使用对应搭档游玩结束并返回到选曲界面后'''切换为其他搭档后对应曲目不显示曲绘和曲目信息'''(但可正常选择该曲目进入游戏)。 <ref group="参考资料">[https://gist.github.com/Misaka12456/1f815a81e4b2794f6c9af9dfdc29794a GitHub Gist:Misaka12456/Arcaea 曲目解锁条件 - 非异象曲目的搭档解锁条件测试]</ref>
type取103时,为搭档解锁类型。目前仅有[[Aegleseeker]]和[[Arghena]]出现此种解锁方式。
 
 除 演出 曲目[[Aegleseeker]]外,在普通曲目上使用该解锁类型会导致使用对应搭档游玩结束并返回到选曲界面后'''切换为其他搭档后对应曲目不显示曲绘和曲目信息'''(但可正常选择该曲目进入游戏)。 <ref group="参考资料">[https://gist.github.com/Misaka12456/1f815a81e4b2794f6c9af9dfdc29794a GitHub Gist:Misaka12456/Arcaea 曲目解锁条件 - 非异象曲目的搭档解锁条件测试]</ref><br>
解锁[[Arghena]]时,需要使用搭档[[摩耶]]才能继续进行挑战
*id (int): 该曲解锁时所需的[[搭档]]('''此处值不可为-1'''),数字对应[[搭档]]见下
*id (int): 该曲解锁时所需的[[搭档]]('''此处值不可为-1'''),数字对应[[搭档]]见下
{{搭档编号列表}}
{{搭档编号列表}}
====type 104:剧情解锁类型====
<syntaxhighlight lang="json">
{
   "type": 104
}
</syntaxhighlight>
type取104时,通常不会有其他语句一起存在,但type 104出现且仅出现于[[Final Verdict]]及其附加内容[[Silent Answer]]的所有曲目中(开门曲[[Defection]]除外)
====type 105:搭档技能解锁类型====
<syntaxhighlight lang="json">
{
   "type": 105,
   "char_id": int,
   "awakened": boolean,
   "inverted": boolean
}
</syntaxhighlight>
type取105时,为搭档剧情解锁类型(存疑),目前仅有Last|Eternity<ref>不是Last或Last|Moment,从unlocks和songlist文件可以看出其实lasteternity是有别于last的另一个id,而Last|Moment只是和PRAGMATISM -RESURRECTION-一样的Beyond难度特殊名称</ref>的byd难度存在该解锁条件。
*char_id (int): 和type103的id作用相同,此处不再赘述。
*awakened (boolean)、inverted (boolean): 当搭档技能为觉醒技能/未觉醒技能时是否显示该难度,true为显示,false为不显示。
====type 106:绑定谱面解锁类型====
<syntaxhighlight lang="json">
{
   "type": 106,
   "song_id": string,
   "song_difficulty": int,
   "inverted": boolean
}
</syntaxhighlight>
type取106时,为绑定谱面解锁类型(存疑),目前仅有Last的byd难度(即Last|Moment)存在该解锁条件。
*song_id (string): 曲目的songid。
*song_difficulty (int): 捆绑曲目的难度。
*inverted (boolean): 当搭档技能为未觉醒技能时是否显示该难度,true为显示,false为不显示。
====type 107:解谜解锁类型====
<syntaxhighlight lang="json">
{
   "type": 107
}
</syntaxhighlight>
type取107时,为[[Magnolia]]的解谜挑战,当且仅当玩家购买了所在曲包时挑战才会生效。在完成本挑战前,歌曲将不展示曲封、不播放预览音乐,具体挑战内容请查看单曲页面。
====type 108:故事解锁类型====
<syntaxhighlight lang="json">
{
   "type": 108
}
</syntaxhighlight>
type取108时,为故事解锁类型。目前仅有[[Arghena]]使用了本解锁条件,在未完成挑战前,余下的解锁挑战将不会显示。
====type 109:特殊解谜挑战类型====
<syntaxhighlight lang="json">
{
   "type": 109,
   "index": int,
   "difficulty": int
},
</syntaxhighlight>
type取109时,为特殊解谜挑战类型。目前仅有[[Arghena]]使用了本解锁条件。
*index (int): 解谜项目的索引(存疑)。
*difficulty (int): 曲目难度。
====type 110:伪段位挑战类型====
<syntaxhighlight lang="json">
{
   "type": 110
},
</syntaxhighlight>
type取110时,为伪段位挑战类型。目前仅有[[Arghena]]使用了本解锁条件。与常规的段位挑战类似但是允许暂停。


==参考资料==
==参考资料==
{{Reflist|group=参考资料}}
{{Reflist|group=参考资料}}


==注释==
{{Reflist|group=注释}}
{{Usercheck-end}}
{{Usercheck-end}}
1,015

个编辑