修复暗黑突击左右闪现:入场判定加landed一次性锁(正弦浮沉跌破ty重复触发入场重置x=120);冲撞锚点改为出发位置+移动时钟mt冲撞/变身期冻结
This commit is contained in:
parent
ca36daaee0
commit
5d4ce6b969
@ -195,15 +195,15 @@ function startBoss(){
|
|||||||
const hpM=(G.diff===1?BAL.hard.hp:1)*(1+0.35*cyc)*(G.mode==="endless"?1+0.55*G.bossN+0.1*G.wave:1+0.12*(G.stage-1))*(G.mode==="rush"?1:1); // Boss挑战模式血量倍数(调平衡改这里)
|
const hpM=(G.diff===1?BAL.hard.hp:1)*(1+0.35*cyc)*(G.mode==="endless"?1+0.55*G.bossN+0.1*G.wave:1+0.12*(G.stage-1))*(G.mode==="rush"?1:1); // Boss挑战模式血量倍数(调平衡改这里)
|
||||||
G.boss={idx,x:W/2,y:-60,ty:64,hp:b.hp*hpM,maxhp:b.hp*hpM,r:(b.rr?b.rr[0]:b.r),ry:(b.ryy?b.ryy[0]:undefined),t:0,phase:0,transT:0,
|
G.boss={idx,x:W/2,y:-60,ty:64,hp:b.hp*hpM,maxhp:b.hp*hpM,r:(b.rr?b.rr[0]:b.r),ry:(b.ryy?b.ryy[0]:undefined),t:0,phase:0,transT:0,
|
||||||
col:b.col,name:b.name,sub:b.sub,fireM:BAL.fireMul(n)*(G.diff===1?BAL.hard.fire:1),dead:false,
|
col:b.col,name:b.name,sub:b.sub,fireM:BAL.fireMul(n)*(G.diff===1?BAL.hard.fire:1),dead:false,
|
||||||
mainT:100,minorT:9999,minorSet:[],rerollT:340,ax:W/2,ay:64};
|
mainT:100,minorT:9999,minorSet:[],rerollT:340,ax:W/2,ay:64,mt:0,landed:false};
|
||||||
G.bossN++;SFX.warn();MUS.start(true);
|
G.bossN++;SFX.warn();MUS.start(true);
|
||||||
banner("WARNING — "+b.name,"#ff5566",150);
|
banner("WARNING — "+b.name,"#ff5566",150);
|
||||||
}
|
}
|
||||||
function updateBoss(){
|
function updateBoss(){
|
||||||
const b=G.boss;if(!b)return;
|
const b=G.boss;if(!b)return;
|
||||||
b.t++;
|
b.t++;
|
||||||
if(b.y<b.ty){b.y+=1.2;b.x=W/2;return;}
|
if(!b.landed){if(b.y<b.ty){b.y+=1.2;b.x=W/2;return;}b.landed=true;} // 入场只跑一次:到位后锁定,防正弦浮沉跌回触发重置
|
||||||
if(b.arr===undefined)b.arr=b.t; // 降落结束时刻,正弦从0起振,杜绝瞬移
|
// b.mt:移动时钟,只在常规移动时推进——冲撞/变身期间冻结,恢复时位置连续不瞬移
|
||||||
const def=BOSSES[b.idx];
|
const def=BOSSES[b.idx];
|
||||||
// —— 阶段检测与变形(锁血转场:清弹+停火+播动画) ——
|
// —— 阶段检测与变形(锁血转场:清弹+停火+播动画) ——
|
||||||
const ratio=b.hp/b.maxhp,thr=def.phases===2?[0.5]:[0.66,0.33];
|
const ratio=b.hp/b.maxhp,thr=def.phases===2?[0.5]:[0.66,0.33];
|
||||||
@ -231,8 +231,9 @@ function updateBoss(){
|
|||||||
}
|
}
|
||||||
// —— 常规移动 ——
|
// —— 常规移动 ——
|
||||||
if(def.static){b.x+=(W/2-b.x)*0.05;b.y+=(52-b.y)*0.02;}
|
if(def.static){b.x+=(W/2-b.x)*0.05;b.y+=(52-b.y)*0.02;}
|
||||||
else if(b.idx===3){b.x=W/2+Math.sin((b.t-b.arr)*0.021)*62;b.y=b.ty+Math.sin((b.t-b.arr)*0.013)*15;} // 暗黑突击:小体型高机动
|
else if(b.idx===3){b.x=W/2+Math.sin(b.mt*0.021)*62;b.y=b.ty+Math.sin(b.mt*0.013)*15;} // 暗黑突击:小体型高机动
|
||||||
else b.x=W/2+Math.sin((b.t-b.arr)*0.008)*(def.wide?44:70); // 宽体Boss减小游走幅度,防止巨翼出屏
|
else b.x=W/2+Math.sin(b.mt*0.008)*(def.wide?44:70); // 宽体Boss减小游走幅度,防止巨翼出屏
|
||||||
|
b.mt++;
|
||||||
const fm=b.fireM*(1+0.22*b.phase);
|
const fm=b.fireM*(1+0.22*b.phase);
|
||||||
if(b.fnT>0)b.fnT--;if(b.plT>0)b.plT--;if(b.eyeT>0)b.eyeT--;if(b.hornT>0)b.hornT--;if(b.laserT>0)b.laserT--; // 帧级技能计时器
|
if(b.fnT>0)b.fnT--;if(b.plT>0)b.plT--;if(b.eyeT>0)b.eyeT--;if(b.hornT>0)b.hornT--;if(b.laserT>0)b.laserT--; // 帧级技能计时器
|
||||||
const lck=(b.laserT||0)>0; // 巨宽核心激光期间压制其他攻击
|
const lck=(b.laserT||0)>0; // 巨宽核心激光期间压制其他攻击
|
||||||
@ -271,8 +272,8 @@ function bossMain(b,def,fm){
|
|||||||
const arms=2+ph;
|
const arms=2+ph;
|
||||||
for(let arm=0;arm<arms;arm++)for(let i=0;i<2;i++)ebul(b.x,b.y,b.t*0.06+arm*(TAU/arms)+i*0.14,2+0.2*ph,"orbP");
|
for(let arm=0;arm<arms;arm++)for(let i=0;i<2;i++)ebul(b.x,b.y,b.t*0.06+arm*(TAU/arms)+i*0.14,2+0.2*ph,"orbP");
|
||||||
b.mainT=Math.round(10/fm);break;}
|
b.mainT=Math.round(10/fm);break;}
|
||||||
case "assault": // 暗黑突击:启动冲撞
|
case "assault": // 暗黑突击:启动冲撞(锚点记当前位置,冲撞归来后正弦从此继续)
|
||||||
b.dashSt={ph:"tele",t:52};b.mainT=9999;break;
|
b.dashSt={ph:"tele",t:52};b.ax=b.x;b.ay=b.y;b.mainT=9999;break;
|
||||||
case "piano": { // 激光钢琴:21键,四种模式轮换——顺扫(逼走位)/反扫/乱序/齐射
|
case "piano": { // 激光钢琴:21键,四种模式轮换——顺扫(逼走位)/反扫/乱序/齐射
|
||||||
if(!b.keys)b.keys={n:21,seq:[],i:0,t:40,hot:-1,hotT:0,hotList:null,mode:3};
|
if(!b.keys)b.keys={n:21,seq:[],i:0,t:40,hot:-1,hotT:0,hotList:null,mode:3};
|
||||||
const ks=b.keys,n=ks.n;
|
const ks=b.keys,n=ks.n;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user