From b9a59ae1729e4112922820894fda71db6bd980cb Mon Sep 17 00:00:00 2001 From: JOJO <1498581755@qq.com> Date: Thu, 6 Aug 2026 01:20:54 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=A0=E9=99=A4=E5=85=BD=E4=BA=BA=E6=88=98?= =?UTF-8?q?=E6=96=97=E6=9C=88=E4=BA=AE=EF=BC=88Boss=2011->10=E4=B8=AA?= =?UTF-8?q?=EF=BC=89=EF=BC=9A=E7=A7=BB=E9=99=A4BOSSES=E6=9D=A1=E7=9B=AE/ro?= =?UTF-8?q?k=E4=B8=BB=E6=94=BB=E5=87=BB/rockRain=E5=B0=8F=E6=94=BB?= =?UTF-8?q?=E5=87=BB/=E7=BB=98=E5=88=B6=E5=88=86=E6=94=AF/rockb=E7=B2=BE?= =?UTF-8?q?=E7=81=B5=EF=BC=8C=E9=BB=91=E7=9F=B39->8=E6=B3=B0=E4=BC=A610->9?= =?UTF-8?q?=E7=B4=A2=E5=BC=95=E9=87=8D=E7=BC=96=E5=8F=B7=EF=BC=9B=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E9=A1=B9=E7=9B=AE=E8=AE=B0=E5=BF=86boss=5Fdesign=5Fst?= =?UTF-8?q?andard?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- js/enemies.js | 13 +++---------- js/render.js | 23 +++-------------------- js/sprites.js | 3 +-- 3 files changed, 7 insertions(+), 32 deletions(-) diff --git a/js/enemies.js b/js/enemies.js index 8948848..6c68eeb 100644 --- a/js/enemies.js +++ b/js/enemies.js @@ -196,7 +196,6 @@ const BOSSES=[ {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:["chain","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:"ORK ROK",hp:2000,col:"#c8752a",r:26,rr:[26,29],ryy:[24,26],main:"rok",minors:["rockRain","spawnMini","snipe"],phases:2}, {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} ]; @@ -256,7 +255,7 @@ function updateFunnels(){ } function startBoss(){ const seq=[0,1,2,3,4,6]; // 闯关顺序:stage6=夺权者X压轴;母巢/魔碟在无尽轮换 - const idx=G.mode==="rush"?G.rushIdx:(G.mode==="stage"?seq[Math.min(5,G.stage-1)]:(G.bossN%11)); + const idx=G.mode==="rush"?G.rushIdx:(G.mode==="stage"?seq[Math.min(5,G.stage-1)]:(G.bossN%10)); const cyc=G.mode==="stage"?0:Math.floor(G.bossN/8); const b=BOSSES[idx],n=tierN(); 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"?3:1); // Boss挑战模式血量倍数(调平衡改这里) @@ -304,7 +303,7 @@ function updateBoss(){ b.mt++; 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.idx===9){ // 黑石要塞:亚空间主炮序列(纹路充能52帧→巨柱扫动80帧) + if(b.idx===8){ // 黑石要塞:亚空间主炮序列(纹路充能52帧→巨柱扫动80帧) if(!b.plT||b.plT<=0)b.plT=Math.round((b.phase>=1?380:460)/fm); else{ if(b.plT===142){b.laserT=142;b.warpChg=0.001;SFX.warn();} @@ -312,7 +311,7 @@ function updateBoss(){ if(b.plT===90){b.warpChg=0;bossBeam(b.x,b.y+6,b.x,H+8,b.phase>=1?24:20,"#5cff9d",10,80,30,{b,ox:0,oy:6,followX2:true,sweep:1,amp:b.phase>=1?70:50});} } } - if(b.idx===10){ // 泰伦触手扫击:9秒一次左右随机 + 玩家靠近立即触发对应侧 + if(b.idx===9){ // 泰伦触手扫击:9秒一次左右随机 + 玩家靠近立即触发对应侧 if(b.phase>=1&&!b.tent){const p=G.p; if(p.dead<=0&&Math.abs(p.x-b.x)<52&&p.y>b.y&&p.y0){const prog=1-b.transT/70; ox=rnd(-1.6,1.6);oy=rnd(-1.2,1.2); - if(b.idx===1||b.idx===3||b.idx===4||b.idx===6||b.idx===7||b.idx===8||b.idx===9||b.idx===10){mp=prog;if(prog>0.75)flashA=(1-prog)*1.6;} + if(b.idx===1||b.idx===3||b.idx===4||b.idx===6||b.idx===7||b.idx===8||b.idx===9){mp=prog;if(prog>0.75)flashA=(1-prog)*1.6;} else{sc=prog<0.5?1-0.16*(prog*2):0.84+0.16*((prog-0.5)*2); if(prog<0.5)ph2=b.phase-1; flashA=prog<0.5?prog*0.8:(1-prog)*0.8;}} @@ -109,24 +109,7 @@ function drawBoss(){ circ(0,-14,8,fl||"#43b8ff");circ(0,-14,4,"#bfefff"); px(-2,-36,4,18,"#43b8ff");px(-2,0,4,34,"#43b8ff"); ctx.restore();ctx.globalAlpha=1;} - }else if(b.idx===8){ // 兽人战斗月亮:锯齿岩月+发光兽人图腾;二阶段岩缝熔光、舷炮伸出(连续生长) - const op=mp!==null?mp:(ph2>=1?1:0); - poly([0,-34,20,-28,32,-12,34,8,24,26,8,34,-12,32,-28,22,-34,2,-30,-18,-14,-30],"#6a5a48"); // 岩体 - poly([0,-34,20,-28,32,-12,34,8,24,26,8,34,0,32],"#52452f"); // 背光面 - for(let i=0;i<5;i++){const px8=-27+i*11,py8=-24+(i%2)*11;px(px8,py8,9,7,"#8a8578");px(px8+3,py8+2,2,2,"#3a3430");} // 铆接铁板 - px(-31,-8,6,10,"#3a3430");px(25,-8,6,10,"#3a3430"); // 侧舷炮座(常存) - const bl8=4+op*9; // 炮管自炮座连续伸出 - px(-30,-4,4,bl8,"#241f1a");px(26,-4,4,bl8,"#241f1a"); - px(-30,-4+bl8,4,2,fl||"#ff7a2a");px(26,-4+bl8,4,2,fl||"#ff7a2a"); // 炮口 - ctx.globalAlpha=0.55+0.45*op; // 兽人图腾脸:发光随阶段增强 - px(-15,-8,9,8,fl||"#ff7a2a");px(6,-8,9,8,fl||"#ff7a2a"); // 怒目 - poly([-16,10,-11,16,-6,10,-1,16,4,10,9,16,14,10,16,14,10,20,0,23,-10,20,-16,14],fl||"#ffb02a"); // 獠牙巨口 - ctx.globalAlpha=1; - if(op>0){const cl=3+op*9; // 岩缝开裂生长(缝内透熔光) - ctx.globalAlpha=0.35+0.45*op; - px(-22,-26,3,cl,fl||"#ff5a2a");px(8,-16,3,cl*0.8,fl||"#ff5a2a");px(-6,0,3,cl*0.6,fl||"#ff5a2a"); - ctx.globalAlpha=1;} - }else if(b.idx===9){ // 黑石要塞:厚重箭头臂+五棱金字塔核心(俯视五芒星堡,缓慢旋转);纹路充能=主炮前摇 + }else if(b.idx===8){ // 黑石要塞:厚重箭头臂+五棱金字塔核心(俯视五芒星堡,缓慢旋转);纹路充能=主炮前摇 const op=mp!==null?mp:(ph2>=1?1:0); const chg=Math.max(b.warpChg||0,ph2>=1?0.55:0); // P2纹路常亮半格,主炮充能满亮 ctx.save();ctx.rotate(t*0.0032); // 整体缓慢旋转 @@ -156,7 +139,7 @@ function drawBoss(){ if(chg>0)circ(0,0,5+chg*3.5,`rgba(92,255,157,${chg*0.3})`); // 充能光晕 circ(0,0,4.5,"#0a2418");circ(0,0,3,fl||"#5cff9d");circ(0,0,1.3,"#d6ffe8"); // 亚空间核心 ctx.restore(); - }else if(b.idx===10){ // 泰伦母舰:锥形生物舰(头下尾上);P2头背甲壳裂开露眼+伸出触手;P3触手间展开环齿嘴 + }else if(b.idx===9){ // 泰伦母舰:锥形生物舰(头下尾上);P2头背甲壳裂开露眼+伸出触手;P3触手间展开环齿嘴 let op2,op3; if(ph2===0){op2=mp!==null?mp:0;op3=0;} else if(ph2===1){op2=1;op3=mp!==null?mp:0;} diff --git a/js/sprites.js b/js/sprites.js index 4b044bd..0cb46da 100644 --- a/js/sprites.js +++ b/js/sprites.js @@ -107,7 +107,7 @@ function orb(c1,c2){ ".HHCCCHH.", "...HHH..."],{H:halo,W:"#ffffff",C:c2}); } -const BHALO={orbR:"#ff5566",orbP:"#b05ce8",orbG:"#5cff9d",orbO:"#ff9a3d",dartB:"#3a8cd8",flowr:"#ff8fc8",dartS:"#5ec4ff",dartP:"#b98cff",rockb:"#8a7a62",shardB:"#5cff9d",spikeB:"#e8dcc0"}; +const BHALO={orbR:"#ff5566",orbP:"#b05ce8",orbG:"#5cff9d",orbO:"#ff9a3d",dartB:"#3a8cd8",flowr:"#ff8fc8",dartS:"#5ec4ff",dartP:"#b98cff",shardB:"#5cff9d",spikeB:"#e8dcc0"}; SPR.dartB=bake(["KCCCK",".CCC.",".CWC.","..C.."],{K:"#0d2433",C:"#3a8cd8",W:"#cfeaff"}); // 蓝色锥形敌弹(Boss弹幕) SPR.flowr=bake([ "....P....",".P..P..P.","..PPPPP..",".PPWWWPP.","PPPWWWPPP", @@ -116,7 +116,6 @@ SPR.flowr=bake([ SPR.dartS=bake(["CC","CC","CC","CC","CC","CC","CC","CC","CC","CC","WW","WW"], {W:"#f2fbff",C:"#5ec4ff"}); // 夺权者X:蓝白细长钉(2×12,白尖朝运动方向) SPR.dartP=bake(["KPPPK",".PPP.",".PWP.","..P.."],{K:"#2a1040",P:"#b98cff",W:"#ead9ff"}); // 暗黑魔碟:紫锥弹 -SPR.rockb=bake([".KKK.","KSSSK","KSWSK","KSSSK",".KKK."],{K:"#3a2f26",S:"#8a7a62",W:"#c8bca8"}); // 兽人战斗月亮:碎石弹 SPR.shardB=bake([".K.","KSK","KSK","KWK",".K."],{K:"#1a2436",S:"#46587a",W:"#5cff9d"}); // 黑石要塞:黑石碎片(绿芯,按飞行方向偏转) SPR.orbR=orb("#ffe9e9","#ff5566");SPR.orbP=orb("#f4e9ff","#b05ce8"); SPR.orbG=orb("#e9ffe9","#5cff9d");SPR.orbO=orb("#fff4d9","#ff9a3d");