钢琴Boss修复:恢复3键安全区+修复大激光TDZ与判断逻辑
- 顺扫/反扫/顺滑奏/反滑奏恢复3键安全区(顺/滑最右3键安全,反/反滑最左3键安全) - 大激光惩罚:将lck声明移到判断之前,修复暂时性死区(TDZ)bug - 大激光判断改为纯相对位置表达式,消除中间变量
This commit is contained in:
parent
f830edd0c6
commit
e2e1baf35d
@ -349,20 +349,19 @@ function updateBoss(){
|
|||||||
else if(tn.rec>0){tn.rec--;if(tn.rec<=0)b.tent=null;}
|
else if(tn.rec>0){tn.rec--;if(tn.rec<=0)b.tent=null;}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
const lck=(b.laserT||0)>0; // 巨宽核心激光期间压制其他攻击
|
||||||
// 钢琴:大炮塔惩罚激光——玩家站在炮塔正下方蓄力1秒后发射99999伤害大激光
|
// 钢琴:大炮塔惩罚激光——玩家站在炮塔正下方蓄力1秒后发射99999伤害大激光
|
||||||
if(b.idx===2&&!lck){
|
if(b.idx===2&&!lck){
|
||||||
const off0=b.phase>=1?16:0,p=G.p,warnW=14;
|
const off0=b.phase>=1?16:0,p=G.p,warnW=14;
|
||||||
const leftX=b.x-(112+off0),rightX=b.x+(112+off0);
|
if(p.dead<=0&&Math.abs(p.x-b.x+(112+off0))<warnW&&p.y>b.y){
|
||||||
if(p.dead<=0&&Math.abs(p.x-leftX)<warnW&&p.y>b.y){
|
|
||||||
b.pedLasL=(b.pedLasL||0)+1;
|
b.pedLasL=(b.pedLasL||0)+1;
|
||||||
if(b.pedLasL>=60){bossBeam(leftX,b.y+10,leftX,H+8,6,"#ff3355",10,40,99999,{b,ox:-(112+off0),oy:10,followX2:true});b.pedLasL=0;SFX.warn();}
|
if(b.pedLasL>=60){bossBeam(b.x-(112+off0),b.y+10,b.x-(112+off0),H+8,6,"#ff3355",10,40,99999,{b,ox:-(112+off0),oy:10,followX2:true});b.pedLasL=0;SFX.warn();}
|
||||||
}else b.pedLasL=0;
|
}else b.pedLasL=0;
|
||||||
if(p.dead<=0&&Math.abs(p.x-rightX)<warnW&&p.y>b.y){
|
if(p.dead<=0&&Math.abs(p.x-b.x-(112+off0))<warnW&&p.y>b.y){
|
||||||
b.pedLasR=(b.pedLasR||0)+1;
|
b.pedLasR=(b.pedLasR||0)+1;
|
||||||
if(b.pedLasR>=60){bossBeam(rightX,b.y+10,rightX,H+8,6,"#ff3355",10,40,99999,{b,ox:(112+off0),oy:10,followX2:true});b.pedLasR=0;SFX.warn();}
|
if(b.pedLasR>=60){bossBeam(b.x+(112+off0),b.y+10,b.x+(112+off0),H+8,6,"#ff3355",10,40,99999,{b,ox:(112+off0),oy:10,followX2:true});b.pedLasR=0;SFX.warn();}
|
||||||
}else b.pedLasR=0;
|
}else b.pedLasR=0;
|
||||||
}
|
}
|
||||||
const lck=(b.laserT||0)>0; // 巨宽核心激光期间压制其他攻击
|
|
||||||
// —— 主攻击 ——
|
// —— 主攻击 ——
|
||||||
b.mainT--;
|
b.mainT--;
|
||||||
if(b.mainT<=0&&!lck)bossMain(b,def,fm);
|
if(b.mainT<=0&&!lck)bossMain(b,def,fm);
|
||||||
@ -415,10 +414,10 @@ function bossMain(b,def,fm){
|
|||||||
if(ks.t<=0&&ks.hotT<=0){
|
if(ks.t<=0&&ks.hotT<=0){
|
||||||
if(ks.i>=ks.seq.length){ // 布下一局:完全随机选模式(6种),局间无间隔
|
if(ks.i>=ks.seq.length){ // 布下一局:完全随机选模式(6种),局间无间隔
|
||||||
ks.mode=rndi(0,6);
|
ks.mode=rndi(0,6);
|
||||||
if(ks.mode===0){ks.seq=[];for(let i=0;i<n;i++)ks.seq.push(i);} // 顺扫:全21键
|
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>=0;i--)ks.seq.push(i);} // 反扫:全21键
|
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;i++)ks.seq.push(i);for(let i=n-2;i>=0;i--)ks.seq.push(i);} // 顺滑奏:0→20→0(41键)
|
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>=0;i--)ks.seq.push(i);for(let i=1;i<n;i++)ks.seq.push(i);} // 反滑奏:20→0→20(41键)
|
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<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 if(ph>=1){ks.seq=[];for(let i=0;i<6+ph*2;i++)ks.seq.push(-1);} // 齐射P2:保持原逻辑(随机6键,多次)
|
||||||
else{ks.seq=[-3];} // 齐射P1:4连不射其余全射,只发射一次
|
else{ks.seq=[-3];} // 齐射P1:4连不射其余全射,只发射一次
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user