首先感谢 @lllllllllx 大佬的分享,也感谢 @电子丈育珠颈斑鸠 指出问题:“太刀里鬼每段只有一次伤害”
修改思路是,在attack.nut中,参考钝器的额外hit设置,通过在命中后下一帧清一次 hitList,让同一段挥砍在同一帧的后续 tick 再结算一次命中,从而 +1 hit。
70s2版本可无脑导入: 6YCa6L+H572R55uY5YiG5Lqr55qE5paH5Lu277yaNzBzMumHjOmsvOWPjOWIgGhpdOaVsOS/ruWkjeeJiC43egrpk77mjqU6IGh0dHBzOi8vcGFuLmJhaWR1LmNvbS9zLzFIRDhiREJBUm5lVmFIVzVadk9OWnFBP3B3ZD1xNHJ3IOaPkOWPlueggTogcTRydyDlpI3liLbov5nmrrXlhoXlrrnlkI7miZPlvIDnmb7luqbnvZHnm5jmiYvmnLpBcHDvvIzmk43kvZzmm7Tmlrnkvr/lk6Y=
感兴趣的可以继续往下看看修改思路。
首先改 onAttack_ATTACKSWORDMAN,在太刀命中时打标记:
function onAttack_ATTACKSWORDMAN(obj, damager, boundingBox, isStuck)
{
if (!obj)
return 0;
if(!damager)
return 0;
local skillIndex = obj.getCurrentSkillIndex();
if (skillIndex == 67)
{
// ===== 添加太刀 subtype 1:记录“发生过命中” ===== //
if (obj.getWeaponSubType() == 1)
{
// 只要命中过一次,就置 1;额外hit做完后会把它清回0
if (obj.getVar("flag").get_vector(0) == 0)
obj.getVar("flag").set_vector(1, 1);
}
// =========================================== //
if (obj.getWeaponSubType() == 2)
{
...
然后改 onProc_ATTACKSWORDMAN,下一帧清一次 hitList , +1 hit:
function onProc_ATTACKSWORDMAN(obj)
{
local pAni = obj.sq_GetCurrentAni();
local frmIndex = obj.sq_GetCurrentFrameIndex(pAni);
// ===== 太刀 subtype 1:每次挥砍额外 +1 hit(不改动画/攻速/续段/特效)=====
if (obj.getVar("data").get_vector(1) == 67 && obj.getWeaponSubType() == 1)
{
// flag[1]==1 表示上一tick发生过命中;flag[0]==0 表示还没做过额外hit
if (obj.getVar("flag").get_vector(1) == 1 && obj.getVar("flag").get_vector(0) == 0)
{
obj.getVar("flag").set_vector(0, 1); // 已经做过额外hit
obj.getVar("flag").set_vector(1, 0); // 消耗掉“发生命中”标记
// 清一次命中列表:下一次碰撞检测同目标还能再吃一次 → +1 hit
obj.resetHitObjectList();
}
}
// ===========================================================//
if (obj.getVar("data").get_vector(1) == 67)
{
if (obj.getVar("data").get_vector(0) == 1)
{
...
这样就通过在命中后下一帧清一次 hitList,让同一段挥砍在同一帧的后续 tick 再结算一次命中,从而让太刀里鬼 +1 hit。
修改思路是,在attack.nut中,参考钝器的额外hit设置,通过在命中后下一帧清一次 hitList,让同一段挥砍在同一帧的后续 tick 再结算一次命中,从而 +1 hit。
70s2版本可无脑导入: 6YCa6L+H572R55uY5YiG5Lqr55qE5paH5Lu277yaNzBzMumHjOmsvOWPjOWIgGhpdOaVsOS/ruWkjeeJiC43egrpk77mjqU6IGh0dHBzOi8vcGFuLmJhaWR1LmNvbS9zLzFIRDhiREJBUm5lVmFIVzVadk9OWnFBP3B3ZD1xNHJ3IOaPkOWPlueggTogcTRydyDlpI3liLbov5nmrrXlhoXlrrnlkI7miZPlvIDnmb7luqbnvZHnm5jmiYvmnLpBcHDvvIzmk43kvZzmm7Tmlrnkvr/lk6Y=
感兴趣的可以继续往下看看修改思路。
首先改 onAttack_ATTACKSWORDMAN,在太刀命中时打标记:
function onAttack_ATTACKSWORDMAN(obj, damager, boundingBox, isStuck)
{
if (!obj)
return 0;
if(!damager)
return 0;
local skillIndex = obj.getCurrentSkillIndex();
if (skillIndex == 67)
{
// ===== 添加太刀 subtype 1:记录“发生过命中” ===== //
if (obj.getWeaponSubType() == 1)
{
// 只要命中过一次,就置 1;额外hit做完后会把它清回0
if (obj.getVar("flag").get_vector(0) == 0)
obj.getVar("flag").set_vector(1, 1);
}
// =========================================== //
if (obj.getWeaponSubType() == 2)
{
...
然后改 onProc_ATTACKSWORDMAN,下一帧清一次 hitList , +1 hit:
function onProc_ATTACKSWORDMAN(obj)
{
local pAni = obj.sq_GetCurrentAni();
local frmIndex = obj.sq_GetCurrentFrameIndex(pAni);
// ===== 太刀 subtype 1:每次挥砍额外 +1 hit(不改动画/攻速/续段/特效)=====
if (obj.getVar("data").get_vector(1) == 67 && obj.getWeaponSubType() == 1)
{
// flag[1]==1 表示上一tick发生过命中;flag[0]==0 表示还没做过额外hit
if (obj.getVar("flag").get_vector(1) == 1 && obj.getVar("flag").get_vector(0) == 0)
{
obj.getVar("flag").set_vector(0, 1); // 已经做过额外hit
obj.getVar("flag").set_vector(1, 0); // 消耗掉“发生命中”标记
// 清一次命中列表:下一次碰撞检测同目标还能再吃一次 → +1 hit
obj.resetHitObjectList();
}
}
// ===========================================================//
if (obj.getVar("data").get_vector(1) == 67)
{
if (obj.getVar("data").get_vector(0) == 1)
{
...
这样就通过在命中后下一帧清一次 hitList,让同一段挥砍在同一帧的后续 tick 再结算一次命中,从而让太刀里鬼 +1 hit。












