From f3e93b2ff2367a4bb2664d19b16376206b6cd21e Mon Sep 17 00:00:00 2001 From: JOJO <1498581755@qq.com> Date: Thu, 6 Aug 2026 03:43:37 +0800 Subject: [PATCH] =?UTF-8?q?=E9=92=A2=E7=90=B4=E8=A1=80=E9=87=8F2500?= =?UTF-8?q?=E2=86=925000=E7=BF=BB=E5=80=8D=EF=BC=9B=E5=A4=BA=E6=9D=83?= =?UTF-8?q?=E8=80=85X=E4=BD=93=E9=87=8F=E6=94=BE=E5=A4=A7=EF=BC=88P1?= =?UTF-8?q?=E6=95=B4=E4=BD=931.25x=3D=E5=8F=82=E8=80=83=E5=9B=BE=E5=8D=A0?= =?UTF-8?q?=E5=B1=8F2/3=E5=AE=BD=E6=AF=8D=E8=88=B0=EF=BC=8CP2=E6=88=98?= =?UTF-8?q?=E6=9C=BA1.15x=E5=8A=A0=E5=8E=9A=EF=BC=89=EF=BC=8C=E5=88=A4?= =?UTF-8?q?=E5=AE=9Arr[0]52=E2=86=9258=E5=90=8C=E6=AD=A5=EF=BC=8C=E5=8F=91?= =?UTF-8?q?=E5=B0=84=E7=82=B9/=E7=82=AE=E4=BD=8D=E6=8C=89=E6=94=BE?= =?UTF-8?q?=E5=A4=A7=E5=90=8E=E5=9D=90=E6=A0=87=E5=90=8C=E6=AD=A5=EF=BC=9B?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=8D=A2=E4=BA=8C=E9=98=B6=E6=AE=B5=E6=9C=BA?= =?UTF-8?q?=E8=BA=AB=E7=9E=AC=E7=A7=BB=EF=BC=9A=E7=A7=BB=E5=8A=A8=E4=BB=8E?= =?UTF-8?q?=E7=BB=9D=E5=AF=B9=E6=AD=A3=E5=BC=A6=E5=85=AC=E5=BC=8F=E6=94=B9?= =?UTF-8?q?=E9=80=9F=E5=BA=A6=E7=A7=AF=E5=88=86=E5=AE=9A=E4=BD=8D=EF=BC=88?= =?UTF-8?q?usp/amp=E7=AA=81=E5=8F=98=E4=BD=8D=E7=BD=AE=E4=B9=9F=E8=BF=9E?= =?UTF-8?q?=E7=BB=AD=EF=BC=89=EF=BC=8Cy=E6=8C=AF=E5=B9=85=E7=BC=93?= =?UTF-8?q?=E5=8F=98=E3=80=82=E4=BB=85=E8=AF=AD=E6=B3=95=E6=A3=80=E6=9F=A5?= =?UTF-8?q?=E9=80=9A=E8=BF=87=EF=BC=8C=E6=9C=AA=E8=BF=90=E8=A1=8C=E9=AA=8C?= =?UTF-8?q?=E8=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- star-raid/js/boss_art.js | 8 ++++---- star-raid/js/enemies.js | 12 +++++++----- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/star-raid/js/boss_art.js b/star-raid/js/boss_art.js index fe898bb..f398841 100644 --- a/star-raid/js/boss_art.js +++ b/star-raid/js/boss_art.js @@ -82,7 +82,7 @@ function drawUsurper(b,t,fl,ph2,mp){ const jt=mp||0; // —— P2粗壮宽翼战机(壳下常存,mp渐显;宽翼+厚机身+三引擎,绝不细瘦) —— if(ph2>=1){const di=mp!==null?mp:1; - ctx.save();ctx.globalAlpha=di;const ds=0.7+0.3*di;ctx.scale(ds,ds); + ctx.save();ctx.globalAlpha=di;const ds=(0.7+0.3*di)*1.15;ctx.scale(ds,ds); for(const sd of[-1,1]){ // 后掠宽翼(翼展±30) poly([sd*11,0,sd*28,-13,sd*32,-7,sd*13,8],"#c9d6e2"); poly([sd*11,0,sd*28,-13,sd*26,-10,sd*12,3],"#e8f4ff"); // 翼面受光 @@ -104,8 +104,8 @@ function drawUsurper(b,t,fl,ph2,mp){ px(sd*5-1.5,-38-(t%4),3,3+(t%4),t%6<3?"#7fd8ff":"#43b8ff");} px(-1.5,-34,3,3,"#5a6c80");px(-1,-39-(t%4),2,2+(t%4),"#7fd8ff"); ctx.restore();ctx.globalAlpha=1;} - // —— P1巨舰(变形=甲板抛离飞走+舰体淡出) —— - if(ph2===0||mp!==null){const hullA=1-jt; + // —— P1巨舰(变形=甲板抛离飞走+舰体淡出;整体1.25倍放大=参考图体量) —— + if(ph2===0||mp!==null){ctx.save();ctx.scale(1.25,1.25);const hullA=1-jt; if(hullA>0.02){ctx.save();ctx.globalAlpha=hullA; // 主舰体:三段式宽塔(厚重霸气) poly([0,36,-24,14,-20,-14,-12,-36,12,-36,20,-14,24,14],"#d8e4f0"); @@ -149,7 +149,7 @@ function drawUsurper(b,t,fl,ph2,mp){ px(tx3-1,dy-12,1.5,5,"#5a6c80");px(tx3+1,dy-12,1.5,5,"#5a6c80"); px(tx3-1.5,dy-14,2,2,"#ff3355");px(tx3+0.5,dy-14,2,2,"#ff3355");} ctx.restore();ctx.globalAlpha=1;} - } + ctx.restore();} } /* ---- 暗黑魔碟:8扇区缝合装甲碟+红能量窗/裂纹+紫红竖瞳魔眼 ---- 变形沿用原机制(mp优先):P2圆环绕顶轴外旋裂开+魔眼点亮;P3爆甲壳板飞离+铆钉伸长成刺+犄角炮台 */ diff --git a/star-raid/js/enemies.js b/star-raid/js/enemies.js index 1a0c13b..10751e4 100644 --- a/star-raid/js/enemies.js +++ b/star-raid/js/enemies.js @@ -192,9 +192,9 @@ const BOSSES=[ {name:"太空原种",sub:"SPACE SPAWN",hp:1350,col:"#ff8fc8",r:20,rr:[20,34],ryy:[26,18],wide:1,main:"spawn",minors:["wiggle","spikeSnipe","sporeArc","tentBeam","mawSnipe","wingRain"],phases:2}, {name:"歼灭者",sub:"ANNIHILATOR",hp:1700,col:"#b05ce8",r:22,main:"annihilate",minors:["aimSpread","spawnMine"],phases:3}, {name:"暗黑突击",sub:"DARK ASSAULT",hp:2100,col:"#ff3355",r:9,rr:[9,10,11],ryy:[5,6,7],main:"assault",minors:["rain","aimSpread"],phases:3}, - {name:"激光钢琴",sub:"LASER PIANO",hp:2500,col:"#43e8ff",r:26,rr:[100,100],ryy:[30,30],main:"piano",minors:["topRain","pedal"],phases:2,static:1}, + {name:"激光钢琴",sub:"LASER PIANO",hp:5000,col:"#43e8ff",r:26,rr:[100,100],ryy:[30,30],main:"piano",minors:["topRain","pedal"],phases:2,static:1}, {name:"母巢核心",sub:"HIVE CORE",hp:2800,col:"#ff9a3d",r:22,main:"hive",minors:["spawnMini","aimSpread","ring"],phases:3}, - {name:"夺权者X",sub:"USURPER X",hp:3700,col:"#e8f4ff",r:24,rr:[52,26],ryy:[34,40],wide:1,main:"usurper",minors:["deckVolley","pillar","aimSpread"],phases:2}, + {name:"夺权者X",sub:"USURPER X",hp:3700,col:"#e8f4ff",r:24,rr:[58,26],ryy:[34,40],wide:1,main:"usurper",minors:["deckVolley","pillar","aimSpread"],phases:2}, {name:"暗黑魔碟",sub:"DARK SAUCER",hp:4500,col:"#8a5cff",r:24,rr:[30,32,34],main:"saucer",minors:["ringBig","coneFan","crossEye","dartSpiral"],phases:3}, {name:"黑石要塞",sub:"BLACKSTONE",hp:3400,col:"#5cff9d",r:30,rr:[34,37],ryy:[26,28],wide:1,main:"blackstone",minors:["deckGuns","crackRift","starLine"],phases:2}, {name:"泰伦虫族母舰",sub:"TYRANID HIVESHIP",hp:3200,col:"#7dff8a",r:26,rr:[26,29,32],ryy:[36,38,40],main:"hivespawn",minors:["sporeBloom","tentSweep","acidGas"],phases:3} @@ -300,7 +300,9 @@ function updateBoss(){ // —— 常规移动 —— 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.mt*0.034)*62;b.y=b.ty+Math.sin(b.mt*0.021)*18;} // 暗黑突击:小体型高机动(空闲大幅提速) - else if(b.idx===6){const usp=b.phase>=1?0.028:0.008;b.x=W/2+Math.sin(b.mt*usp)*(b.phase>=1?70:44);b.y=b.ty+Math.sin(b.mt*0.011)*(b.phase>=1?12:8);} // 夺权者X:P1巨大笨重→P2紧凑灵活 + else if(b.idx===6){const usp=b.phase>=1?0.028:0.008,amp=b.phase>=1?70:44; + b.x=clamp(b.x+amp*usp*Math.cos(b.mt*usp),30,W-30); // 速度积分定位:换阶段参数突变也不瞬移 + b.yA=(b.yA||8)+((b.phase>=1?12:8)-b.yA)*0.05;b.y=b.ty+Math.sin(b.mt*0.011)*b.yA;} // 夺权者X:P1巨大笨重→P2紧凑灵活 else{b.x=W/2+Math.sin(b.mt*0.013)*(def.wide?44:70);b.y=b.ty+Math.sin(b.mt*0.011)*(def.wide?8:12);} // 通用游走提速+上下浮动(钢琴站桩除外) b.mt++; const fm=b.fireM*(1+0.22*b.phase); @@ -309,7 +311,7 @@ function updateBoss(){ const span=46*(0.22+0.78*(b.phase>=1?1:0.62)); ebul(b.x+rnd(-span,span),b.y+rnd(-10,2),Math.PI/2+rnd(-0.08,0.08),rnd(2.2,3.4),"orbR",12);} if(b.idx===6&&b.deckT>0){b.deckT--; // 夺权者X:甲板齐射——炮口逐个点亮(前摇26帧)后6发垂直弹雨 - if(b.deckT===0)for(const sd of[-1,1])for(const gx of[14,24,44])ebul(b.x+sd*gx,b.y+6,Math.PI/2,2.6,"dartB",14);} + if(b.deckT===0)for(const sd of[-1,1])for(const gx of[18,30,55])ebul(b.x+sd*gx,b.y+9,Math.PI/2,2.6,"dartB",14);} if(b.idx===8){ // 黑石要塞:亚空间主炮序列(纹路充能52帧→巨柱扫动80帧) if(!b.plT||b.plT<=0)b.plT=Math.round((b.phase>=1?380:460)/fm); else{ @@ -432,7 +434,7 @@ function bossMain(b,def,fm){ case "usurper": // 夺权者X:蓝白长钉无人机(P1两架/P2四架僚机);P2周期性巨宽核心激光(压制其他攻击) if(ph===0){ if(!b.fn0){b.fn0=1;spawnFunnels(b,2);} - for(const sd of[-1,1]){const px2=b.x+sd*14,py2=b.y+6,a6=Math.atan2(ap2.y-py2,ap2.x-px2); + for(const sd of[-1,1]){const px2=b.x+sd*18,py2=b.y+9,a6=Math.atan2(ap2.y-py2,ap2.x-px2); ebul(px2,py2,a6,4.4,"dartS",15);} // 发射点=最下甲板炮口(与drawUsurper同源) b.mainT=Math.round(46/fm); }else{