跳到主要内容

Fungus 补丁

游戏内 Fungus 数据

导出

如果已经导出 Base 数据的话,可以忽略导出步骤

点击 Next 面板上的【导出 Base】按钮,即可导出 Fungus 数据。

导出的游戏数据位于 ..\OutPut\Funugs 根据 Next 的安装位置,有所不同

查看数据

导出的数据格式通常如下:

{
"Name": "NPCJiaoHuTalk",
"Blocks": [
{
"ItemID": 344,
"Name": "聊天按钮被点击起始点",
"Description": "聊天按钮被点击起始点",
"Position": "(-3033.412,-1448.144)",
"Commands": [
{
"ItemID": 371,
"CmdType": "Fungus.TryinitFungaus"
},
{
"ItemID": 346,
"CmdType": "CmdInitNPC"
},
{
"ItemID": 352,
"CmdType": "Fungus.Call",
"targetFlowchartName": null,
"targetBlockID": "351(首次交谈判断)",
"startLabel": "",
"startIndex": 0,
"callMode": 0
}
]
},
......

Flowchart 指每一个导出的文件

Block 指一个个对话节点

Command 指具体运行的剧情指令

创建 Fungus 补丁

在 Mod 文件夹里新建 NData/FungusPatch 文件夹,随后在该文件夹里新建任意名称的 json 文件,文件结构如下:

example.json

[
{
"TargetFlowchart": "NPCJiaoHuTalk",
"TargetBlock": 362,
"TargetCommand": 1147,
"Priority": 0,
"Type": "Insert",
"Command": {
"CmdType": "NextMenu",
"CmdParams": "啊哈哈哈鸡汤来咯!#鸡汤来咯"
}
},
{
"TargetFlowchart": "NPCJiaoHuTalk",
"TargetBlock": 362,
"TargetCommand": 397,
"Priority": 0,
"Type": "Delete"
}
]

对象解释: |字段|类型|说明| |-|-|-| |TargetFlowchart|字符串|目标 Flowchart 的名称| |TargetBlock|整数|目标 Block 的 ItemID| |TargetCommand|整数|要插入的 Command 的 ItemID,若为-1,即为插入到所有 Command 的最后| |Priority|整数|优先级,优先级越高的 Patch,在插入时 index 越大| |Type|PatchType|Patch 类型,目前有 Insert 与 Delete 两种。
Insert 类型会插入到目标命令的前面。
Delete 类型会删除目标命令| |Command|FPatchCommand|插入的指令数据,仅在 Insert 模式下生效|

Command 对象解释: |字段|类型|说明| |-|-|-| |CmdType|字符串|Patch 的指令类型| |CmdParams|字符串|Patch 的指令参数|

通过在导出的 Fungus 里找到需要修补的剧情,然后将对应的 ID 填入补丁对象内,即可在游戏运行中对其进行修补。

可插入的 Command 类型

目前可以插入的 Command 如下: |CmdType 类型|说明|CmdParams 参数| |-|-|-| |NextEvent|跳转到 Next 事件,会中断当前 Fungus,可使用 RunFungusBlock 重新跳回|目标事件#跳转条件
只有满足条件时才跳转,可不填写,默认为 True |NextInnerEvent|执行内插 Next 事件,在执行完后会自动跳转回当前位置|目标事件#跳转条件
只有满足条件时才跳转,可不填写,默认为 True |NextMenu|弹出选项框,选择后跳转到 Next 事件,会中断当前 Fungus,可使用 RunFungusBlock 重新跳回|选项名称#目标事件#显示条件
只有满足条件时才显示选项,可不填写,默认为 True