首先感谢van大的脚本文件。
战场文件开头是各部分的索引,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