钢琴恢复4连不射,按用户7技能规格重排

- 恢复4连不射(留4安全键其余全射,-3):1/4概率,每次触发随机3~6轮(此前误删,致歉)
- 删除误加的随机键齐射(-1)
- 7技能:两侧红激光独立触发(未动) + 顺/反扫各1/8 + 顺/反来回各1/8 + 乱序1/4 + 4连不射1/4
- 乱序(2瞄准+2随机)/4连不射均为3~6轮;扫/来回前摇0.1s
- 模拟40万局:扫25%/来回25%/乱序25%/4连不射25%
This commit is contained in:
JOJO 2026-08-06 17:09:41 +08:00
parent 5bca18e0bc
commit 03e6173de2

View File

@ -437,28 +437,28 @@ function bossMain(b,def,fm){
ks.hotList=null;ks.hot=-1;SFX.eshoot();}}
ks.t--;
if(ks.t<=0&&ks.hotT<=0){
if(ks.i>=ks.seq.length){ // 布下一局:按“每局激光量”均衡——扫18键/来回36键/乱序~18键/齐射~18键 → 概率2/7:1/7:2/7:2/7火力各~25%;局间无间隔
if(ks.i>=ks.seq.length){ // 布下一局:7技能——扫1/4(各1/8)、来回1/4(各1/8)、乱序1/4、4连不射1/4;局间无间隔
const m=Math.random();
if(m<2/7)ks.mode=rndi(0,1); // 两个扫合2/7各1/7
else if(m<3/7)ks.mode=rndi(2,3); // 两个来回合1/7各1/14
else if(m<5/7)ks.mode=4; // 乱序2/7锁玩家+随机键)
else ks.mode=5; // 齐射2/7
if(m<0.25)ks.mode=rndi(0,1); // 顺扫/反扫合1/4各1/8留3安全区
else if(m<0.5)ks.mode=rndi(2,3); // 顺来回/反来回合1/4各1/8留3安全区
else if(m<0.75)ks.mode=4; // 乱序2瞄准(玩家正上方)+2随机
else ks.mode=5; // 4连不射留4安全键其余全射
if(ks.mode===0){ks.seq=[];for(let i=0;i<n-3;i++)ks.seq.push(i);} // 顺扫0→17最右3键安全
else if(ks.mode===1){ks.seq=[];for(let i=n-1;i>=3;i--)ks.seq.push(i);} // 反扫20→3最左3键安全
else if(ks.mode===2){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);} // 顺来回0→17→0最右3键安全
else if(ks.mode===3){ks.seq=[];for(let i=n-1;i>=3;i--)ks.seq.push(i);for(let i=3;i<n;i++)ks.seq.push(i);} // 反来回20→3→20最左3键安全
else if(ks.mode===4){ks.seq=[];for(let i=0;i<rndi(3,6);i++)ks.seq.push(-2);} // 乱序每次触发随机3~6轮
else{ks.seq=[];for(let i=0;i<rndi(3,6);i++)ks.seq.push(-1);} // 齐射每次触发随机3~6轮P1/P2统一随机键键数随阶段
ks.i=0;ks.t=ks.mode<=3?Math.round(6/fm):0; // 扫/来回开局前蓄力0.1秒原0.3秒),其余无间隔
else{ks.seq=[];for(let i=0;i<rndi(3,6);i++)ks.seq.push(-3);} // 4连不射每次触发随机3~6轮
ks.i=0;ks.t=ks.mode<=3?Math.round(6/fm):0; // 扫/来回开局前蓄力0.1秒,其余无间隔
}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);} // 齐射:随机键
else if(cur===-2){ // 乱序2个随机+2个玩家正上方
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);} // 4连不射留4安全键其余全射
else{ks.hot=cur;ks.hotT=1;ks.hotT0=1;ks.t=Math.max(1,Math.round((ph?1:2)/fm));} // 顺/反扫/来回:快速
}
}