starraid/js/data.js
JOJO 58c5d9d35b Boss系统重做:多管血条/锁血变身/专属变形动画/签名技能/rush随机装备老虎机
- 8个Boss全部重做:主攻击模式+1~2种随机小攻击+二/三阶段变形动画
- 新增5个雷霆战机参考Boss:太空原种/暗黑突击/激光钢琴/夺权者X/暗黑魔碟
- 多管血条(蓝/红/橙)+锁血转场+入场不掉血(b.y<b.ty-1免疫)
- 签名技能:花弹成长/高机动瞄准弹/21键4模式激光/银钉无人机+巨宽激光压制/锥形弹环+眼激光
- 所有激光发射点跟随Boss移动(bossBeam src机制)
- Boss挑战模式:随机装备3主武Lv3+3副武Lv3+2僚机Lv2,可选老虎机抽奖动画
- rush模式Boss血量x10,击破计时存档
- 武器修正:黎明重炮近炸引信26px/死光伤害x2/椭圆判定bossHit等
2026-08-05 20:18:46 +08:00

127 lines
10 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"use strict";
/* ================= 机体(各具特色) ================= */
const SHIPS={
falcon:{name:"猎鹰",spr:"ship0",cost:0,trait:"均衡型 · 无短板",
mod:{spd:1,dmg:1,lives:0,crit:0,dodge:0,hitR:0,mag:1,bombs:0,shield:0,drone:0,droneBoost:1}},
ghost:{name:"幽灵",spr:"ship1",cost:800,trait:"高速 · 闪避+12% · 判定更小",
mod:{spd:1.18,dmg:0.95,lives:-1,crit:0,dodge:0.12,hitR:-0.6,mag:1,bombs:0,shield:0,drone:0,droneBoost:1}},
bastion:{name:"堡垒",spr:"ship2",cost:1500,trait:"重装 · 命+2 · 血量+30 · 自带护盾",
mod:{spd:0.85,dmg:1.1,lives:2,crit:0,dodge:0,hitR:0.5,mag:1.4,bombs:0,shield:1,drone:0,droneBoost:1,hp:30}},
valkyrie:{name:"女武神",spr:"ship3",cost:3000,trait:"自带僚机 · 僚机火力+50%",
mod:{spd:1.05,dmg:1,lives:0,crit:0,dodge:0,hitR:0,mag:1,bombs:0,shield:0,drone:1,droneBoost:1.5}},
asura:{name:"修罗",spr:"ship4",cost:5000,trait:"暴击+15% · 伤害+10% · 命-1",
mod:{spd:1,dmg:1.1,lives:-1,crit:0.15,dodge:0,hitR:0,mag:1,bombs:1,shield:0,drone:0,droneBoost:1}}
};
/* ================= 军械库21 主武器 =================
beh: 行为引擎类型 lvl(w): 该等级的战斗参数 */
const WEAPONS={
vulcan:{name:"火神机炮",spr:"trcr",rare:0,beh:"streams",ds:"金色曳光弹雨,可靠的老伙计",
lvl:w=>({n:1+Math.floor(w/2),dmg:7*(1+.22*(w-1)),int:8,spd:5.4,gap:6})},
shotgun:{name:"超级霰弹",spr:"pelt",rare:0,beh:"streams",ds:"弹丸只从两翼倾泻,中央中空",
lvl:w=>({n:5+2*w,dmg:4.2*(1+.18*(w-1)),int:22,spd:5.5,fan:0.5,gap:2,skipMid:1})},
needle:{name:"蜂针刺弹",spr:"ndl",rare:0,beh:"streams",ds:"淬毒细针,命中后持续蚀甲",
lvl:w=>({n:1+Math.floor(w/3),dmg:2.6*(1+.2*(w-1)),int:3,spd:7,gap:4,poison:100})},
flame:{name:"火焰喷射器",icon:"flame",rare:0,beh:"flame",ds:"周期性喷吐的宽幅烈焰,近身湮灭",
lvl:w=>({n:3+Math.floor(w/2),dmg:1.1*(1+.22*(w-1)),range:70+8*w,burst:34+4*w,cd:Math.max(46,74-5*w)})},
shotgun2:{name:"霜冻霰弹",spr:"shard",rare:1,beh:"streams",ds:"冰晶霰弹,大面积冻结减速",
lvl:w=>({n:3+w,dmg:3*(1+.18*(w-1)),int:23,spd:5.2,fan:0.42,gap:2,slow:80+25*w})},
tesla:{name:"电弧发生器",icon:"chain",rare:1,beh:"tesla",ds:"自动电击周围敌人,无处可逃",
lvl:w=>({n:1+Math.floor(w/2),dmg:8*(1+.25*(w-1)),int:44-2*w,range:110})},
railgun:{name:"电磁炮",icon:"rail",rare:2,beh:"rail",ds:"蓄力磁轨贯穿敌阵,命中留下电浆区",
lvl:w=>({dmg:55*(1+.3*(w-1)),charge:120-10*w,spd:11,zone:24+4*w})},
deathray:{name:"死光",icon:"laser",rare:2,beh:"deathray",ds:"蓄力后自动锁敌的死亡射线",
lvl:w=>({dps:0.9*(1+.28*(w-1)),charge:160-12*w,beam:55,width:5+2*w})},
crescent:{name:"月牙斩",spr:"cres",rare:1,beh:"crescent",ds:"巨型旋刃缓慢斩出,贯穿敌阵",
lvl:w=>({dmg:44*(1+.24*(w-1)),int:120,spd:3.4})},
fission:{name:"分裂弹",spr:"fiss",rare:1,beh:"fission",ds:"飞行一段距离后炸裂为散射弹幕",
lvl:w=>({dmg:6*(1+.22*(w-1)),int:20,spd:5.2,split:3+Math.floor(w/2),splitAt:26})},
frost:{name:"冰冻枪",spr:"icelance",rare:1,beh:"frost",ds:"贯穿冰枪,命中将敌人彻底冻结",
lvl:w=>({dmg:6*(1+.2*(w-1)),int:16,spd:6,freeze:70+25*w})},
swarm:{name:"蜂巢导弹",spr:"msl2",rare:1,beh:"homing",ds:"自动追踪的导弹蜂群,命中爆裂",
lvl:w=>({n:1+w,dmg:2.2*(1+.2*(w-1)),int:22,spd:3.2,aoe:10})},
bubble:{name:"重力泡泡",spr:"bub",rare:1,beh:"bubble",ds:"缓慢漂浮的大泡泡,爆裂冲击",
lvl:w=>({dmg:18*(1+.25*(w-1)),int:26,spd:1.4,aoe:30+4*w})},
starfall:{name:"流星火雨",spr:"met",rare:2,beh:"starfall",ds:"流星自脚下逆冲而起,轰炸前方空域",
lvl:w=>({n:3+Math.floor(w/2),dmg:16*(1+.25*(w-1)),int:150-8*w,aoe:16})},
boomerang:{name:"回旋镖",spr:"boomer",rare:0,beh:"boom",ds:"亮蓝回旋刃,远射贯穿后回旋返航",
lvl:w=>({n:1+Math.floor(w/2),dmg:7*(1+.22*(w-1)),int:21,spd:4.8})},
singularity:{name:"奇点炮",spr:"sing",rare:2,beh:"sing",ds:"发射微型黑洞,牵引后剧烈坍缩",
lvl:w=>({dmg:40*(1+.3*(w-1)),int:200,pull:60,aoe:40,fuse:100})},
wavecannon:{name:"波动炮",spr:"waveb",rare:2,beh:"wave",ds:"蓄力斩出贯穿敌阵的剑气弧光",
lvl:w=>({dmg:32*(1+.3*(w-1)),charge:100-8*w,spd:5,width:14+6*w})},
holy:{name:"圣光弹",spr:"holyo",rare:2,beh:"holy",ds:"爆裂为旋转生长的圣光十字",
lvl:w=>({dmg:13*(1+.25*(w-1)),int:65,spd:3,len:16+3*w})},
thundercall:{name:"落雷术",spr:"thnd",rare:1,beh:"thunder",ds:"呼唤天雷轰击前方区域",
lvl:w=>({n:2+Math.floor(w/2),dmg:12*(1+.25*(w-1)),int:90-4*w,aoe:13})},
arcshu:{name:"电弧手里剑",spr:"shuri",rare:2,beh:"shuriken",ds:"旋转雷刃一路放电,贯穿全场",
lvl:w=>({dmg:6*(1+.22*(w-1)),int:95-4*w,spd:2.2,zapDmg:5*(1+.25*(w-1)),pulse:20})},
volt:{name:"电能机炮",spr:"voltb",rare:1,beh:"volt",ds:"高频电能弹,命中后电弧连锁跳跃",
lvl:w=>({n:1+Math.floor(w/3),dmg:3.2*(1+.2*(w-1)),int:5,spd:6.2,gap:5,chain:2+Math.floor(w/2)})},
dawn:{name:"黎明重炮",spr:"dawnsh",rare:2,beh:"dawn",ds:"长蓄力重炮,一炮轰出黎明",
lvl:w=>({dmg:70*(1+.3*(w-1)),charge:170-12*w,spd:5,aoe:30+3*w})},
proto:{name:"协议武装",spr:"protb",rare:2,beh:"protocol",ds:"青蓝连发压制,周期性蓄能重炮",
lvl:w=>({dmg:3*(1+.2*(w-1)),int:6,spd:6.5,heavy:120-8*w,hdmg:36*(1+.28*(w-1)),haoe:26+3*w})},
nebula:{name:"星云奥秘",spr:"neb",rare:2,beh:"nebula",ds:"缓慢追踪的奥术漩涡,命中绽放群星",
lvl:w=>({dmg:12*(1+.25*(w-1)),int:100-5*w,spd:1.6,stars:10+2*w})}
};
const MAINS=Object.keys(WEAPONS);
/* ================= 18 副武器 ================= */
const SUBS={
broad:{name:"侧舷火炮",spr:"broad",rare:0,max:5,beh:"broad",ds:l=>`舷炮斜向前方45°齐射Lv${l+1}`},
sweep:{name:"探照扫射",icon:"laser",rare:1,max:5,beh:"sweep",ds:l=>`往复摆动的扫描光束Lv${l+1}`},
leech:{name:"寄生电浆",icon:"chain",rare:1,max:3,beh:"leech",ds:l=>`命中附着电浆水蛭吸血回复结构Lv${l+1}`},
orbit:{name:"环绕光刃",spr:"blade",rare:1,max:4,beh:"orbit",ds:l=>`光刃+1当前${l+1}把)`},
sats:{name:"卫星屏障",spr:"sat",rare:1,max:3,beh:"sats",ds:l=>`环绕卫星可格挡敌弹Lv${l+1}`},
pd:{name:"点防御炮",spr:"dGun",rare:1,max:4,beh:"pd",ds:l=>`自动拦截来袭敌弹不打贴身弹Lv${l+1}`},
slowfield:{name:"时间力场",spr:"grv",rare:2,max:3,beh:"slowfield",ds:l=>"力场内敌人与敌弹大幅减速Lv"+(l+1)},
flares:{name:"热诱弹舱",spr:"flare",rare:0,max:4,beh:"flares",ds:l=>"扇形抛射4枚缓速热诱弹各诱爆一枚敌弹Lv"+(l+1)},
seeker:{name:"索敌浮游炮",spr:"dGun2",rare:1,max:3,beh:"seeker",ds:l=>"离机索敌的浮游炮Lv"+(l+1)},
beamdrone:{name:"光束浮游炮",spr:"dBeam",rare:2,max:3,beh:"beamdrone",ds:l=>"环绕发射光束的浮游单元Lv"+(l+1)},
frostnova:{name:"冰霜新星",spr:"frost",rare:1,max:3,beh:"frostnova",ds:l=>"周期性冻结周围敌人Lv"+(l+1)},
thorns:{name:"反伤棘甲",icon:"crit",rare:1,max:3,beh:"thorns",ds:l=>"撞击你的敌人遭到反噬Lv"+(l+1)},
sticky:{name:"粘着炸弹",spr:"sticky",rare:0,max:3,beh:"sticky",ds:l=>"粘附敌人的定时高爆炸弹Lv"+(l+1)},
magnetar:{name:"磁暴环",icon:"mag",rare:2,max:3,beh:"magnetar",ds:l=>"周期性电磁脉冲消弹伤敌Lv"+(l+1)},
executor:{name:"斩首巡航弹",spr:"cmsl",rare:2,max:3,beh:"executor",ds:l=>"巡航导弹猎杀最强之敌Lv"+(l+1)},
airstrike:{name:"空爆弹",spr:"amsl",rare:1,max:5,beh:"airstrike",ds:l=>"双弹侧掠折向直上穿透机身沿途轰炸Lv"+(l+1)},
repair:{name:"修复无人机",spr:"dHeal",rare:1,max:3,beh:"repair",ds:l=>"持续修复机体结构Lv"+(l+1)}
};
const SUB_KEYS=Object.keys(SUBS);
/* ================= 12 僚机 ================= */
const DRONES={
gunner:{name:"机枪僚机",spr:"dGun",rare:0,max:3,beh:"aim",ds:l=>"协同瞄准射击Lv"+(l+1)},
gunner2:{name:"双翼机枪手",spr:"dGun2",rare:1,max:3,beh:"aim2",ds:l=>"双管僚机Lv"+(l+1)},
sniperd:{name:"狙击僚机",spr:"dSnip",rare:1,max:3,beh:"snipe",ds:l=>"高伤点射Lv"+(l+1)},
beamer:{name:"光束僚机",spr:"dBeam",rare:2,max:3,beh:"beam",ds:l=>"周期光束Lv"+(l+1)},
bomber:{name:"轰炸僚机",spr:"dBomb",rare:1,max:3,beh:"bomb",ds:l=>"投掷爆炸弹Lv"+(l+1)},
frostd:{name:"冰霜僚机",spr:"dFrost",rare:1,max:3,beh:"frostD",ds:l=>"减速弹Lv"+(l+1)},
teslaD:{name:"电弧僚机",spr:"dTesla",rare:2,max:3,beh:"teslaD",ds:l=>"近身电击Lv"+(l+1)},
rammer:{name:"冲撞僚机",spr:"dRam",rare:1,max:3,beh:"melee",big:1.6,ds:l=>"高速环绕撞击Lv"+(l+1)},
healer:{name:"修复僚机",spr:"dHeal",rare:1,max:3,beh:"heal",ds:l=>"缓慢回复结构值Lv"+(l+1)},
shieldd:{name:"护盾僚机",spr:"dShield",rare:2,max:3,beh:"block",big:1.5,ds:l=>"环绕格挡敌弹Lv"+(l+1)},
missileD:{name:"导弹僚机",spr:"dMsl",rare:1,max:3,beh:"missile",ds:l=>"追踪导弹Lv"+(l+1)},
bladeD:{name:"刃舞僚机",spr:"dBlade",rare:1,max:3,beh:"bladeD",ds:l=>"投掷回旋刃Lv"+(l+1)},
sweeper:{name:"扫射僚机",spr:"dSweep",rare:1,max:3,beh:"sweep",ds:l=>"扇形区域来回扫射火力覆盖Lv"+(l+1)}
};
const DRONE_KEYS=Object.keys(DRONES);
/* ================= 8 被动强化 ================= */
const PASSIVES={
fire:{name:"火控雷达",icon:"fire",rare:0,max:5,ds:()=>"射速 +12%"},
crit:{name:"暴击芯片",icon:"crit",rare:1,max:4,ds:()=>"暴击率 +8%"},
shield:{name:"能量护盾",icon:"shield",rare:1,max:3,ds:l=>l?"护盾充能加快":"获得可格挡的护盾"},
nano:{name:"纳米修复",icon:"nano",rare:1,max:3,ds:()=>"血量上限+25 并回复40"},
mag:{name:"引力核心",icon:"mag",rare:0,max:3,ds:()=>"拾取范围 +60%"},
bounty:{name:"赏金协议",icon:null,spr:"coin",rare:0,max:3,ds:()=>"星币获取 +30%"},
odcore:{name:"超频核心",icon:null,spr:"odc",rare:1,max:3,ds:()=>"暴走充能+30%,时长+1s"},
ghost:{name:"幽灵装甲",icon:"ghost",rare:2,max:2,ds:()=>"闪避率 +10%"}
};
const PAS_KEYS=Object.keys(PASSIVES);
/* ---- 主武器火力衰减与敌人动态缩放 ----
装备数量 → 每把武器伤害系数:[1]100% [2]80% [3]60% [4]50% [5]45%
总火力 = 系数×数量;敌人血量与数量随总火力提升 */
const WMUL=[0,1,0.8,0.6,0.5,0.45];
function wCount(){return Math.max(1,G.loadout.length);}
function wMul(){return WMUL[clamp(wCount(),1,5)];}
function totWMul(){return wMul()*wCount();}
function enemyScale(){return 1+0.22*(totWMul()-1);} // 血量缩放
function budgetScale(){return 1+0.22*(totWMul()-1);} // 数量缩放