需人工核查对手“放过”行为的触发条件是否缺失或宽松:定位Antagonist分组中含spare/let go等关键词的动作节点,跳转源码检查if条件是否为空、恒真或缺失;同时验证Activation Window是否受限、Context Dependencies是否有效且变量已赋值。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

在Laper Script Doctor中检查对手是否无故放过主角,需定位到角色互动逻辑分支并验证其触发条件是否缺失或过于宽松。该工具不自动判定“合理性”,必须人工核查脚本中对手行为的前置约束是否被绕过或未定义。
定位对手行为对应的动作节点
打开脚本文件 → 在左侧节点树中展开「Antagonist」分组 → 找到名称含「spare」「let go」「stand down」或「delay attack」的动作节点(通常为红色边框)。
右键点击该节点 → 选择「Jump to Source」,光标将跳转至对应Lua代码段。若节点无源码关联,说明此行为由默认状态机驱动,需切换至「State Flow」视图查看当前状态迁移路径。
检查行为触发的前置条件是否为空或恒真
在跳转后的代码中,查找以 if 开头的条件判断块,重点关注条件表达式是否包含主角状态变量(如 player.morality < 3、player.hasProof == false)。
若条件语句仅含 if true then、if not nil then 或完全缺失 if 块而直接执行 spargePlayer(),则属于无故放过;此时对手行为不受任何剧情/数值/时机约束,会强制在任意场景下触发。
【必须检查 condition.lua 中同名函数是否被覆盖为空实现】
验证时间与上下文约束是否存在
方法一:查看节点属性面板中的「Activation Window」字段,确认是否设置了有效的时间区间(如「Act2_Scene7_Start + 3.2s → Act2_Scene7_End - 1.5s」)。若显示「Unbounded」或「0 → ∞」,则该放过行为可在任意时刻激活。
方法二:在「Context Dependencies」标签页中,检查是否勾选了必要依赖项,例如「WitnessCount ≥ 2」、「PlayerWeaponDisarmed == true」、「QuestStage == "betrayal_revealed"」。若所有依赖项均未勾选或显示「Not Required」,即构成无约束放过。
这一步操作起来很简单,直接把鼠标悬停在依赖项名称上, tooltip 会显示该变量最后一次被赋值的位置和值——如果始终显示「undefined」或「nil」,说明该条件从未被写入,不可信。


















