- 暗黑魔碟:犄角改为朝下尖锥——外壳下边分开、以顶部为轴外旋、下端打开并伸长变尖(半环与锥刺同一几何体) - 激光钢琴:修复爬升到y=52后永远满足入场免疫(y<ty-1)导致不掉血的bug(hurtBoss改用landed锁);攻击节奏全面提速(开局空窗40tick->8+mainT 36、单键预警7->3、激光tele12->7、模式间隔压缩) - 太空原种:翅膀下移10px - 夺权者X:侧舱±55->±37贴主机体(弹幕发射点同步);无人机P1=2架/P2=4架(修正原反);散弹重做=无人机脱离环绕摆阵型(横队垂直向下/两翼外张扇形/集火瞄准)4轮齐射后归位 - 无人机弹dartS改2×12蓝白细长精灵;无人机环绕遮挡分层(上半部先画被机体压住)
188 lines
16 KiB
JavaScript
188 lines
16 KiB
JavaScript
"use strict";
|
||
/* ================= 像素精灵工坊 ================= */
|
||
function bake(rows,pal,scale){
|
||
const w=Math.max(...rows.map(r=>r.length)),h=rows.length,s=scale||1;
|
||
const c=document.createElement("canvas");c.width=w*s;c.height=h*s;
|
||
const g=c.getContext("2d");
|
||
for(let y=0;y<h;y++){const row=rows[y];
|
||
for(let x=0;x<row.length;x++){const ch=row[x];
|
||
if(ch==="."||ch===" ")continue;const col=pal[ch];if(!col)continue;
|
||
g.fillStyle=col;g.fillRect(x*s,y*s,s,s);}}
|
||
return c;
|
||
}
|
||
const SPR={};
|
||
/* ---- 5 架战机(各有独立造型) ---- */
|
||
SPR.ship0=bake([
|
||
"......K......",".....KWK.....",".....KWK.....",".....KCK.....",
|
||
"....KWWWK....","....KRCRK....","...KWRRRWK...","..KWKRDRKWK..",
|
||
"..KWRRRRRWK..",".KWKRRRRRKWK.",".KRRKWWWKRRK.","KKRDKWKWKDRKK",
|
||
"KD..KWKWK..DK","K...KOKOK...K","....KOKOK...."],
|
||
{K:"#14142b",W:"#f2f0e6",C:"#43e8ff",R:"#e0393e",D:"#8f1d2c",O:"#ff9a3d"});
|
||
SPR.ship1=bake([
|
||
".......K.......","......KPK......",".....KPPPK.....",".....KPCPK.....",
|
||
"....KPCCCPK....","...KPPCPPCPK...","..KPPCPPPPCPK..",".KPCKPPPPPKCPK.",
|
||
"KPPKPPPPPPPKPPK","KPKPPKPPPPKPPKK","KK.PPKPPPKPP.KK","K..KPKKPKKPK..K",
|
||
"...KO..K..OK...","....O.....O...."],
|
||
{K:"#12102a",P:"#7b4fd0",C:"#43e8ff",O:"#41e6ff"});
|
||
SPR.ship2=bake([
|
||
"...KK.....KK...","..KBBK...KBBK..","..KBBK...KBBK..",".KBBBK...KBBBK.",
|
||
".KBWBBK.KBBWBK.","KBBBBBK.KBBBBBK","KBCBBBK.KBBBCBK","KBBBBBK.KBBBBBK",
|
||
".KBBBKBBBKBBBK.","..KBBBBBBBBBK..","..KBOBBBBBOBK..","...KBBBXBBBK...",
|
||
"...KOXXKXXOK...","....KOOOOOK....",".....KK.KK....."],
|
||
{K:"#101a12",B:"#3f8f5f",W:"#d8f0e0",C:"#ffd23d",X:"#ff9a3d",O:"#ff9a3d"});
|
||
SPR.ship3=bake([
|
||
"......K......",".....KVK.....","....KVVVK....","....KVWVK....",
|
||
"....KVCVK....","...KVVWCVK...","..KVVKVWKVVK..",".KVKKVVVVVKVK.",
|
||
"KVK.KVWCVK.VK","KV..KVVVVVK..VK","K..KVKWKVK..K","...KOKWKWKOK...",
|
||
"....KOKKKOK....",".....KOKOK.....","......KO......."],
|
||
{K:"#241a08",V:"#e8c25a",W:"#fff6e0",C:"#ff6b9d",O:"#ffb84d"});
|
||
SPR.ship4=bake([
|
||
".......K.......","......KAK......",".....KAAAK.....",".....KACAK.....",
|
||
"....KAACAAK....","...KAACCCAAK...","..KAACAAACAAK..",".KAAKAAAAAKAAK.",
|
||
"KAAKAAAAAAAKAAK","KAKAAKAAAKAAKAK","KAAK.KAAAK.KAAK","KA..KAKAKAK..AK",
|
||
"K..KOAKAKAOK..K","...KO..K..OK...",".....O...O....."],
|
||
{K:"#0d0d14",A:"#3a3f5c",C:"#ff3355",O:"#ff5566"});
|
||
/* ---- 敌机(面朝下) ---- */
|
||
const EPAL={
|
||
scout:{K:"#0d1a1a",T:"#2fa8a0",W:"#c8fff4",D:"#14655f"},
|
||
weaver:{K:"#1a0d1a",M:"#c44fd0",W:"#ffd6f4",D:"#6e2a78"},
|
||
gunship:{K:"#141410",S:"#8c9a5b",W:"#eef0d0",X:"#ff9a3d",D:"#4a5428"},
|
||
kami:{K:"#1a0d0d",R:"#e0393e",Q:"#ffd23d",W:"#ffe9c8"},
|
||
mine:{K:"#101418",G:"#7a8a96",W:"#e8f0f8",R:"#ff5566"},
|
||
split:{K:"#160d1a",P:"#b05ce8",W:"#f0d6ff",D:"#5c2a80"},
|
||
sniper:{K:"#0d141a",S:"#4f7ab0",C:"#43e8ff",W:"#d0ecff"},
|
||
rock:{K:"#141210",G:"#7a7268",D:"#4a443c"}
|
||
};
|
||
SPR.scout=bake(["...KKKK...","..KTTTTK..",".KTTKKTTK.",".KTKTTKTK.","KTTTTTTTTK","KWKTTTTKWK",".K.KTTK.K.","...KDDK...","....KK...."],EPAL.scout);
|
||
SPR.weaver=bake(["....KKKK....","..KKMMMMKK..",".KMMKMMKMMK.","KMMKMMMMKMMK","KMKMMMMMMKMK","KMMMMKKMMMMK",".KMMKMMKMMK.","..KM.MM.MK..","...KMMMMK...","....KKKK...."],EPAL.weaver);
|
||
SPR.gunship=bake(["......KKKK......",".....KSSSSK.....","....KSSSSSSK....","...KSSKSSKSSK...","..KSSSSSSSSSSK..",".KSKSSSSSSSSKSK.",".KSSKSKSSKSKSSK.","KSSSSSSSSSSSSSSK","KSKSSKSSSSKSSKSK","KSSSKSKSSKSKSSSK",".KSKSSKSSKSSKSK.","..KK.KSXXSK.KK..",".....KSXXSK.....","......KKKK......"],EPAL.gunship);
|
||
SPR.kami=bake(["....KK....","...KRRK...","..KRRRRK..","..KRQQRK..",".KRRQQRRK.",".KRQQQQRK.","KRRQQQQRRK","K.RQQQQR.K","..KRRRRK..","...KKKK..."],EPAL.kami);
|
||
SPR.mine=bake(["...K..K...","....KK....","..KGGGGK..",".KGGGGGGK.","KKGKGGKGKK","KGGGGGGGGK",".KGGGGGGK.","..KGGGGK..","....KK....","...K..K..."],EPAL.mine);
|
||
SPR.split=bake(["....KKKK....","..KKPPPPKK..",".KPPKPPKPPK.","KPPPPPPPPPPK","KPKPPKKPPKPK","KPPPKPPKPPPK",".KPPPPPPPPK.","..KPKPPKPK..","...KPPPPK...","....KKKK...."],EPAL.split);
|
||
SPR.mini=bake([".KKKK.","KPPPPK","PKPPKP","KPPPPK",".KPPK.","..KK.."],EPAL.split);
|
||
SPR.sniper=bake([".....KK.....","....KSSK....","...KSSSSK...","..KSKSSKSK..","..KSSCCSSK..",".KSSSCCSSSK.","KSKSSCCSSKSK","KSSSKSSKSSSK",".KSK.KK.KSK.","..K..KK..K..","..K.K..K.K..",".....KK....."],EPAL.sniper);
|
||
SPR.rock=bake(["....KKKK....","..KKGGGGKK..",".KGGDGGGGGK.","KGGGGDGGGGGK","KGDGGGGGGDGK","KGGGGDDGGGGK","KGGDGGGGGGGK",".KGGGGGGDGK.","..KKGGGGKK..","....KKKK...."],EPAL.rock);
|
||
/* 精英变体:保留明暗的金化调色 */
|
||
function goldify(pal){
|
||
const o={};
|
||
for(const k in pal){
|
||
if(k==="K"){o[k]="#2a1f00";continue;}
|
||
const c=pal[k],r=parseInt(c.slice(1,3),16),g=parseInt(c.slice(3,5),16),b=parseInt(c.slice(5,7),16);
|
||
const l=Math.min(1,0.3+(0.3*r+0.6*g+0.1*b)/255*0.85);
|
||
const mix=(a,h)=>Math.round(a+(h-a)*l);
|
||
o[k]=`rgb(${mix(94,255)},${mix(64,232)},${mix(10,150)})`;
|
||
}
|
||
return o;
|
||
}
|
||
SPR.e_scout=bake(["...KKKK...","..KTTTTK..",".KTTKKTTK.",".KTKTTKTK.","KTTTTTTTTK","KWKTTTTKWK",".K.KTTK.K.","...KDDK...","....KK...."],goldify(EPAL.scout));
|
||
SPR.e_weaver=bake(["....KKKK....","..KKMMMMKK..",".KMMKMMKMMK.","KMMKMMMMKMMK","KMKMMMMMMKMK","KMMMMKKMMMMK",".KMMKMMKMMK.","..KM.MM.MK..","...KMMMMK...","....KKKK...."],goldify(EPAL.weaver));
|
||
SPR.e_gunship=bake(["......KKKK......",".....KSSSSK.....","....KSSSSSSK....","...KSSKSSKSSK...","..KSSSSSSSSSSK..",".KSKSSSSSSSSKSK.",".KSSKSKSSKSKSSK.","KSSSSSSSSSSSSSSK","KSKSSKSSSSKSSKSK","KSSSKSKSSKSKSSSK",".KSKSSKSSKSSKSK.","..KK.KSXXSK.KK..",".....KSXXSK.....","......KKKK......"],goldify(EPAL.gunship));
|
||
SPR.e_kami=bake(["....KK....","...KRRK...","..KRRRRK..","..KRQQRK..",".KRRQQRRK.",".KRQQQQRK.","KRRQQQQRRK","K.RQQQQR.K","..KRRRRK..","...KKKK..."],goldify(EPAL.kami));
|
||
SPR.e_split=bake(["....KKKK....","..KKPPPPKK..",".KPPKPPKPPK.","KPPPPPPPPPPK","KPKPPKKPPKPK","KPPPKPPKPPPK",".KPPPPPPPPK.","..KPKPPKPK..","...KPPPPK...","....KKKK...."],goldify(EPAL.split));
|
||
SPR.e_sniper=bake([".....KK.....","....KSSK....","...KSSSSK...","..KSKSSKSK..","..KSSCCSSK..",".KSSSCCSSSK.","KSKSSCCSSKSK","KSSSKSSKSSSK",".KSK.KK.KSK.","..K..KK..K..","..K.K..K.K..",".....KK....."],goldify(EPAL.sniper));
|
||
SPR.e_mine=bake(["...K..K...","....KK....","..KGGGGK..",".KGGGGGGK.","KKGKGGKGKK","KGGGGGGGGK",".KGGGGGGK.","..KGGGGK..","....KK....","...K..K..."],goldify(EPAL.mine));
|
||
SPR.e_splitter=bake(["....KKKK....","..KKPPPPKK..",".KPPKPPKPPK.","KPPPPPPPPPPK","KPKPPKKPPKPK","KPPPKPPKPPPK",".KPPPPPPPPK.","..KPKPPKPK..","...KPPPPK...","....KKKK...."],goldify(EPAL.split));
|
||
/* ---- 弹幕 / 道具 ---- */
|
||
SPR.msl=bake(["..K..",".KWK.","KWWWK","KWKWK",".KKK."],{K:"#14142b",W:"#c8d8ff"});
|
||
SPR.blade=bake(["...K...","..KCK..",".KCCCK.","KCCXCCK",".KCCCK.","..KCK..","...K..."],{K:"#0d2a1a",C:"#5cff9d",X:"#eafff0"});
|
||
/* 9×9 圆弹:H=半透明圆形光晕 C=彩色外壳 W=白芯 */
|
||
function orb(c1,c2){
|
||
const halo=c2.length===7?c2+"40":c2;
|
||
return bake([
|
||
"...HHH...",
|
||
".HHCCCHH.",
|
||
".HCCWCCH.",
|
||
"HCCCCCCCH",
|
||
"HCWWWWWCH",
|
||
"HCCCCCCCH",
|
||
".HCCWCCH.",
|
||
".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"};
|
||
SPR.dartB=bake(["KCCCK",".CCC.",".CWC.","..C.."],{K:"#0d2433",C:"#3a8cd8",W:"#cfeaff"}); // 蓝色锥形敌弹(Boss弹幕)
|
||
SPR.flowr=bake([
|
||
"....P....",".P..P..P.","..PPPPP..",".PPWWWPP.","PPPWWWPPP",
|
||
".PPWWWPP.","..PPPPP..",".P..P..P.","....P...."],
|
||
{P:"#ff8fc8",W:"#ffffff"}); // 太空原种:花弹(圆形八刺,会逐渐变大)
|
||
SPR.dartS=bake(["WW","WW","CC","CC","CC","CC","CC","CC","CC","CC","CC","CC"],
|
||
{W:"#f2fbff",C:"#5ec4ff"}); // 夺权者X:蓝白细长钉(2×12)
|
||
SPR.dartP=bake(["KPPPK",".PPP.",".PWP.","..P.."],{K:"#2a1040",P:"#b98cff",W:"#ead9ff"}); // 暗黑魔碟:紫锥弹
|
||
SPR.orbR=orb("#ffe9e9","#ff5566");SPR.orbP=orb("#f4e9ff","#b05ce8");
|
||
SPR.orbG=orb("#e9ffe9","#5cff9d");SPR.orbO=orb("#fff4d9","#ff9a3d");
|
||
SPR.plasma=orb("#e9f8ff","#43b8ff");
|
||
SPR.gem=bake(["..KK..",".KCCK.","KCWWCK","KCCCCK",".KCCK.","..KK.."],{K:"#0d2a33",C:"#43e8ff",W:"#eaffff"});
|
||
SPR.coin=bake([".KKKK.","KYWWYK","KWYYWK","KYWYYK","KYYYYK",".KKKK."],{K:"#33240a",Y:"#ffcf5c",W:"#fff4d9"});
|
||
SPR.heart=bake([".KK.KK.","KRRKRRK","KRRRRRK",".KRRRK.","..KRK..","...K..."],{K:"#330d14",R:"#ff5566"});
|
||
SPR.bombp=bake(["...K...","..KOK..",".KKKKK.","KBBBBBK","KBBWBBK","KBBBBBK",".KKKKK."],{K:"#14142b",B:"#4a5a8c",W:"#dfe8ff",O:"#ff9a3d"});
|
||
SPR.odc=bake(["..KK..",".KOOK.","KOWWOK","KOWOOK",".KOOK.","..KK.."],{K:"#33240a",O:"#ff9a3d",W:"#fff4d9"});
|
||
/* ---- 新武器弹体 / 僚机精灵 ---- */
|
||
SPR.cres=bake(["..KKK...",".KCCCK..","KCCK....","KCK.....","KCK.....","KCCK....",".KCCCK..","..KKK..."],{K:"#0d2a1a",C:"#5cff9d"});
|
||
SPR.fiss=bake(["..KK..",".KGGK.","KGWWGK","KGGGGK",".KGGK.","..KK.."],{K:"#0d2a0d",G:"#5cff9d",W:"#eafff0"});
|
||
SPR.frost=bake(["..K..",".KCK.","KCWCK","KCCCK",".KCK.","..K.."],{K:"#0d2433",C:"#7fd8ff",W:"#ffffff"});
|
||
SPR.sat=bake(["..KKK..",".KCCCK.","KCCWCCK","KCW WC K".replace(" ",""),"KCCWCCK",".KCCCK.","..KKK.."],{K:"#0d2433",C:"#43e8ff",W:"#ffffff"});
|
||
SPR.bot=bake(["..K..",".KGK.","KGWGK",".KGK.","..K.."],{K:"#0d2a0d",G:"#5cff9d",W:"#eafff0"});
|
||
SPR.ndl=bake([".K.","KCK","KWK","KCK","KCK","KCK",".K."],{K:"#142a0d",C:"#9dff5c",W:"#f0ffe0"});
|
||
SPR.bub=bake(["...KKK...",".KKBBBK K".replace(" ",""),"KBBBWBBBK","KBWWWWBBK","KBWWBWBBK","KBBBBBBBK",".KKBBBK K".replace(" ",""),"...KKK..."],{K:"#0d2433",B:"#3a8cd8",W:"#cfeaff"});
|
||
SPR.met=bake(["..KK..",".KOOK.","KOOOOK","KOWOOK",".KOOK.","..KK..","...K..."],{K:"#331d0a",O:"#ff9a3d",W:"#ffd23d"});
|
||
SPR.boomer=bake(["K...K","KPKPK",".PPP.","..K.."],{K:"#1a0d26",P:"#c86bff"}); // 亮紫回旋镖,清晰可辨
|
||
SPR.sing=bake(["..KKK..",".KPPPK.","KPXXXP K".replace(" ",""),"KPXXXP K".replace(" ",""),"KPPPPPK",".KPPPK.","..KKK.."],{K:"#140d1a",P:"#7b2fd0",X:"#0d0514"});
|
||
SPR.waveb=bake(["....K....","..K.C.K..","K.C.C.C.K","..K.C.K..","....K...."],{K:"#0d1a33",C:"#43b8ff"});
|
||
SPR.holyo=bake(["..KKK..",".KYWYK.","KYW W YK".replace(/ /g,""),"KYW W YK".replace(/ /g,""),".KYWYK.","..KKK.."],{K:"#33240a",Y:"#ffcf5c",W:"#fff4d9"});
|
||
SPR.thnd=bake(["..KK",".KWK","KWK.","KWK.",".KWK",".KK.","..K."],{K:"#33240a",W:"#ffe95c"});
|
||
SPR.grv=bake(["..KKK..",".K...K.","K..P..K","K.PXP.K" ,"K..P..K",".K...K.","..KKK.."],{K:"#1a0d2a",P:"#b05ce8",X:"#2a0d3a"});
|
||
/* ---- 辨识度重设计:新弹体精灵 ---- */
|
||
SPR.trcr=bake([".K.","KYK","KYK","KWK","KYK","KYK",".K."],{K:"#33240a",Y:"#ffcf5c",W:"#fff4d9"}); // 火神金色曳光弹
|
||
SPR.pelt=bake(["KOOK","OWWO","OWWO","KOOK"],{K:"#331d0a",O:"#ff9a3d",W:"#fff4d9"}); // 霰弹炽热弹丸
|
||
SPR.shard=bake(["K..C..","KCCKC.","KCWCKK","KCCCK.","K..C.."],{K:"#0d2433",C:"#7fd8ff",W:"#ffffff"}); // 冰晶霰屑
|
||
SPR.icelance=bake(["...K...","..KCK..","..KCK..",".KCWK.",".KCCK.",".KCCK.","..KCK..","..KCK..","...K..."],{K:"#0d2433",C:"#7fd8ff",W:"#ffffff"}); // 贯穿冰枪
|
||
SPR.msl2=bake(["..K..",".KYK.","KYGYK","KYGYK",".KGK.","K.K.K"],{K:"#2a240d",Y:"#ffe95c",G:"#8ca86a"}); // 蜂巢小导弹
|
||
SPR.amsl=bake(["...K...","..KRK..",".KRRRK.","KRWRKRK",".KRRRK.",".KRRRK.","K.KRK.K"],{K:"#241a08",R:"#e0763e",W:"#fff4d9"}); // 空爆重型导弹
|
||
SPR.cmsl=bake(["...KK...","..KRRK..",".KRRRRK.","KRWRRWRK",".KRRRRK.",".KRRRRK.","..KRRK..",".K.KK.K."],{K:"#1a0d0d",R:"#e0393e",W:"#ffd23d"}); // 斩首巡航导弹
|
||
SPR.broad=bake([".KKK.","KBBBK","KBWBK","KBBBK",".KKK."],{K:"#241a08",B:"#c8923e",W:"#fff4d9"}); // 侧舷炮弹
|
||
SPR.flare=bake(["..KK..",".KWWK.","KWWWWK","KWWWWK",".KWWK.","..KK.."],{K:"#33240a",W:"#ffd23d"}); // 热诱弹
|
||
SPR.sticky=bake([".KKKK.","KGKKGK","KGRRGK","KGRRGK","KGKKGK",".KKKK."],{K:"#142a0d",G:"#5cff9d",R:"#ff5566"}); // 粘着炸弹
|
||
/* ---- 新武器弹体精灵(差异化造型) ---- */
|
||
SPR.shuri=bake(["...K...","..KCK..",".KCCK..","KCCWCCK","..KCCK.","..KCK..","...K..."],{K:"#0d2433",C:"#41e6ff",W:"#ffffff"}); // 电弧手里剑:青白四芒星
|
||
SPR.voltb=bake([".K.","KGK","GWG","KGK","KGK",".K."],{K:"#142a0d",G:"#b8ff3d",W:"#ffffff"}); // 电能弹:荧光绿+白电纹
|
||
SPR.dawnsh=bake(["...K...","..KRK..",".KRRRK.","KRWRKRK",".KRRRK.",".KRRRK.","K.KRK.K"],{K:"#241a08",R:"#e0393e",W:"#fff4d9"}); // 黎明重炮弹:炽红重壳
|
||
SPR.protb=bake([".K.","KCK","KWK","KCK","KCK","KCK",".K."],{K:"#140a0a",C:"#ff4a1f",W:"#ffc64a"}); // 协议速射弹:黑红橙
|
||
SPR.protoh=orb(null,"#ff5a2e"); // 协议重炮弹:黑壳橙芯大能量球
|
||
SPR.neb=orb(null,"#8a5cff"); // 星云奥秘:紫蓝奥术球
|
||
SPR.star4=bake(["..K..","..K..","KKBKK","..K..","..K.."],{K:"#e0b3ff",B:"#ffffff"}); // 星云绽放的小星星
|
||
/* 12 种僚机 */
|
||
SPR.dGun=bake(["...K...","..KWK..",".KWWWK.","KWKWKWK","..KWK.."],{K:"#14142b",W:"#c8d8ff"});
|
||
SPR.dGun2=bake(["K..K..K","KKK.KKK",".KWKWK.","..KWK..","...K..."],{K:"#14142b",W:"#9fd8ff"});
|
||
SPR.dSnip=bake(["..K..",".KWK.",".KCK.",".KWK.","KWKWK"],{K:"#0d2433",W:"#c8d8ff",C:"#43e8ff"});
|
||
SPR.dBeam=bake([".KKKKK.","KCCCCCK","KCW K WCK".replace(/ /g,""),"KCCCCCK",".KKKKK."],{K:"#2a0d1a",C:"#ff6b9d",W:"#fff"});
|
||
SPR.dBomb=bake(["..KKK..",".KO O K.".replace(/ /g,""),"KOOOOOK","KOOOWOK",".KKKKK."],{K:"#241a08",O:"#ff9a3d",W:"#fff4d9"});
|
||
SPR.dFrost=bake(["...K...","..KCK..",".KCCK.","KCCWCK.",".KCCK.","..KCK..","...K..."],{K:"#0d2433",C:"#7fd8ff",W:"#fff"});
|
||
SPR.dTesla=bake(["..KK...",".KWWK..","KWK....",".KWK...","..KWK..","...KK.."],{K:"#33240a",W:"#ffe95c"});
|
||
SPR.dRam=bake(["...K...","..KRK..",".KRRRK.","KRRRRRK",".KRRRK.","..KRK..","...K..."],{K:"#1a0d0d",R:"#e0393e"});
|
||
SPR.dHeal=bake(["..KKK..",".KGGGK.","KGWGWGK","KGGGGGK",".KGGGK.","..KKK.."],{K:"#0d2a1a",G:"#3f8f5f",W:"#eafff0"});
|
||
SPR.dShield=bake([".KKKKK.","KCCBCCK","KCBKBCK","KCCBCCK",".KKKKK."],{K:"#0d2433",C:"#43e8ff",B:"#1a5a8c"});
|
||
SPR.dMsl=bake(["..KKK..",".KWWWK.","KWKWKWK",".KWWWK.","..KKK.."],{K:"#14142b",W:"#ffb84d"});
|
||
SPR.dBlade=bake(["K..K..K",".K.K.K.","..KKK..",".K.K.K.","K..K..K"],{K:"#0d2a1a",W:"#5cff9d"});
|
||
SPR.dSweep=bake(["K.K.K.K","KWKWKWK",".KWWWK.","..KWK..","...K..."],{K:"#1a1206",W:"#ffb03d"}); // 扫射僚机:横排多炮管
|
||
SPR.swep=bake([".W.","WCW","WCW",".K."],{K:"#331d0a",W:"#ffd23d",C:"#ff9a3d"}); // 扫射弹:金黄弹丸
|
||
/* ---- 升级卡片图标(8×8 单色) ---- */
|
||
function icon(rows,color){return bake(rows,{X:color});}
|
||
const ICONS={
|
||
gun:icon(["X..X..X.","X..X..X.","XX.XX.XX","XX.XX.XX",".X.X.X..",".X.X.X..","........","........"],"#7fd8ff"),
|
||
spread:icon(["X..X..X.","X..X..X.",".X.X.X..",".X.X.X..","..XXX...","..XXX...","...X....","...X...."],"#ffb84d"),
|
||
beam:icon(["...XX...","...XX...","...XX...","...XX...","...XX...","...XX...","...XX...","...XX..."],"#43e8ff"),
|
||
pulse:icon(["..X..X..",".X..X..X","X..X..X.",".X..X..X","..X..X..",".X..X..X","X..X..X.",".X..X..X"],"#5cff9d"),
|
||
rail:icon(["...XX...","..XXXX..",".XXXXXX.","...XX...","...XX...","...XX...","...XX...","...XX..."],"#b98cff"),
|
||
laser:icon(["...X....","...X....","..XXX...",".XXXXX.","..XXX...","...X....","...X....","...X...."],"#ff6b9d"),
|
||
chain:icon(["....XX..","...XX...","..XX....","..XXXX..","...XX...","..XX....",".XX.....","XX......"],"#ffe95c"),
|
||
fire:icon(["..X.X...",".X.X.X..","X.X.X.X.","..X.X...",".X.X.X..","X.X.X.X.","........","........"],"#ff9a3d"),
|
||
crit:icon(["X..XX..X",".X.XX.X.","..XXXX..","XXXXXXXX","XXXXXXXX","..XXXX..",".X.XX.X.","X..XX..X"],"#ff5566"),
|
||
ghost:icon(["..XXXX..",".XXXXXX.","XX.XX.XX","XXXXXXXX","XXXXXXXX","X.XXXX.X","..X..X..","........"],"#c8d8ff"),
|
||
shield:icon([".XXXXXX.","XXXXXXXX","XXXXXXXX","XXXXXXXX",".XXXXXX.","..XXXX..","...XX...","........"],"#43e8ff"),
|
||
nano:icon(["...XX...","...XX...","...XX...","XXXXXXXX","XXXXXXXX","...XX...","...XX...","...XX..."],"#5cff9d"),
|
||
eng:icon(["XXXX....","..XXXX..","XXXX....","..XXXXXX","XXXX....","..XXXX..","XXXX....","........"],"#9fd8ff"),
|
||
mag:icon([".XX..XX.",".XX..XX.",".XX..XX.",".XX..XX.",".XXXXXX.","..XXXX..","........","........"],"#b98cff"),
|
||
drone:icon(["...XX...","..XXXX..",".XX.XXX.","XXXXXXXX","XXXXXXXX",".XX.XX..","..XXXX..","...XX..."],"#ffcf5c"),
|
||
flame:icon(["...X....","..XX....",".XX.X...",".XXXX...","XXXXXX..","X.XXX.X.",".XXXX...","..XX...."],"#ff9a3d")
|
||
};
|