战国无双2战场事件修改初探
作者:佚名 来源:未知 时间:2020-08-02
作者:phoenixst
战场文件开头是各部分的索引,08h便是事件部分相对文件开头的偏移。
事件部分开头也是个索引,每个数占四字节。第一个数是事件的总数,第二个数是“任务事件”的总数,第三个数是“非任务事件”的总数。特别地,贵重品任务是在“非任务事件”里的。从第四个数开始就是各事件相对事件索引开头的偏移了。
下面这是一个具体的事件
前六个字节是“事件头”。前四个字节意义不明。第五个字节是Test部分共有多少个项目,这个事件Test部分有10个项目,依次是FF、0F、FE、FF、1E、1D、1D、FF、1E、0F。第六个字节是Event部分共有多少个项目,这个事件Event部分有4个项目,依次是0C、0C、0C、24。
Test项目每个占用18字节,包括一个项目代码和最多8个参数,不足8个参数的补0,项目代码和参数一律为2字节。下文都采用简略写法,如0F:7 1 0,实际便是0F 00 07 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00。
Event项目每个占用16字节,包括一个项目代码和最多7个参数,不足7个参数的补0,项目代码和参数一律为2字节。下文同样采用简略写法。
下面具体介绍Test和Event已经解析的项目。
Test
FF:AND逻辑关系。参数为一个,表示条件数目。所谓AND,便是指其所包括的分支条件都满足时该Test才为True。
FE:OR逻辑关系。参数为一个,表示条件数目。所谓OR,便是指其所包括的分支条件任意满足一个时该Test就为True。
FF和FE可以多重嵌套,嵌套的时候,次一级的FF、FE只算成一个条件。
具体还是看上面那个事件,其Test整理下是这样的:
FF:2
0F:43 1 0
FE:2
FF:3
1E:1
1D:2 B 0
1D:2 E 0
FF:2
1E:2
0F:9 0 1
可以看出,第一级的FF包括两个条件,为0F和FE;第二级的FE包括两个条件,为两个FF。
00:时间测试。参数为三个,值一表示“计时器序号”,为0时表示战场本身的计时器,为其它值时,由Event项目00来声明(见下文Event的00);值二表示时间,单位为秒;值三表示“对比判断条件”,为0表示<,为1表示≤,为2表示=,为3表示≥,为4表示>。下文的“对比判断条件”,都是同一意义。
如,00:0 12C 3 表示进入战场时间大于等于300秒时满足条件。
01:士气测试。参数为三个,值一表示“战场部队序号”,用Editor打开相应战场,把序号转为十六进制便是;值二表示士气值;值三表示“对比判断条件”。
关于“战场部队序号”,有一点要特别说明:把最下面“护卫二”的序号+1,就表示"Player”,即玩家使用的武将。如姊川之战织田德川侧,护卫二是65,那么66就表示Player。
05:部队击破测试。参数为二个,都表示“战场部队序号”。当由值一表示的武将击破值二表示的武将时满足条件。
06:体力测试。参数为三个,值一表示“战场部队序号”,值二表示体力的百分比,值三表示“对比判断条件”。
08:击破数测试。参数为三个,值一表示“战场部队序号”,值二表示击破数,值三表示“对比判断条件”。
0F:非任务事件测试。参数为三个,值一表示“非任务事件序号”;值二为0表示该事件未发生时满足条件,为1表示该事件已发生时满足条件;值三意义未知,一般为0或1。
什么是“非任务事件序号”呢?以姊川之战织田德川侧为例,前22个事件都是任务事件(上面已经提过,可以根据索引的第二个数看出有多少个任务事件),那么第23个事件其“非任务事件序号”便为0,第24个事件其“非任务事件序号”便为1,以此类推。
10:任务事件测试。参数为三个,值一表示“任务事件序号”;值二为0表示该事件未发生时满足条件,为1表示该事件已发生时满足条件;值三意义未知,一般为0或1。
11:任务状态测试。参数为三个,值一表示“任务序号”;值二表示“任务状态”,0表示任务执行中,1表示任务成功,2表示任务中止;值三意义未知,一般为1。
注意“任务序号”和“任务事件序号”完全是两码事,一个任务至少会包括触发和完成两个事件,大部分任务还会包括失败中止的事件。
13:部队状态测试。参数为四个,值一表示“战场部队序号”,后面三个参数意义未知,但常用的组合只有两种,0 1 1表示值一表示的武将存在且未被击破时满足条件,2 1 0表示值一表示的武将已被击破时满足条件。
17:部队距离测试。参数为五个,值一和值二都表示“战场部队序号”,值三表示距离,值四表示“对比判断条件”,值五意义未知,一般为1。
17这个项目很有些问题,PC版的一些事件bug,如立花和三成的关原毛利小早川神速倒戈,关原东军侧岛津撤退时取人首级于千里之外等,问题都是出在这个17上。目前正尝试修复这些bug。
1D:玩家武将测试。参数为三个,值一意义未知;值二为特殊武将代码,用Editor打开NPC武将,看“模型”或者“招式”的值便是对应的武将(注意不是序号,因为那几个“足轻”被跳过了);值三为0表示玩家不是值二表示的武将时满足条件,为1表示玩家是值二表示的武将时满足条件。
Event
00:计时器声明。参数为二个,值一表示“计时器序号”,值二意义未知。
Event的00和Test的00一般都要结合起来用,如要实现“事件A发生一段时间后发生事件B”,便是这样:
事件A:
Event:
00:计时器序号N 0
事件B:
Test:
00:N 时间 3
04:全军士气调整。参数为二个,值一表示“军势代码”,为0表示蓝军,为1表示红军,为2表示黄军,下文的“军势代码”都是同一意义;值二表示士气变化百分比,0~7FFF为正,8000到FFFF为负。
05:部队士气调整。参数为二个,值一表示“战场部队序号”,值二表示士气变化值,0~7FFF为正,8000到FFFF为负。
注意04和05参数二的区别,一个是百分比,一个是实际值。
0A:小地图武将闪烁。参数为二个,值一表示“战场部队序号”,值二意义未知,一般为或1。
10:部队倒戈。参数为二个,值一表示“战场部队序号”,值二表示要“军势代码”。即值一表示的部队倒戈到值二表示的军势。
13:部队体力调整。参数为三个,值一表示“事件作用范围”,为0表示整支部队,为1表示只限主将和他所带的四个兵长,下文的“事件作用范围”都是同一意义;值二表示“战场部队序号”;值三表示体力变化百分比,0~7FFF为正,8000~FFFF为负。体力调整的百分比都是以最大体力为基值来算的,不是以当前体力为基值。(此项感谢绿燕的帮忙)
15:能力调整。参数为二个,值一表示“战场部队序号”;值二为1表示3倍攻防炎斗气,为2表示2倍攻防炎斗气,为3表示1.5倍攻防雷斗气,为4表示1.2倍攻防雷斗气,为5表示攻防下降为80%,为6表示攻防下降为60%,为0表示攻防回复正常。
22:播放战场信息。参数为二个,值一表示战场信息序号,值二一般都是Player的战场部队序号,改了也没发现有什么影响。
23:播放对话。参数为六个,值一表示说话武将代码,用Editor查看NPC武将里的序号便是(注意和Test里1D的参数二的区别);值二表示对话序号;值三为0表示头像在话的左边,为1表示头像在话的右边;值四表示用哪个头像,一般每个武将有四种表情头像;值五值六意义未知。
24:任务触发、完成、中止相关。参数为五个,值一表示“任务序号”;值二表示“任务状态”,0表示任务触发,1表示任务成功,2表示任务中止;值三意义未知,一般为0;值四表示要显示的战场信息序号;值五意义未知,一般为2。
26:播放动画。参数为三个,值一表示“动画序号”,值二一般都为Player的战场部队序号,值三意义未知,一般为1。
27:部队出现。参数为二个,值一表示“事件作用范围”;值二表示“战场部队序号”。
29:部队消失。参数为三个,值一表示“事件作用范围”;值二表示“战场部队序号”;值三为0表示跑到据点里消失,为1表示原地直接消失。
>>战国无双2 专区
- 上一篇: 阿玛拉王国:惩罚被诅咒箱子的解锁方法
- 下一篇: 战国无双2战场武将属性研究