====== 剧本指令集 ====== FIXME 本页面尚未完成,且英杰传的指令尚未逆向完毕。 英杰传和孔明传用的同一套剧本指令。为了方便起见,就不重新写两个页面了。以孔明传为主,部分孔明传、英杰传不同的地方会标注出。 ===== 原始指令集 ===== **00. 对话框** u16 字符串偏移 **01. 移动武将** u16 武将ID u8 X u8 Y u8 朝向 **02. 未使用** u8 _ **03. 设置战役信息** u8 阶段 u8 最大回合数 u8 如果是第二阶段,是否需要清空回合数 u8 _ u8 敌军拥有主将 u16 敌军主将ID u8 _ u8 我军拥有主将 u16 我军主将ID 武将信息 x30 u16 武将ID u8 X u8 Y u8 我军 (见22指令的详细说明) u8 需要检查标志 u8 标志ID u8 朝向 u8 隐藏 :!: 孔明传中,朝向无效 (我军始终朝左,敌军朝右),此参数仅用于英杰传。 **04. 天气 (EKD)** :!: 此指令无任何作用,仅从英杰传的调试文本中获知。 **05. 显示场所** 06指令、09指令 (更新场所)的黑屏不会自动恢复,需要调用此指令。 **06. 黑屏** 仅用于场所。 **07. 过场动画 (EKD)** u8 ID u8 _ 过场动画指英杰传中文字上方的图像。孔明传中没有此功能,此指令的效果为在顶端显示消息框。 **08. 消息框** u16 字符串偏移 **09. 加载地图** u16 地图ID ID的高4位表示类型:0城市,1大地图,2场所,3战场 低12位表示编号。 **0A. 加载武将** u16 武将ID u8 X u8 Y u8 朝向 u8 姿势 **0B. 小消息框** u16 字符串偏移 **0C. 设置任务 (EKD)** [u16] _ (仅EKD字段) u16 字符串偏移 孔明传中不区分剧情任务和战场任务,均使用30指令。孔明传中0B、0C、0E指令完全相同。 **0D. 设置章幕** u16 字符串偏移 被用于存档名。 **0E. 显示章幕** u16 字符串偏移 **0F. 场景跳转** u8 场景 **10. 武将单挑** u8 台词ID u8 台词ID u8 单挑结果 **11. 战斗后加载地图** u16 地图ID 检查后面是否紧跟29指令 (Game Over),若是则战斗失败;否则战斗胜利。 **12. 结束剧本集** **13. 结束事件** **14. 设置剧本标志** u8 标志ID u8 操作 (0开,1关) 诸葛瞻的培养也使用此指令。 **15. 带确认的对话框** u8 预期选项 (0是,1否) u8 分支指令数 **16. 无效指令** u8 ID1 u8 ID2 **17. 自由行动** u8 操作 (0启用,1禁用) **18. 移除武将** u16 武将ID u8 X1 u8 Y1 u8 X2 u8 Y2 u8 标志 (开:战场武将,关:场所角色) u8 军队 (0我军,1敌军,2两军) **1A. 显示武将** u16 武将ID **1B. 获得物品** u8 物品ID 0xC3表示随机物品。 **1C. 设置武将方针** u16 武将ID u8 方针 u16 参数 **1D. 保存地图数据** u16 地图ID u8 ? u8 ? 孔明传中,保存的地图数据并没有被使用,因此这也是无效指令。 **1E. 清除场景角色** **1F. 添加NPC** 自由行动时会自动处理,但是剧本中需要手动处理。 **20. 设置地图标志** u8 模式+n (MSB: 0附加,1设置。7-LSB: 标志数) u8*n 需清除的标志ID 附加模式:直接在原来基础上进行操作;设置模式:先全部初始化为可达再进行操作。 **21. 检查剧本标志** u8 分支指令数 u8 n (检查n个标志是否为ON) u8*n 标志ID u8 m (检查m个标志是否为OFF) u8*m 标志ID **22. 设置敌军信息** u8 身份反转 武将信息 x30 u16 武将ID u8 X u8 Y u8 需要检查标志 u8 标志ID u8 朝向 u8 隐藏 u8 方针 u16 方针参数 u8 兵种 u8 等级 u8 _ u8 _ u8 _ u16 _ u8 _ 身份反转标志设置时,03指令的身份为我军的武将将被禁用 (同理,身份反转标志未设置时,身份为敌军的武将被禁用)。 **23. 选择参战武将** **24. 设置武将势力** 孔明传中,仅势力0 (蜀)和6 (诸葛亮)才属于我军。通常武将离队设置为势力9 (无所属)。 **25. 显示选项** 至多3个选项。 选择诸葛瞻兵种也使用此指令。 **26. 加载二阶段战场地图** u8 _ u8 _ u8 地图编号 (只有两张图) **27. 障碍物** u8 X u8 Y u8 操作 (0设置火,1设置水,2撤销,3撤销,4淡入,5淡出) :!: 通过操作2设置的障碍物,图标仍是火,但障碍物的名称显示为水。 **28. 武将倒戈** u16 武将ID u8 势力 **29. Game Over** **2A. The Ending** u8 结局ID (EKD) 孔明传不采用硬编码的多结局实现,因此结局ID无效。 **2B. 设置用户数据** u8 类型 (0: - 孔明寿命,1: + 孔明寿命,2: + 剧本变量,3: 清除剧本变量,4: + 金,5: 战斗后经验,7: 历史记录,8: 启用自由模式,9:确认武将参数) u16 值 类型9未使用,效果为显示武将的武力、统帅、智力。 **2C. 刷新场景角色** **2D. 特殊技能** u8 军队 (0我军,1敌军) u8 类型 (0: 减少1/2兵数,1: 1/3概率混乱) 未使用。不过猜测可能是想用于博望坡之战的火攻。 **2E. 设置用户城市** u16 地图ID u8 _ u8 _ u8 _ **2F. CG变更 (EKD)** u16 武将ID u8 ID 孔明传中未使用,用于设置武将的一个废案属性。 **30. 设置任务** u16 字符串偏移 **31. 检查用户数据** u8 类型 (0: 孔明寿命,1: 剧本变量,2: 孔明等级) u8 值 u8 关系 (0: >=,1: <) u8 分支指令数 **32. 变更武将兵数/状态** u8 类型 (0武将,1范围) u16 武将ID u8 X1 u8 Y1 u8 X2 u8 Y2 u8 军队 u8 类型 (0攻击,1防御,2兵数减少,3状态) u8 值 类型0/1,值: 0: ↑↑,1: ↑,0: 复原,1: ↓,2: ↓↓ 类型2,值为减少的兵数 类型3,值: {0}: 移动↓,{1}: 攻速↓,{2}: 封策,{3}: 对策,{4}: 混乱,{5}: 兵数减少 **33. 无效指令** u8 ? u8 ? 推测原义应为播放音效。 **34. 设置武将姿势** u16 武将ID u8 姿势 **35. 移动旗帜** u8 源城市 u8 目标城市 u8 旗帜颜色 u8 延时 **36. 自动保存** **37. 设置武将姿势朝向** u16 武将ID u8 姿势 u8 朝向 **38. 播放BGM** u8 BGM ID **39. 武将升级** u16 武将ID u8 等级 **3A. 设置武将兵种** u16 武将ID u8 兵种 **3B. 结束并行中事件** u8 _ u8 _ **3C. 无效指令** u16 武将ID **3D. 提示保存** u8 并行 **FF. 结束** ===== 扩展指令集 ===== 这一部分**不存在于**原版中,在Dangfer的改版中引入。 **40: 检查结果** u8 分支指令数 u8 条件 (0真,1假) :!: 此指令不同于else,它仅检查最近的结果 (由21指令设置)。