From 93e1f4699d62ac3381bd5cf45dea3c3695dd63be Mon Sep 17 00:00:00 2001 From: JOJO <1498581755@qq.com> Date: Thu, 6 Aug 2026 03:51:28 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=A4=BA=E6=9D=83=E8=80=85X?= =?UTF-8?q?=E6=97=A0=E6=95=8C+=E9=9A=90=E5=BD=A2bug=EF=BC=9AyA=E7=BC=93?= =?UTF-8?q?=E5=8F=98=E5=BC=8F=E5=87=8F=E6=95=B0=E7=94=A8=E8=A3=B8undefined?= =?UTF-8?q?=E2=86=92NaN=E2=86=92y=3DNaN=EF=BC=88bossHit=E6=B0=B8=E4=B8=8D?= =?UTF-8?q?=E5=91=BD=E4=B8=AD=EF=BC=89=EF=BC=9B=E5=B7=B2=E4=BF=AE=E5=B9=B6?= =?UTF-8?q?node=E5=9B=9E=E5=BD=92=E6=A8=A1=E6=8B=9F=E9=AA=8C=E8=AF=81?= =?UTF-8?q?=E3=80=82=E5=A4=BA=E6=9D=83=E8=80=85X=E5=A4=96=E8=A7=82v3?= =?UTF-8?q?=E9=87=8D=E5=81=9A=EF=BC=88=E4=B8=A5=E6=A0=BC=E6=8C=89=E5=8F=82?= =?UTF-8?q?=E8=80=83=E5=9B=BE=EF=BC=89=EF=BC=9A=E5=87=A0=E4=BD=95=E8=A3=85?= =?UTF-8?q?=E7=94=B2=E6=9D=BF=E6=8B=BC=E8=A3=85=E2=80=94=E2=80=94=E4=BA=A4?= =?UTF-8?q?=E9=94=99=E8=A3=85=E7=94=B2=E7=BF=BC=E6=9D=BF=C3=973/=E4=BE=A7+?= =?UTF-8?q?=E6=A0=BC=E6=A0=85=E7=BF=BC=E8=93=9D=E6=9D=A1=E7=BA=B9=C3=973+?= =?UTF-8?q?=E4=B8=89=E8=81=94=E7=BA=A2=E7=82=AE=E5=8F=A3=E6=AD=A6=E5=99=A8?= =?UTF-8?q?=E8=88=B1=EF=BC=88=E9=BB=84=E6=A0=87=E8=AF=86/=E8=88=B1?= =?UTF-8?q?=E4=B8=8B=E5=8F=8C=E7=82=AE=E7=AE=A1=EF=BC=89+=E7=AE=AD?= =?UTF-8?q?=E5=BD=A2=E4=B8=BB=E8=88=B0=E4=BD=93=EF=BC=88=E4=B8=AD=E8=84=8A?= =?UTF-8?q?=E5=85=89=E5=B8=A6/=E5=8F=8D=E5=BA=94=E7=8E=AF/=E9=95=BF?= =?UTF-8?q?=E6=9D=A1=E8=93=9D=E7=AA=97/=E6=9D=BF=E7=BC=9D=E9=93=86?= =?UTF-8?q?=E9=92=89/=E5=BC=95=E6=93=8E=E5=88=97=EF=BC=89=EF=BC=9BP2?= =?UTF-8?q?=E5=90=8C=E9=A3=8E=E6=A0=BC=E5=A3=AE=E5=AE=9E=E6=88=98=E6=9C=BA?= =?UTF-8?q?=EF=BC=88=E5=AE=BD=E7=BF=BC=E6=9D=BF+=E5=B0=8F=E6=AD=A6?= =?UTF-8?q?=E5=99=A8=E8=88=B1+=E7=B2=97=E7=AE=AD=E5=BD=A2=E6=9C=BA?= =?UTF-8?q?=E8=BA=AB=EF=BC=89=EF=BC=9B=E5=8F=91=E5=B0=84=E7=82=B9=E6=94=B9?= =?UTF-8?q?=E6=AD=A6=E5=99=A8=E8=88=B1=E7=82=AE=E5=8F=A3=EF=BC=88=C2=B150/?= =?UTF-8?q?56/62=EF=BC=89=E3=80=82=E4=BB=85=E8=AF=AD=E6=B3=95=E6=A3=80?= =?UTF-8?q?=E6=9F=A5+=E9=80=BB=E8=BE=91=E6=A8=A1=E6=8B=9F=E9=AA=8C?= =?UTF-8?q?=E8=AF=81=EF=BC=8C=E6=9C=AA=E8=BF=90=E8=A1=8C=E6=B8=B8=E6=88=8F?= =?UTF-8?q?=E9=AA=8C=E8=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- star-raid/js/boss_art.js | 139 ++++++++++++++++++++------------------- star-raid/js/enemies.js | 6 +- 2 files changed, 75 insertions(+), 70 deletions(-) diff --git a/star-raid/js/boss_art.js b/star-raid/js/boss_art.js index f398841..a888fa4 100644 --- a/star-raid/js/boss_art.js +++ b/star-raid/js/boss_art.js @@ -76,80 +76,85 @@ function drawPiano(b,t,fl,split){ ctx.beginPath();ctx.arc(kx,28,2+3.5*pr,0,TAU);ctx.fill(); ctx.globalAlpha=1;}} } -/* ---- 夺权者X:P1三层阶梯甲板母舰(巨大厚重)→ P2抛甲板露粗壮宽翼战机(紧凑但不细瘦) ---- - 无眼睛设计(机械反应环,非生物眼);变形=甲板整体抛离旋转飞走+机身渐显(壳下常存) */ +/* ---- 夺权者X:几何装甲板拼装宽体楔形母舰(P1)→ 抛侧舱同风格壮实战机(P2) ---- + 参考图核心特征:交错装甲板+深板缝+蓝色发光条纹格栅翼+三联红炮口武器舱+橙/黄小标识;无生物眼(机械反应环) */ function drawUsurper(b,t,fl,ph2,mp){ const jt=mp||0; - // —— P2粗壮宽翼战机(壳下常存,mp渐显;宽翼+厚机身+三引擎,绝不细瘦) —— + // —— P2同风格壮实战机(壳下常存,mp渐显;宽翼板+小武器舱+粗箭形机身) —— if(ph2>=1){const di=mp!==null?mp:1; - 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"); // 翼面受光 - drawSeg(sd*12,-1,sd*27,-11,2,"#43b8ff",0.9); // 前缘蓝灯带 - px(sd*28-2,-13,4,3,"#ff9a3d"); // 翼尖橙标识 - px(sd*12,4,3,3,"#ff3355");} // 翼根红炮口 - poly([0,32,-13,16,-11,-18,-6,-32,6,-32,11,-18,13,16],"#e8f4ff"); // 粗壮机身 - poly([0,32,13,16,11,-18,6,-32,0,-32],"#9fb0c6"); - px(-11,-18,22,2,"#5a6c80");px(-9,-6,18,2,"#5a6c80"); // 装甲板缝 - px(-13,16,26,3,"#ffffff"); // 底缘受光(粗边框感) - // 中央反应环(机械环非眼睛:外环+旋转弧段+内芯搏动) - circ(0,-10,7,"#0d2244"); - ctx.strokeStyle=fl||"#43b8ff";ctx.lineWidth=2;ctx.beginPath();ctx.arc(0,-10,7,0,TAU);ctx.stroke(); - for(let k=0;k<3;k++){const ra=t*0.03+k*TAU/3; - ctx.beginPath();ctx.arc(0,-10,7,ra,ra+0.8);ctx.stroke();} - circ(0,-10,3+Math.sin(t*0.1)*0.5,"#bfefff"); - if(b.laserT>0){ctx.globalAlpha=di*0.5;circ(0,-10,10,"#7ce9ff");ctx.globalAlpha=di;} // 巨宽激光期高亮 - for(const sd of[-1,1]){px(sd*5-2,-34,4,3,"#5a6c80"); // 三引擎尾焰 - 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.save();ctx.globalAlpha=di;const ds=0.75+0.25*di;ctx.scale(ds,ds); + for(const sd of[-1,1]){ctx.save();ctx.scale(sd,1); // 后掠翼板(蓝条纹+橙标识+翼根炮口) + poly([10,-16,34,-24,40,-14,34,-6,12,-6],"#c9d6e2"); + poly([10,-16,34,-24,30,-19,12,-11],"#e8f4ff"); // 翼面受光 + drawSeg(14,-10,30,-19,2,"#43b8ff",0.85); // 蓝色翼纹 + px(30,-22,4,3,"#ff9a3d");px(12,-5,3,3,"#ff3355"); + px(18,4,12,12,"#c9d6e2");px(20,6,8,6,"#2a3444"); // 小武器舱 + px(21,7,3,3,"#ff3355");px(25,7,3,3,"#ff3355"); // 双联红炮口 + px(21,16,3,6,"#5a6c80");px(25,16,3,6,"#5a6c80"); // 舱下炮管 + ctx.restore();} + poly([0,46,-15,12,-13,-24,-8,-34,8,-34,13,-24,15,12],"#e8f4ff"); // 粗箭形机身 + poly([0,46,15,12,13,-24,8,-34,0,-34],"#9fb0c6"); + px(-1,-22,2,52,t%50<25?"#43b8ff":"#2a5a78"); // 中脊蓝色光带(搏动) + px(-13,-24,26,2,"#5a6c80");px(-11,-4,22,2,"#5a6c80"); // 装甲板缝 + circ(0,-14,7,"#0d2244"); // 中央反应环(机械环非眼睛) + ctx.strokeStyle=fl||"#43b8ff";ctx.lineWidth=2;ctx.beginPath();ctx.arc(0,-14,7,0,TAU);ctx.stroke(); + for(let k=0;k<3;k++){const ra=t*0.03+k*TAU/3;ctx.beginPath();ctx.arc(0,-14,7,ra,ra+0.8);ctx.stroke();} + circ(0,-14,3+Math.sin(t*0.1)*0.5,"#bfefff"); + if(b.laserT>0){ctx.globalAlpha=di*0.5;circ(0,-14,10,"#7ce9ff");ctx.globalAlpha=di;} + px(-2,2,4,16,"#0d2244");px(-1,4,2,12,t%40<20?"#7fd8ff":"#2a5a78"); // 中线长条蓝窗(参考图特征) + for(const sd of[-1,1]){px(sd*6-2,-36,4,3,"#5a6c80"); // 双引擎尾焰 + px(sd*6-1.5,-40-(t%4),3,3+(t%4),t%6<3?"#7fd8ff":"#43b8ff");} ctx.restore();ctx.globalAlpha=1;} - // —— 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"); - poly([0,36,24,14,20,-14,12,-36,0,-36],"#9fb0c6"); - px(-24,14,48,3,"#e8f4ff"); // 底缘受光 - px(-20,2,40,2,"#5a6c80");px(-16,-14,32,2,"#5a6c80");px(-12,-24,24,2,"#5a6c80"); // 层间板缝 - for(let k=0;k<6;k++)px(-18+k*7,-1,2,2,"#8a9ab8"); // 装甲铆钉 - // 指挥塔(顶部)+天线 - px(-8,-44,16,8,"#c9d6e2");px(-5,-50,10,6,"#9fb0c6"); - px(-1,-56,2,6,"#5a6c80");px(-1.5,-58,3,2,t%30<15?"#ff3355":"#7a1622"); - // 中央反应环(机械环非眼睛:外环+旋转弧段+内芯搏动) - circ(0,-6,9,"#0d2244"); - ctx.strokeStyle=fl||"#43b8ff";ctx.lineWidth=2;ctx.beginPath();ctx.arc(0,-6,9,0,TAU);ctx.stroke(); - for(let k=0;k<3;k++){const ra=t*0.02+k*TAU/3; - ctx.globalAlpha=hullA*0.85;ctx.beginPath();ctx.arc(0,-6,9,ra,ra+0.7);ctx.stroke();ctx.globalAlpha=hullA;} - circ(0,-6,4+Math.sin(t*0.08)*0.6,"#bfefff"); - if(b.laserT>0){ctx.globalAlpha=hullA*0.5;circ(0,-6,12,"#7ce9ff");ctx.globalAlpha=hullA;} - // 机腹炮列(红色炮口一排) - for(let k=-2;k<=2;k++)px(k*8-1.5,18,3,4,"#ff3355"); - // 引擎列(顶部4喷口,焰长抖动) - for(let e=0;e<4;e++){const ex2=-12+e*8; - px(ex2-2,-40,4,3,"#5a6c80"); - px(ex2-1.5,-44-(t+e*2)%4,3,3+(t+e*2)%4,e%2?"#7fd8ff":"#43b8ff");} + // —— P1母舰(变形=翼板/武器舱抛离飞走+舰体淡出) —— + if(ph2===0||mp!==null){ + // —— 后翼面(格栅翼+蓝条纹×3) —— + for(const sd of[-1,1]){const ja=(1-jt)*(1-jt*0.9);if(ja<=0.02)continue; + ctx.save();ctx.translate(sd*jt*110,jt*50);ctx.rotate(sd*jt*0.6);ctx.scale(sd,1);ctx.globalAlpha=ja; + poly([20,-38,66,-50,76,-40,72,-28,26,-22],"#c9d6e2"); + poly([20,-38,66,-50,60,-44,24,-32],"#e8f4ff"); // 受光面 + for(let k=0;k<3;k++)drawSeg(34+k*12,-34-k*4,44+k*12,-44-k*3,2,"#43b8ff",0.85); // 蓝色翼纹×3 + for(let k=0;k<4;k++)px(30+k*11,-30-k*2,2,8,"#9fb0c6"); // 格栅 ctx.restore();ctx.globalAlpha=1;} - // —— 三层阶梯甲板(左右各3层;变形=整体抛离旋转飞走,带运动轨迹) —— + // —— 中层装甲翼板×3/侧(交错层叠) —— + const PL=[[14,-30],[30,-22],[44,-14]]; for(const sd of[-1,1])for(let L=0;L<3;L++){ - const ja=(1-jt)*(1-jt*0.85); - if(ja<=0.02)continue; - ctx.save();ctx.translate(sd*jt*(70+L*30),jt*(30+L*14));ctx.rotate(sd*jt*(0.4+L*0.25));ctx.globalAlpha=ja; - const dw=34+L*9,dy=-26+L*13; // 阶梯向下外扩 - poly([sd*8,dy-5,sd*(dw+8),dy,sd*(dw+4),dy+9,sd*8,dy+7],"#c9d6e2"); - poly([sd*8,dy-5,sd*(dw+8),dy,sd*(dw+4),dy+3,sd*8,dy+1],"#e8f4ff"); // 甲板面受光 - px(sd*(dw+2)-2,dy+2,4,2,t%50<25?"#7fd8ff":"#2a5a78"); // 板缘蓝灯带(明灭) - px(sd*(dw-8)-2,dy+4,4,3,"#ff9a3d"); // 橙色标识块 - px(sd*14-1,dy+1,10,1,"#5a6c80"); // 甲板板缝 - for(let g=0;g<2+L;g++){const gx=sd*(14+g*10); // 红色炮口(deckVolley前摇:最下层逐个点亮) - const glow=b.deckT>0&&L===2&&(26-b.deckT)>g*6; - px(gx-1,dy+7,3,3,glow?"#ffffff":"#ff3355");} - if(L===1){const tx3=sd*(dw+2); // 侧舷双联副炮塔(随甲板抛离) - px(tx3-2,dy-8,5,10,"#9fb0c6"); - 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");} + const ja=(1-jt)*(1-jt*0.85);if(ja<=0.02)continue; + ctx.save();ctx.translate(sd*jt*(80+L*26),jt*(36+L*12));ctx.rotate(sd*jt*(0.45+L*0.2));ctx.scale(sd,1);ctx.globalAlpha=ja; + const x0=PL[L][0],y0=PL[L][1]; + poly([x0,y0,x0+26,y0+4,x0+22,y0+16,x0+4,y0+14],"#d8e4f0"); + poly([x0+4,y0+14,x0+22,y0+16,x0+26,y0+4,x0+20,y0+8],"#9fb0c6"); // 右下暗边 + poly([x0,y0,x0+26,y0+4,x0+24,y0+6,x0+2,y0+2],"#e8f4ff"); // 上缘受光 + if(L===1)px(x0+16,y0+6,4,3,"#ff9a3d"); // 橙色小标识 + if(L===2)drawSeg(x0+6,y0+3,x0+20,y0+6,2,"#43b8ff",0.8); // 板面蓝纹 ctx.restore();ctx.globalAlpha=1;} - ctx.restore();} + // —— 武器舱段(三联红炮口深槽+黄标识+舱下双炮管;deckVolley逐个点亮) —— + for(const sd of[-1,1]){const ja=(1-jt)*(1-jt*0.85);if(ja<=0.02)continue; + ctx.save();ctx.translate(sd*jt*95,jt*44);ctx.rotate(sd*jt*0.55);ctx.scale(sd,1);ctx.globalAlpha=ja; + px(44,0,24,22,"#c9d6e2");px(44,0,24,3,"#e8f4ff"); + px(46,4,20,9,"#2a3444"); // 炮座深槽 + for(let g=0;g<3;g++)px(48+g*6,6,4,5,(b.deckT>0&&(26-b.deckT)>g*6)?"#ffffff":"#ff3355"); // 三联红炮口 + px(45,15,4,3,"#ffcf5c"); // 黄标识 + px(48,22,3,9,"#5a6c80");px(59,22,3,9,"#5a6c80"); // 舱下双炮管 + px(48.5,29,2,3,"#43b8ff");px(59.5,29,2,3,"#43b8ff"); + ctx.restore();ctx.globalAlpha=1;} + // —— 中央箭形主舰体(最前层:宽顶→尖下巴,中脊光带+反应环+长条蓝窗) —— + const ha=1-jt;if(ha>0.02){ctx.save();ctx.globalAlpha=ha; + poly([0,54,-17,10,-15,-26,-9,-40,9,-40,15,-26,17,10],"#e8f4ff"); + poly([0,54,17,10,15,-26,9,-40,0,-40],"#9fb0c6"); // 右半暗面 + px(-1,-28,2,66,t%50<25?"#43b8ff":"#2a5a78"); // 中脊蓝色光带(搏动) + px(-15,-26,30,2,"#5a6c80");px(-13,-2,26,2,"#5a6c80"); // 板缝 + for(let k=0;k<4;k++)px(-12+k*7,-25,2,2,"#8a9ab8"); // 铆钉 + circ(0,-18,8,"#0d2244"); // 中央反应环(机械环非眼睛) + ctx.strokeStyle=fl||"#43b8ff";ctx.lineWidth=2;ctx.beginPath();ctx.arc(0,-18,8,0,TAU);ctx.stroke(); + for(let k=0;k<3;k++){const ra=t*0.02+k*TAU/3;ctx.beginPath();ctx.arc(0,-18,8,ra,ra+0.7);ctx.stroke();} + circ(0,-18,3.5+Math.sin(t*0.08)*0.5,"#bfefff"); + if(b.laserT>0){ctx.globalAlpha=ha*0.5;circ(0,-18,11,"#7ce9ff");ctx.globalAlpha=ha;} + px(-2.5,4,5,22,"#0d2244");px(-1,6,2,18,t%40<20?"#7fd8ff":"#2a5a78"); // 中线长条蓝窗(参考图特征) + for(let e=0;e<3;e++){const ex2=-10+e*10; // 顶部引擎列 + px(ex2-2,-42,4,3,"#5a6c80"); + px(ex2-1.5,-46-(t+e*2)%4,3,3+(t+e*2)%4,e%2?"#7fd8ff":"#43b8ff");} + ctx.restore();ctx.globalAlpha=1;} + } } /* ---- 暗黑魔碟:8扇区缝合装甲碟+红能量窗/裂纹+紫红竖瞳魔眼 ---- 变形沿用原机制(mp优先):P2圆环绕顶轴外旋裂开+魔眼点亮;P3爆甲壳板飞离+铆钉伸长成刺+犄角炮台 */ diff --git a/star-raid/js/enemies.js b/star-raid/js/enemies.js index 10751e4..92c6d49 100644 --- a/star-raid/js/enemies.js +++ b/star-raid/js/enemies.js @@ -302,7 +302,7 @@ function updateBoss(){ 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,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紧凑灵活 + b.yA=(b.yA||8)+((b.phase>=1?12:8)-(b.yA||8))*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); @@ -311,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[18,30,55])ebul(b.x+sd*gx,b.y+9,Math.PI/2,2.6,"dartB",14);} + if(b.deckT===0)for(const sd of[-1,1])for(const gx of[50,56,62])ebul(b.x+sd*gx,b.y+8,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{ @@ -434,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*18,py2=b.y+9,a6=Math.atan2(ap2.y-py2,ap2.x-px2); + for(const sd of[-1,1]){const px2=b.x+sd*50,py2=b.y+8,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{