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

添加4,648字节 、​ 2024年4月27日 (星期六)
无编辑摘要
 
(未显示11个用户的24个中间版本)
第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
}
}
 当type取0时,为残片型解锁。玩家需要花费残片来开启当前歌曲的游玩权限 。credit的取值是一个整数,代表了 解锁当前难度歌曲需要花费的残片数量。
</syntaxhighlight>
 当type取0时,为残片型解锁。玩家需要花费残片来开启当前歌曲的游玩权限
*credit (int):指 解锁当前难度歌曲需要花费的残片数量。


====先行通过歌曲型解锁====
在该解锁条件情况下,花费残片后可以永久解锁对应谱面,意味着解锁该难度后,即使其他条件不满足,也不会将难度回锁。
{
 
    "type":1,   
====type 1: 先行通过歌曲型解锁====
<syntaxhighlight lang="json">
{
    "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/3/4 ,与ratingClass含义相同。
*grade (int):限定先行通过的歌曲需要达到的评级 ,0为 不限定 ,1为达到C,2为达到B,3为达到A,4为达到AA,5为达到EX。
*grade (int):限定先行通过的歌曲需要达到的评级 ,数字对应条件见下表。
{| class="wikitable" style="text-align:center"
! 条件
! 评级
|-
| 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
}
}
type取2时,为先行游玩歌曲型解锁,与[[#先行通过歌曲型解锁|先行通过歌曲型解锁]]类似,不过对应结果为游玩相应曲目即可 。变量不再赘述
</syntaxhighlight>
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": [
    {
    {
第122行: 第166行:
    }
    }
   ]  //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 7:先行解锁对应曲目难度型解锁====
<syntaxhighlight lang="json">
{
   "type": 7,
   "song_id": "songname",
   "song_difficulty": difficulty
}
</syntaxhighlight>
type取7时,为先行解锁对应曲目难度型解锁,与[[#先行游玩歌曲型解锁|先行游玩歌曲型解锁]]相似,不过只需要解锁曲目的对应难度,不需要游玩曲目。
 
====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时,为搭档解锁类型,通 解锁 隐藏歌 曲。
</syntaxhighlight>
*id (int): 该曲解锁时所需的[[搭档]] -1 为无(未经测试) ,数字对应[[搭档]]见下
type取103时,为搭档解锁类型 。目前仅有[[Aegleseeker]]和[[Arghena]]出现此种解锁方式。
{| class="wikitable mw-collapsible mw-collapsed" style="text-align:center"
 
|-
除曲目[[Aegleseeker]]和[[Arghena]]外 在普 曲目上使 解锁 类型会导致使用对应搭档游玩结束并返回到选曲界面后'''切换为其他搭档后对应曲目不显示曲绘和曲目信息'''(但可正常选择该 目进入游戏) <ref group="参考资料">[https://gist.github.com/Misaka12456/1f815a81e4b2794f6c9af9dfdc29794a GitHub Gist:Misaka12456/Arcaea 曲目解锁条件 - 非异象曲目的搭档解锁条件测试]</ref><br>
! ID!! 对应[[ 搭档]] 
*id (int): 该曲解锁时所需的[[搭档]]('''此处值不可为-1''') ,数字对应[[搭档]]见下
|-
{{搭档编号列表}}
| -1|| 不
 
|-
====type 104:剧情解锁类型====
| 0|| [[ ]]
<syntaxhighlight lang="json">
|-
{
| 1|| [[ 对立]]
   "type": 104
|-
}
| 2|| [[红]]
</syntaxhighlight>
|-
type取104时,通常不会有其他语句一起存在,但type 104出现且仅出现于[[Final Verdict]] 及其附 内容[[Silent Answer]] 的所有曲目中(开门曲[[Defection]] 除外)
| 3|| [[萨菲亚]]
 
|-
====type 105:搭档技能解锁类型====
| 4|| [[忘却]]
<syntaxhighlight lang="json">
|-
{
| 5|| <nowiki>[数据删除]</nowiki>
   "type": 105,
|-
   "char_id": int,
| 6|| [[对立(Axium)]]
   "awakened": boolean,
|-
   "inverted": boolean
| 7|| [[对立(Grievous Lady)]]
}
|-
</syntaxhighlight>
| 8|| [[星]]
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作用相同,此处不再赘述。
| 9|| [[光 & 菲希卡]]
*awakened (boolean)、inverted (boolean): 当搭档技能为觉醒技能/未觉醒技能时是否显示该难度,true为显示,false为不显示。
|-
 
| 10|| [[依莉丝]]
====type 106:绑定谱面解锁类型====
|-
<syntaxhighlight lang="json">
| 11|| [[爱托]]
{
|-
   "type": 106,
| 12|| [[露娜]]
   "song_id": string,
|-
   "song_difficulty": int,
| 13|| [[调]]
   "inverted": boolean
|-
}
| 14|| [[光(Zero)]]
</syntaxhighlight>
|-
type取106时,为绑定谱面解锁类型 存疑 ,目前仅有Last的byd难度 即Last|Moment 存在该解锁条件。
| 15|| [[光(Fracture)]]
*song_id (string): 曲目的songid。
|-
*song_difficulty (int): 捆绑曲目的难度。
| 16|| [[光 ]]
*inverted (boolean): 当搭档技能为未觉醒技能时是否显示该难度,true为显示,false为不显示。
|-
 
| 17|| [[对立 ]]
====type 107:解谜解锁类型====
|-
<syntaxhighlight lang="json">
| 18|| [[对立 & 托凛]]
{
|-
   "type": 107
| 19|| [[彩梦]]
}
|-
</syntaxhighlight>
| 20|| [[爱托 & 露娜(冬日)]]
type取107时,为[[Magnolia]] 的解谜挑战,当且仅当玩家购买了所在曲包时挑战才会生效。在完成本挑战前,歌曲将不展示曲封、不播放预览音乐,具体挑战内容请查看单曲页面。
|-
 
| 21|| [[梦]]
====type 108:故事解锁类型====
|-
<syntaxhighlight lang="json">
| 22|| [[光 & 晴音]]
{
|-
   "type": 108
| 23|| [[咲弥]]
}
|-
</syntaxhighlight>
| 24|| [[ 对立 & 中二企鹅(Grievous Lady)]]
type取108时,为故事解锁类型。目前仅有[[Arghena]] 使用了本解锁条件,在未完成挑战前,余下的解锁挑战将不会显示。
|-
 
| 25|| [[中二企鹅]]
====type 109:特殊解谜挑战类型====
|-
<syntaxhighlight lang="json">
| 26|| [[榛名]]
{
|-
   "type": 109,
| 27|| [[诺诺]]
   "index": int,
|-
   "difficulty": int
| 28|| [[ 潘多拉涅墨西斯(MTA-XXX)]]
},
|-
</syntaxhighlight>
| 29|| [[轩辕十四(MDA-21)]]
type取109时,为特殊解谜挑战类型。目前仅有[[Arghena]] 使用了本解锁条件。
|-
*index (int): 解谜项目的索引 存疑
| 30|| [[群愿]]
*difficulty (int): 曲目难度。
|-
 
| 31|| [[光(Fantasia)]]
====type 110:伪段位挑战类型====
|-
<syntaxhighlight lang="json">
| 32|| [[对立(Sonata)]]
{
|-
   "type": 110
| 33|| [[ 兮娅]]
},
|-
</syntaxhighlight>
| 34|| [[DORO*C]]
type取110时,为伪段位挑战类型。目前仅有[[Arghena]] 使用了本解锁条件。与常规的段位挑战类似但是允许暂停。
|-
 
| 35|| [[对立(Tempest)]]
==参考资料==
|-
{{Reflist|group=参考资料}}
| 36|| [[布丽兰特]]
 
|-
==注释==
| 37|| [[依莉丝 ]]
{{Reflist|group=注释}}
|-
| 38|| [[咲弥(Etude)]]
|-
| 39|| [[爱丽丝 & 坦尼尔]]
|-
| 40|| [[露娜 & 美亚]]
|-
| 41|| [[阿莱乌斯]]
|-
| 42|| [[ 希尔]]
|-
| 43|| [[伊莎贝尔]]
|-
| 44|| [[迷尔]]
|-
| 45|| [[拉格兰]]
|}
{{Usercheck-end}}
{{Usercheck-end}}