钢琴Boss:扫滑间隔改为0.3秒+乱序改为追踪键

- 顺扫/反扫/顺滑奏/反滑奏开局前蓄力从1秒改为0.3秒(60→18帧)
- 乱序模式:每次2个随机键+2个玩家正上方最近键(P2额外+2随机=6键)
- 正上方键取法:round((玩家相对x+100)/10)得最近键,次近键取相邻方向
This commit is contained in:
JOJO 2026-08-06 14:42:53 +08:00
parent 90c31ba38d
commit 10ee2e753b

View File

@ -422,10 +422,16 @@ function bossMain(b,def,fm){
else if(ks.mode===4){ks.seq=[];for(let i=0;i<5+ph*2;i++)ks.seq.push(-2);} // 乱序每次同时随机4/8键发射5+ph*2次
else if(ph>=1){ks.seq=[];for(let i=0;i<6+ph*2;i++)ks.seq.push(-1);} // 齐射P2保持原逻辑随机6键多次
else{ks.seq=[-3];} // 齐射P14连不射其余全射只发射一次
ks.i=0;ks.t=ks.mode<=3?Math.round(60/fm):0; // 扫/滑四种模式开局前蓄力1秒,其余无间隔
ks.i=0;ks.t=ks.mode<=3?Math.round(18/fm):0; // 扫/滑四种模式开局前蓄力0.3秒,其余无间隔
}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);} // 齐射P2
else if(cur===-2){const pool=shuffled(n);ks.hotList=pool.slice(0,4+ph*4);ks.hotT=9;ks.hotT0=9;ks.t=Math.round((ph?7:10)/fm);} // 乱序P1同时4键P2同时8键
else if(cur===-2){ // 乱序2个随机+2个玩家正上方
const p=G.p,base=-(n-1)*5,relX=p.x-b.x;
const kNear=clamp(Math.round((relX-base)/10),0,n-1);
const kNear2=clamp(kNear+(relX<base+kNear*10?-1:1),0,n-1);
const pool=shuffled(n).filter(k=>k!==kNear&&k!==kNear2);
ks.hotList=[kNear,kNear2].concat(pool.slice(0,2+ph*2));
ks.hotT=9;ks.hotT0=9;ks.t=Math.round((ph?7:10)/fm);}
else if(cur===-3){const safeStart=rndi(0,n-4);const all=[];for(let i=0;i<n;i++)if(i<safeStart||i>=safeStart+4)all.push(i);ks.hotList=all;ks.hotT=9;ks.hotT0=9;ks.t=Math.round((ph?10:15)/fm);} // 齐射P14连不射
else{ks.hot=cur;ks.hotT=1;ks.hotT0=1;ks.t=Math.max(1,Math.round((ph?1:2)/fm));} // 顺/反扫/滑奏:快速
}