修复钢琴扫射节奏:键间隔统一2帧+扫射光束缩短为6帧短闪(同屏仅3条,恢复扫射动感),乱序/齐射保持22帧持续;局间停顿统一14帧消除P1/P2差异

This commit is contained in:
JOJO 2026-08-06 13:50:31 +08:00
parent 7453479c6c
commit 4b9ec9a64f

View File

@ -396,7 +396,8 @@ function bossMain(b,def,fm){
if(ks.hotT>0){ks.hotT--; if(ks.hotT>0){ks.hotT--;
if(ks.hotT===0){const list=ks.hotList||[ks.hot]; if(ks.hotT===0){const list=ks.hotList||[ks.hot];
for(const kh of list){if(kh<0)continue;const kx=-(n-1)*5+kh*10; // 与drawPiano键位一致整数键距10 for(const kh of list){if(kh<0)continue;const kx=-(n-1)*5+kh*10; // 与drawPiano键位一致整数键距10
bossBeam(b.x+kx,b.y+18,b.x+kx,H+8,4,"#43e8ff",7,22,18,{b,ox:kx,oy:18,followX2:true});} const sdur=(ks.mode<=1||ks.mode===4)?6:22; // 顺/反扫/滑奏光束6帧短闪同屏≤3条扫感清晰乱序/齐射保持22帧持续
bossBeam(b.x+kx,b.y+18,b.x+kx,H+8,4,"#43e8ff",7,sdur,18,{b,ox:kx,oy:18,followX2:true});}
ks.hotList=null;ks.hot=-1;SFX.eshoot();}} ks.hotList=null;ks.hot=-1;SFX.eshoot();}}
ks.t--; ks.t--;
if(ks.t<=0&&ks.hotT<=0){ if(ks.t<=0&&ks.hotT<=0){
@ -407,10 +408,10 @@ function bossMain(b,def,fm){
else if(ks.mode===2){ks.seq=shuffled(n);} else if(ks.mode===2){ks.seq=shuffled(n);}
else if(ks.mode===3){ks.seq=[];for(let i=0;i<6+ph*2;i++)ks.seq.push(-1);} // -1=齐射标记 else if(ks.mode===3){ks.seq=[];for(let i=0;i<6+ph*2;i++)ks.seq.push(-1);} // -1=齐射标记
else{ks.seq=[];for(let i=0;i<n-3;i++)ks.seq.push(i);for(let i=n-4;i>=0;i--)ks.seq.push(i);} // 滑奏:顺扫到尾立刻反扫回来 else{ks.seq=[];for(let i=0;i<n-3;i++)ks.seq.push(i);for(let i=n-4;i>=0;i--)ks.seq.push(i);} // 滑奏:顺扫到尾立刻反扫回来
ks.i=0;ks.t=Math.round((ph?14:22)/fm); ks.i=0;ks.t=Math.round(14/fm); // 局间停顿统一P1/P2同节奏不再阶段差异
}else{const cur=ks.seq[ks.i++]; }else{const cur=ks.seq[ks.i++];
if(cur===-1){const pool=shuffled(n);ks.hotList=pool.slice(0,4+ph*2);ks.hotT=9;ks.hotT0=9;ks.t=Math.round((ph?21:30)/fm);} // 齐射慢50% if(cur===-1){const pool=shuffled(n);ks.hotList=pool.slice(0,4+ph*2);ks.hotT=9;ks.hotT0=9;ks.t=Math.round((ph?21:30)/fm);} // 齐射慢50%
else if(ks.mode<=1||ks.mode===4){ks.hot=cur;ks.hotT=1;ks.hotT0=1;ks.t=Math.max(1,Math.round(2/(1.6*fm)));} // 顺扫/反扫/滑奏:统一极速P1/P2同速每键1帧≈0.3秒扫完全屏 else if(ks.mode<=1||ks.mode===4){ks.hot=cur;ks.hotT=1;ks.hotT0=1;ks.t=Math.max(2,Math.round(2/(1.6*fm)));} // 顺扫/反扫/滑奏:键间隔统一2帧P1/P2同速≈0.6秒扫完配合6帧短光束=干净扫射
else{if(ph>=1){ks.hotList=[cur,ks.i<ks.seq.length?ks.seq[ks.i++]:cur];ks.hot=-1;}else{ks.hot=cur;}ks.hotT=9;ks.hotT0=9;ks.t=Math.round((ph?3:5)/fm);} // 乱序P2一次点2键和音前摇与齐射一致(9帧) else{if(ph>=1){ks.hotList=[cur,ks.i<ks.seq.length?ks.seq[ks.i++]:cur];ks.hot=-1;}else{ks.hot=cur;}ks.hotT=9;ks.hotT0=9;ks.t=Math.round((ph?3:5)/fm);} // 乱序P2一次点2键和音前摇与齐射一致(9帧)
} }
} }