激光钢琴技能概率重分配
- 扫(顺/反)合占1/4(各1/8)、来回(顺/反)合占1/4(各1/8)——前摇0.3s→0.1s - 乱序(锁玩家+随机键)独立占1/4、齐射独立占1/4 - 乱序/齐射每次触发随机3~6轮(原固定/只一轮),齐射P1的4连不射大齐射统一为随机键齐射 - 模拟40万局:四组各25%,次数3~6均匀
This commit is contained in:
parent
029764d51f
commit
784a8ce0fe
@ -437,18 +437,21 @@ function bossMain(b,def,fm){
|
|||||||
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){
|
||||||
if(ks.i>=ks.seq.length){ // 布下一局:完全随机选模式(6种:0~5,勿写成6——会多占齐射档位稀释乱序),局间无间隔
|
if(ks.i>=ks.seq.length){ // 布下一局:加权随机——扫/来回各合1/4,乱序/齐射各1/4;局间无间隔
|
||||||
ks.mode=rndi(0,5);
|
const m=Math.random();
|
||||||
|
if(m<0.25)ks.mode=rndi(0,1); // 两个扫:合1/4(各1/8)
|
||||||
|
else if(m<0.5)ks.mode=rndi(2,3); // 两个来回:合1/4(各1/8)
|
||||||
|
else if(m<0.75)ks.mode=4; // 乱序:1/4(锁玩家+随机键)
|
||||||
|
else ks.mode=5; // 齐射:1/4
|
||||||
if(ks.mode===0){ks.seq=[];for(let i=0;i<n-3;i++)ks.seq.push(i);} // 顺扫:0→17,最右3键安全
|
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===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===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===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<5+ph*2;i++)ks.seq.push(-2);} // 乱序:每次同时随机4/8键,发射5+ph*2次
|
else if(ks.mode===4){ks.seq=[];for(let i=0;i<rndi(3,6);i++)ks.seq.push(-2);} // 乱序:每次触发随机3~6轮
|
||||||
else if(ph>=1){ks.seq=[];for(let i=0;i<6+ph*2;i++)ks.seq.push(-1);} // 齐射P2:保持原逻辑(随机6键,多次)
|
else{ks.seq=[];for(let i=0;i<rndi(3,6);i++)ks.seq.push(-1);} // 齐射:每次触发随机3~6轮(P1/P2统一随机键,键数随阶段)
|
||||||
else{ks.seq=[-3];} // 齐射P1:4连不射其余全射,只发射一次
|
ks.i=0;ks.t=ks.mode<=3?Math.round(6/fm):0; // 扫/来回开局前蓄力0.1秒(原0.3秒),其余无间隔
|
||||||
ks.i=0;ks.t=ks.mode<=3?Math.round(18/fm):0; // 扫/滑四种模式开局前蓄力0.3秒,其余无间隔
|
|
||||||
}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);} // 齐射P2
|
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个玩家正上方
|
else if(cur===-2){ // 乱序:2个随机+2个玩家正上方
|
||||||
const p=G.p,base=-(n-1)*5,relX=p.x-b.x;
|
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 kNear=clamp(Math.round((relX-base)/10),0,n-1);
|
||||||
@ -456,8 +459,7 @@ function bossMain(b,def,fm){
|
|||||||
const pool=shuffled(n).filter(k=>k!==kNear&&k!==kNear2);
|
const pool=shuffled(n).filter(k=>k!==kNear&&k!==kNear2);
|
||||||
ks.hotList=[kNear,kNear2].concat(pool.slice(0,2+ph*2));
|
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);}
|
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);} // 齐射P1:4连不射
|
else{ks.hot=cur;ks.hotT=1;ks.hotT0=1;ks.t=Math.max(1,Math.round((ph?1:2)/fm));} // 顺/反扫/来回:快速
|
||||||
else{ks.hot=cur;ks.hotT=1;ks.hotT0=1;ks.t=Math.max(1,Math.round((ph?1:2)/fm));} // 顺/反扫/滑奏:快速
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
b.mainT=4;break;}
|
b.mainT=4;break;}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user