koishi-plugin-ggcevo-game 1.4.37 → 1.4.39

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/index.js CHANGED
@@ -919,8 +919,8 @@ var Spacestationtechnology = [
919
919
  {
920
920
  level: 2,
921
921
  cost: 1e3,
922
- description: "重启高级武器改装站,武器改装通用模块享有10%的折扣",
923
- careerBonus: "武器改装通用模块享有20%的折扣; 武器改装专属模块享有10%的折扣"
922
+ description: "重启高级武器改装站,武器改装通用模块享有5%的折扣; 武器改装专属模块享有5%的折扣",
923
+ careerBonus: "武器改装通用模块享有10%的折扣; 武器改装专属模块享有10%的折扣"
924
924
  }
925
925
  ]
926
926
  },
@@ -1274,211 +1274,211 @@ var bossPool = [
1274
1274
  var passiveConfig = {
1275
1275
  "弱化形态": {
1276
1276
  type: "伤害增减(负面)",
1277
- description: "子代防御脆弱,所受伤害提升10%"
1277
+ description: "子代防御脆弱,受到的伤害提高10%"
1278
1278
  },
1279
1279
  "异形甲壳": {
1280
1280
  type: "伤害增减(正面)",
1281
- description: "强化生物甲壳提供防护,所受伤害降低20%"
1281
+ description: "受到的伤害降低20%"
1282
1282
  },
1283
1283
  "冰霜回复": {
1284
1284
  type: "生存强化(生命回复)",
1285
- description: "生命值降至30%以下时触发,立即回复自身40%最大生命值,并为其他存活异形回复10%最大生命值(触发后效果移除)"
1285
+ description: "生命值≤30%时,立即回复自身40%最大生命值,并为所有其他存活异形回复10%最大生命值(生效后移除)"
1286
1286
  },
1287
1287
  "冰霜进化": {
1288
1288
  type: "状态免疫(寒冷伤害免疫)",
1289
- description: "免疫寒冷类伤害,受到寒冷伤害时额外回复生命值"
1289
+ description: "免疫寒冷伤害,受到寒冷攻击时回复等量生命值"
1290
1290
  },
1291
1291
  "冰霜环绕": {
1292
1292
  type: "生存强化(生命回复+群体增益)",
1293
- description: "生命值降至30%以下时触发,立即回复自身45%最大生命值,并使所有存活异形获得「寒霜地狱」技能(自身效果触发后移除)"
1293
+ description: "生命值≤30%时,立即回复自身45%最大生命值,并使所有存活异形获得「寒霜地狱」技能(生效后移除)"
1294
1294
  },
1295
1295
  "寒霜地狱": {
1296
1296
  type: "伤害增减(正面)",
1297
- description: "暴风雪笼罩战场,所受伤害降低30%"
1297
+ description: "受到的伤害降低30%"
1298
1298
  },
1299
1299
  "应激甲壳I": {
1300
1300
  type: "伤害增减(正面)",
1301
- description: "基础应激甲壳生效,所受伤害降低20%"
1301
+ description: "受到的伤害降低20%"
1302
1302
  },
1303
1303
  "应激甲壳II": {
1304
1304
  type: "伤害增减(正面)",
1305
- description: "进阶应激甲壳生效,所受伤害降低25%"
1305
+ description: "受到的伤害降低25%"
1306
1306
  },
1307
1307
  "求生本能I": {
1308
1308
  type: "生存强化(生命回复)",
1309
- description: "濒死状态下,快速回复30%最大生命值(触发后效果移除)"
1309
+ description: "濒死时立即回复自身30%最大生命值(生效后移除)"
1310
1310
  },
1311
1311
  "求生本能II": {
1312
1312
  type: "生存强化(生命回复)",
1313
- description: "濒死状态下,快速回复50%最大生命值(触发后效果移除)"
1313
+ description: "濒死时立即回复自身50%最大生命值(生效后移除)"
1314
1314
  },
1315
1315
  "冷适应": {
1316
1316
  type: "状态免疫(寒冷伤害免疫)",
1317
- description: "累计承受10次寒冷伤害后,获得「惧热」标签并获得寒冷伤害免疫"
1317
+ description: "累计承受10次寒冷伤害后,获得「惧热」标签并永久免疫寒冷伤害"
1318
1318
  },
1319
1319
  "感染空间站": {
1320
1320
  type: "伤害增减(正面)",
1321
- description: "若「空间站哨枪塔」存活,自身所受伤害降低50%"
1321
+ description: "当空间站哨枪塔存活时,自身受到的伤害降低50%"
1322
1322
  },
1323
1323
  "病毒云": {
1324
1324
  type: "伤害增减(正面)",
1325
- description: "释放病毒云雾形成保护,所受伤害降低10%"
1325
+ description: "受到的伤害降低10%"
1326
1326
  },
1327
1327
  "霉菌滋生": {
1328
1328
  type: "生存强化(生命回复)",
1329
- description: "受到攻击后,若「空间站哨枪塔」存活,为其回复1%最大生命值"
1329
+ description: "受击后,若空间站哨枪塔存活,为其回复1%最大生命值"
1330
1330
  },
1331
1331
  "岗哨机枪": {
1332
1332
  type: "生存强化(生命回复)",
1333
- description: "每累计承受10次攻击后,为所有其他存活异形回复其10%最大生命值"
1333
+ description: "每累计承受10次攻击,为所有其他存活异形回复10%最大生命值"
1334
1334
  },
1335
1335
  "结构装甲": {
1336
1336
  type: "伤害增减(正面)",
1337
- description: "装备结构装甲,常规伤害降低20%;若伤害来源为热能武器,伤害降低提升至40%"
1337
+ description: "受实弹/能量武器伤害降低20%,受热能武器伤害降低40%"
1338
1338
  },
1339
1339
  "吸血唾液": {
1340
1340
  type: "伤害增减(正面)",
1341
- description: "受到攻击时叠加「吸血唾液」层数,每层提供5%减伤(最多叠加20层)"
1341
+ description: "受击获得1层「吸血唾液」(上限20层),每层使受到的伤害降低5%"
1342
1342
  },
1343
1343
  "进食": {
1344
1344
  type: "生存强化(生命回复)",
1345
- description: "当「吸血唾液」层数达到20层时,下一次受击消耗所有层数并回复20%最大生命值"
1345
+ description: "「吸血唾液」≥20层时,下次受击消耗所有层数并回复自身20%最大生命值"
1346
1346
  },
1347
1347
  "嗜血狂暴": {
1348
1348
  type: "伤害增减(正面)",
1349
- description: "生命值低于50%时触发狂暴状态,每次受击额外叠加1层「吸血唾液」,同时所受伤害降低20%"
1349
+ description: "生命值≤50%时,受击额外获得1层「吸血唾液」且受到的伤害降低20%"
1350
1350
  },
1351
1351
  "吐血": {
1352
1352
  type: "伤害增减(负面)",
1353
- description: "无「吸血唾液」层数时,所受伤害提升20%"
1353
+ description: "无「吸血唾液」层数时,受到的伤害提高20%"
1354
1354
  },
1355
1355
  "超导体": {
1356
1356
  type: "状态转换(护盾→重甲)",
1357
- description: "生命值降至10%以下时,「护盾」标签转换为「重甲」标签"
1357
+ description: "生命值≤10%时,护盾标签永久转换为重甲标签"
1358
1358
  },
1359
1359
  "能量虹吸": {
1360
1360
  type: "伤害增减(正面)",
1361
- description: "生命值≥70%时,所受伤害降低40%;生命值≥30%时,伤害降低20%"
1361
+ description: "生命值≥70%时伤害降低40%,30%-70%时伤害降低20%"
1362
1362
  },
1363
1363
  "能源虹吸": {
1364
1364
  type: "伤害增减(正面)",
1365
- description: "能量值≥80%时,所受伤害降低50%;能量值≥50%时,伤害降低30%"
1365
+ description: "能量值≥80%时伤害降低50%,50%-80%时伤害降低30%"
1366
1366
  },
1367
1367
  "电能立场": {
1368
1368
  type: "状态免疫(伤害免疫)",
1369
- description: "能量值≥30%时,每次受击有55%概率免疫该次伤害(无法免疫寒冷伤害);每存在1层「寒冷」状态,免疫概率降低5%(至多降低50%)"
1369
+ description: "能量值≥30%时,55%概率免疫非热能伤害(每层寒冷降低5%触发概率)"
1370
1370
  },
1371
1371
  "电能冲击波": {
1372
1372
  type: "生存强化(能量回复)",
1373
- description: "每次受击时,回复100点「能量」"
1373
+ description: "受击后回复100点能量"
1374
1374
  },
1375
1375
  "脉冲": {
1376
1376
  type: "生存强化(生命回复)",
1377
- description: "能量值≥30%时,每次受击有60%概率为所有存活异形回复100点生命值;每存在1层「寒冷」状态,概率降低5%(至多降低50%)"
1377
+ description: "能量值≥30%时,60%概率为所有存活异形回复100点生命(每层寒冷降低5%触发概率)"
1378
1378
  },
1379
1379
  "能量黑洞": {
1380
1380
  type: "伤害增减(正面)",
1381
- description: "存在「能量黑洞」时,所受伤害降低20%"
1381
+ description: "存在能量黑洞时,受到的伤害降低20%"
1382
1382
  },
1383
1383
  "火焰异形": {
1384
1384
  type: "状态免疫(火焰伤害免疫)",
1385
- description: "免疫火焰类伤害,受到火焰伤害时额外回复生命值"
1385
+ description: "免疫火焰伤害,受到火焰攻击时回复等量生命值"
1386
1386
  },
1387
1387
  "庞兽狂暴": {
1388
1388
  type: "伤害增减(正面)",
1389
- description: "生命值低于50%时触发狂暴状态,所受伤害降低50%"
1389
+ description: "生命值≤50%时,受到的伤害降低50%"
1390
1390
  },
1391
1391
  "灼烧粘液": {
1392
1392
  type: "生存强化(生命回复)",
1393
- description: "受到伤害时叠加「灼烧粘液」层数;若存在「灼烧粘液」层数时受到火焰攻击,立即清空层数并回复(层数×10)点生命值"
1393
+ description: "受击获得1层「灼烧粘液」;受火焰攻击时消耗所有层数并回复(层数×10)点生命"
1394
1394
  },
1395
1395
  "腐蚀胆汁": {
1396
1396
  type: "生存强化(生命回复)",
1397
- description: "「灼烧粘液」层数达到10层时,下一次受击为所有存活异形回复1000点生命值并清空层数"
1397
+ description: "「灼烧粘液」≥10层时,下次受击消耗所有层数并为所有存活异形回复1000点生命"
1398
1398
  },
1399
1399
  "火焰吐息": {
1400
1400
  type: "生存强化(生命回复)",
1401
- description: "「灼烧粘液」层数达到20层时,下一次攻击为所有存活异形回复20%最大生命值并清空层数"
1401
+ description: "「灼烧粘液」≥20层时,下次攻击消耗所有层数并为所有存活异形回复20%最大生命值"
1402
1402
  },
1403
1403
  "太阳耀斑": {
1404
1404
  type: "状态移除+状态免疫(寒冷伤害免疫)",
1405
- description: "所有子代阵亡后,移除「惧寒」标签及「孤立无援」并获得寒冷伤害免疫"
1405
+ description: "所有子代阵亡后,移除惧寒标签和孤立无援状态,并永久免疫寒冷伤害"
1406
1406
  },
1407
1407
  "燃烧潜地": {
1408
1408
  type: "生存强化(生命回复)",
1409
- description: "生命值降至10%以下时触发,立即回复50%最大生命值(触发后效果移除)"
1409
+ description: "生命值≤10%时立即回复50%最大生命值(生效后移除)"
1410
1410
  },
1411
1411
  "炼狱爆弹": {
1412
1412
  type: "伤害增减(正面)",
1413
- description: "每存在1层「灼烧粘液」,所受伤害降低5%;若存在存活子代,伤害降低效果额外提升5%(即每层「灼烧粘液」总降低10%)"
1413
+ description: "每层「灼烧粘液」使受到的伤害降低5%,存活子代存在时每层额外降低5%"
1414
1414
  },
1415
1415
  "猎手异形": {
1416
1416
  type: "伤害增减(条件性)+状态免疫(火焰/寒冷伤害免疫)",
1417
- description: "存在其他存活异形时,所受伤害降低20%;无其他存活异形时,所受伤害提升20%;免疫火焰及寒冷伤害"
1417
+ description: "存在其他存活异形时伤害降低20%,无其他存活异形时伤害提高20%;免疫火焰及寒冷伤害"
1418
1418
  },
1419
1419
  "狂暴": {
1420
1420
  type: "伤害增减(正面)",
1421
- description: "生命值低于50%时触发狂暴状态,所受伤害降低50%"
1421
+ description: "生命值≤50%时,受到的伤害降低50%"
1422
1422
  },
1423
1423
  "伪装": {
1424
1424
  type: "伤害增减(正面)",
1425
- description: "受击时记录伤害来源的武器名称(仅保留最新),下次受到同名称武器伤害时伤害降低80%"
1425
+ description: "受击记录伤害来源武器名称,下次被同名武器攻击时伤害降低80%"
1426
1426
  },
1427
1427
  "致命一击": {
1428
1428
  type: "状态免疫(伤害免疫)",
1429
- description: "受击时有5%概率免疫该次伤害"
1429
+ description: "受击时5%概率免疫该次伤害"
1430
1430
  },
1431
1431
  "星界之风": {
1432
1432
  type: "生存强化(生命回复)",
1433
- description: "受击时有5%概率为所有存活异形回复200点生命值"
1433
+ description: "受击时5%概率为所有存活异形回复200点生命"
1434
1434
  },
1435
1435
  "心灵狂热": {
1436
1436
  type: "伤害增减(正面)",
1437
- description: "生命值低于50%时进入心灵狂热状态,所受伤害降低20%,同时「星界之风」触发概率翻倍"
1437
+ description: "生命值<50%时伤害降低20%且「星界之风」触发概率翻倍"
1438
1438
  },
1439
1439
  "宇宙能量": {
1440
1440
  type: "生存强化(能量/生命回复)",
1441
- description: "受击时回复等同于本次伤害值的「能量」;若「能量」已满,则将溢出部分转换为自身生命值"
1441
+ description: "受击回复等量能量值,能量溢出时转换为生命回复"
1442
1442
  },
1443
1443
  "复苏": {
1444
1444
  type: "生存强化(生命/能量回复)",
1445
- description: "承受致命伤害时免疫死亡,立即回复50%最大生命值及100%「能量」,并获得「灵能构造炉」技能(触发后效果移除)"
1445
+ description: "免疫致命伤害,回复50%最大生命与100%能量值,并获得「灵能构造炉」技能(生效后移除)"
1446
1446
  },
1447
1447
  "光影之刃": {
1448
1448
  type: "状态叠加(层数叠加)",
1449
- description: "受击后叠加「光影之刃」层数(至多50层)"
1449
+ description: "受击获得1层「光影之刃」(上限50层)"
1450
1450
  },
1451
1451
  "远古预兆": {
1452
1452
  type: "状态免疫(能量伤害免疫)",
1453
- description: "受击时有1%概率免疫能量武器伤害并回复100点「能量」"
1453
+ description: "受击时1%概率免疫非热能伤害并回复100点能量"
1454
1454
  },
1455
1455
  "闪电冲锋": {
1456
1456
  type: "状态增强(触发概率提升)",
1457
- description: "每存在1层「光影之刃」,「远古预兆」「灵能构造炉」触发概率各提升0.5%"
1457
+ description: "每层「光影之刃」使「远古预兆」和「灵能构造炉」触发概率提升0.5%"
1458
1458
  },
1459
1459
  "超视距穿梭": {
1460
1460
  type: "伤害增减(条件性)",
1461
- description: "能量值≥30%时,每层「光影之刃」降低5%所受伤害;能量值≥60%时,每层降低10%;能量值≤10%时,每层提升5%所受伤害"
1461
+ description: "能量≥60%时每层「光影之刃」使伤害降低10%,30%-60%时每层降低5%,能量≤10%时每层提高5%"
1462
1462
  },
1463
1463
  "灵能构造炉": {
1464
1464
  type: "状态获得(技能获得)",
1465
- description: "受击后有5%概率随机获得以下技能之一:天启超载护盾、塌缩脉冲、地毯式轰炸、轰炸引导"
1465
+ description: "受击时5%概率随机获得以下技能之一:天启超载护盾/塌缩脉冲/地毯式轰炸/轰炸引导"
1466
1466
  },
1467
1467
  "天启超载护盾": {
1468
1468
  type: "生存强化(生命回复)",
1469
- description: "受击后有5%概率为所有存活异形回复(「光影之刃」层数×10)点生命值"
1469
+ description: "受击时10%概率为所有存活异形回复(「光影之刃」层数×10)点生命"
1470
1470
  },
1471
1471
  "塌缩脉冲": {
1472
1472
  type: "状态叠加(层数叠加)",
1473
- description: "受击后额外叠加1层「光影之刃」"
1473
+ description: "受击后额外获得1层「光影之刃」"
1474
1474
  },
1475
1475
  "地毯式轰炸": {
1476
1476
  type: "状态移除+伤害增减(正面)",
1477
- description: "触发时移除「孤立无援」,并使自身所受伤害降低100%"
1477
+ description: "移除孤立无援状态,受到的伤害降低100%"
1478
1478
  },
1479
1479
  "轰炸引导": {
1480
1480
  type: "生存强化(能量回复)",
1481
- description: "受击后有5%概率回复(「光影之刃」层数×50)点「能量」"
1481
+ description: "受击时10%概率回复(「光影之刃」层数×50)点能量"
1482
1482
  }
1483
1483
  };
1484
1484
 
@@ -2448,7 +2448,7 @@ var BattleEffectProcessor = {
2448
2448
  handleWeakForm: /* @__PURE__ */ __name(function(targetBoss) {
2449
2449
  if (targetBoss.skills.includes("弱化形态")) {
2450
2450
  const newBuffMultiplier = 0.1;
2451
- const messages = [`📚 【弱化形态】生效:子代防御脆弱,所受伤害提升10%`];
2451
+ const messages = [`📚 【弱化形态】生效:子代防御脆弱,受到的伤害+10%`];
2452
2452
  return {
2453
2453
  buffMultiplier: newBuffMultiplier,
2454
2454
  messages
@@ -2460,7 +2460,7 @@ var BattleEffectProcessor = {
2460
2460
  handleAlienShell: /* @__PURE__ */ __name(function(targetBoss) {
2461
2461
  if (targetBoss.skills.includes("异形甲壳")) {
2462
2462
  const newNerfMultiplier = 0.2;
2463
- const messages = [`🛡️ 【异形甲壳】生效:强化生物甲壳提供防护,所受伤害降低20%`];
2463
+ const messages = [`🛡️ 【异形甲壳】生效:受到的伤害-20%`];
2464
2464
  return {
2465
2465
  nerfMultiplier: newNerfMultiplier,
2466
2466
  messages
@@ -2469,13 +2469,16 @@ var BattleEffectProcessor = {
2469
2469
  return null;
2470
2470
  }, "handleAlienShell"),
2471
2471
  // 孤立无援处理(活跃Boss中仅自己时增伤20%)
2472
- handleIsolated: /* @__PURE__ */ __name(function(targetBoss, activeBosses) {
2472
+ handleIsolated: /* @__PURE__ */ __name(function(targetBoss, activeBosses, tempMark) {
2473
+ if (tempMark) {
2474
+ return null;
2475
+ }
2473
2476
  const isIsolated = activeBosses.length === 1 && // 活跃Boss仅1个
2474
2477
  activeBosses[0].name === targetBoss.name;
2475
2478
  if (isIsolated) {
2476
2479
  const newBuffMultiplier = 0.2;
2477
2480
  const messages = [
2478
- `🌌 【孤立无援】生效:无存活子代时,所受伤害提升20%`
2481
+ `📚 【孤立无援】生效:无存活子代时,受到的伤害+20%`
2479
2482
  ];
2480
2483
  return {
2481
2484
  buffMultiplier: newBuffMultiplier,
@@ -2502,7 +2505,7 @@ var BattleEffectProcessor = {
2502
2505
  skillsRemoved: ["冰霜回复"]
2503
2506
  // 移除技能
2504
2507
  };
2505
- messages.push(`❄️ 【冰霜回复】生效:自身回复${selfHealAmount}点生命值`);
2508
+ messages.push(`❄️ 【冰霜回复】触发:生命值≤30%,自身回复${selfHealAmount}点生命值`);
2506
2509
  const otherSurvivingBosses = activeBosses.filter(
2507
2510
  (boss) => boss.name !== targetBoss.name && boss.isActive
2508
2511
  );
@@ -2516,7 +2519,7 @@ var BattleEffectProcessor = {
2516
2519
  });
2517
2520
  messages.push(`❄️ 「${otherName}」回复${otherHealAmount}点生命值`);
2518
2521
  });
2519
- messages.push(`❄️ 【冰霜回复】触发后技能移除`);
2522
+ messages.push(`❄️ 【冰霜回复】技能移除`);
2520
2523
  return {
2521
2524
  messages,
2522
2525
  targetUpdates: {
@@ -2547,8 +2550,8 @@ var BattleEffectProcessor = {
2547
2550
  skillsAdded: ["寒霜地狱"]
2548
2551
  // 新增【寒霜地狱】技能(自身)
2549
2552
  };
2550
- messages.push(`❄️ 【冰霜环绕】生效:自身回复${selfHealAmount}点生命值`);
2551
- messages.push(`❄️ 「${targetBoss.name}」获得【寒霜地狱】技能`);
2553
+ messages.push(`❄️ 【冰霜环绕】触发:生命值≤30%,自身回复${selfHealAmount}点生命值`);
2554
+ messages.push(`❄️ 「${targetBoss.name}」获得「寒霜地狱」技能`);
2552
2555
  const survivingMinions = activeBosses.filter(
2553
2556
  (boss) => boss.name !== targetBoss.name && boss.isActive
2554
2557
  );
@@ -2563,10 +2566,10 @@ var BattleEffectProcessor = {
2563
2566
  name: minionName,
2564
2567
  updates: minionUpdates
2565
2568
  });
2566
- messages.push(`❄️ 「${minionName}」获得【寒霜地狱】技能`);
2569
+ messages.push(`❄️ 「${minionName}」获得「寒霜地狱」技能`);
2567
2570
  });
2568
2571
  }
2569
- messages.push(`❄️ 【冰霜环绕】触发后技能移除`);
2572
+ messages.push(`❄️ 【冰霜环绕】技能移除`);
2570
2573
  return {
2571
2574
  messages,
2572
2575
  targetUpdates: {
@@ -2596,8 +2599,7 @@ var BattleEffectProcessor = {
2596
2599
  // 生命值变化量
2597
2600
  }
2598
2601
  };
2599
- messages.push(`❄️ 【冰霜进化】生效:「${targetBoss.name}」免疫寒冷伤害`);
2600
- messages.push(`❄️ 恢复${healAmount}点生命值`);
2602
+ messages.push(`❄️ 【冰霜进化】生效:免疫寒冷伤害并回复${healAmount}点生命值`);
2601
2603
  return {
2602
2604
  isImmune,
2603
2605
  messages,
@@ -2608,7 +2610,7 @@ var BattleEffectProcessor = {
2608
2610
  handleFrostHell: /* @__PURE__ */ __name(function(targetBoss) {
2609
2611
  if (targetBoss.skills.includes("寒霜地狱")) {
2610
2612
  const newNerfMultiplier = 0.3;
2611
- const messages = [`❄️ 【寒霜地狱】生效:暴风雪笼罩战场,所受伤害降低30%`];
2613
+ const messages = [`❄️ 【寒霜地狱】生效:受到的伤害-30%`];
2612
2614
  return {
2613
2615
  nerfMultiplier: newNerfMultiplier,
2614
2616
  messages
@@ -2620,7 +2622,7 @@ var BattleEffectProcessor = {
2620
2622
  handleStressShellI: /* @__PURE__ */ __name(function(targetBoss) {
2621
2623
  if (targetBoss.skills.includes("应激甲壳I")) {
2622
2624
  const newNerfMultiplier = 0.2;
2623
- const messages = [`🛡️ 【应激甲壳I】生效:基础应激甲壳生效,所受伤害降低20%`];
2625
+ const messages = [`🛡️ 【应激甲壳I】生效:受到的伤害-20%`];
2624
2626
  return {
2625
2627
  nerfMultiplier: newNerfMultiplier,
2626
2628
  messages
@@ -2632,7 +2634,7 @@ var BattleEffectProcessor = {
2632
2634
  handleStressShellII: /* @__PURE__ */ __name(function(targetBoss) {
2633
2635
  if (targetBoss.skills.includes("应激甲壳II")) {
2634
2636
  const newNerfMultiplier = 0.25;
2635
- const messages = [`🛡️ 【应激甲壳II】生效:进阶应激甲壳生效,所受伤害降低25%`];
2637
+ const messages = [`🛡️ 【应激甲壳II】生效:受到的伤害-25%`];
2636
2638
  return {
2637
2639
  nerfMultiplier: newNerfMultiplier,
2638
2640
  messages
@@ -2655,8 +2657,8 @@ var BattleEffectProcessor = {
2655
2657
  hpChange: selfHealAmount,
2656
2658
  skillsRemoved: ["求生本能I"]
2657
2659
  };
2658
- messages.push(`❤️ 【求生本能I】生效:生命值归零时回复${selfHealAmount}点生命值`);
2659
- messages.push(`❤️ 「${targetBoss.name}」的【求生本能I】技能已移除`);
2660
+ messages.push(`❤️ 【求生本能I】触发:濒死时,回复${selfHealAmount}点生命值`);
2661
+ messages.push(`❤️ 【求生本能I】技能移除`);
2660
2662
  return {
2661
2663
  messages,
2662
2664
  targetUpdates: {
@@ -2682,8 +2684,8 @@ var BattleEffectProcessor = {
2682
2684
  skillsRemoved: ["求生本能II"]
2683
2685
  // 移除的技能
2684
2686
  };
2685
- messages.push(`❤️ 【求生本能II】生效:生命值归零时回复${selfHealAmount}点生命值`);
2686
- messages.push(`❤️ 「${targetBoss.name}」的【求生本能II】技能已移除`);
2687
+ messages.push(`❤️ 【求生本能II】触发:濒死时,回复${selfHealAmount}点生命值`);
2688
+ messages.push(`❤️ 【求生本能II】技能移除`);
2687
2689
  return {
2688
2690
  messages,
2689
2691
  targetUpdates: {
@@ -2720,11 +2722,10 @@ var BattleEffectProcessor = {
2720
2722
  // 层数+1
2721
2723
  }
2722
2724
  };
2723
- messages.push(`❄️ 【冷适应】叠加状态:当前累计${newLayers}/10次寒冷伤害`);
2725
+ messages.push(`❄️ 【冷适应】叠层:当前${newLayers}/10次寒冷伤害`);
2724
2726
  if (newLayers >= 10) {
2725
2727
  targetUpdates.updates.tagsAdded = ["惧热"];
2726
- messages.push(`🧊 【冷适应】触发:累计承受10次寒冷伤害,获得「惧热」标签`);
2727
- messages.push(`🧊 【冷适应】获得永久免疫寒冷伤害效果`);
2728
+ messages.push(`🧊 【冷适应】生效:获得「惧热」标签并免疫寒冷伤害`);
2728
2729
  }
2729
2730
  }
2730
2731
  return {
@@ -2746,7 +2747,7 @@ var BattleEffectProcessor = {
2746
2747
  return null;
2747
2748
  }
2748
2749
  const newNerfMultiplier = 0.5;
2749
- messages.push(`🛸 【感染空间站】生效:因「空间站哨枪塔」存活,自身所受伤害降低50%`);
2750
+ messages.push(`🛸 【感染空间站】生效:「空间站哨枪塔」存活,受到的伤害-50%`);
2750
2751
  return {
2751
2752
  nerfMultiplier: newNerfMultiplier,
2752
2753
  // 返回调整后的减伤系数
@@ -2760,7 +2761,7 @@ var BattleEffectProcessor = {
2760
2761
  return null;
2761
2762
  }
2762
2763
  const newNerfMultiplier = 0.1;
2763
- messages.push(`☁️ 【病毒云】生效:释放病毒云雾形成保护,所受伤害降低10%`);
2764
+ messages.push(`☁️ 【病毒云】生效:受到的伤害-10%`);
2764
2765
  return {
2765
2766
  nerfMultiplier: newNerfMultiplier,
2766
2767
  // 返回调整后的减伤系数
@@ -2787,7 +2788,7 @@ var BattleEffectProcessor = {
2787
2788
  hpChange: healAmount
2788
2789
  }
2789
2790
  };
2790
- messages.push(`🍄 【霉菌滋生】生效:为空间站哨枪塔回复${healAmount}点生命值`);
2791
+ messages.push(`🍄 【霉菌滋生】生效:为「空间站哨枪塔」回复${healAmount}点生命值`);
2791
2792
  return {
2792
2793
  messages,
2793
2794
  spaceStationUpdates
@@ -2811,7 +2812,7 @@ var BattleEffectProcessor = {
2811
2812
  }
2812
2813
  };
2813
2814
  const newStacks = currentStacks + 1;
2814
- messages.push(`🔫 【岗哨机枪】充能:当前累计${newStacks}/10次攻击`);
2815
+ messages.push(`🔫 【岗哨机枪】充能:当前${newStacks}/10次攻击`);
2815
2816
  return {
2816
2817
  messages,
2817
2818
  targetUpdates,
@@ -2825,7 +2826,6 @@ var BattleEffectProcessor = {
2825
2826
  // 重置层数
2826
2827
  }
2827
2828
  };
2828
- messages.push(`🔫 【岗哨机枪】生效:累计承受10次攻击,为所有其他存活异形回复生命值`);
2829
2829
  const otherSurvivingBosses = activeBosses.filter(
2830
2830
  (boss) => boss.name !== targetBoss.name && boss.isActive
2831
2831
  );
@@ -2857,7 +2857,7 @@ var BattleEffectProcessor = {
2857
2857
  const weaponType = weaponData.type;
2858
2858
  const isHeatWeapon = weaponType === "热能武器";
2859
2859
  const nerfMultiplier = isHeatWeapon ? 0.4 : 0.2;
2860
- messages.push(`🛡️ 【结构装甲】生效:${isHeatWeapon ? "热能武器" : "常规武器"}伤害降低${nerfMultiplier * 100}%`);
2860
+ messages.push(`🛡️ 【结构装甲】生效:受到${weaponType}的伤害-${nerfMultiplier * 100}%`);
2861
2861
  return {
2862
2862
  nerfMultiplier,
2863
2863
  messages
@@ -2882,8 +2882,8 @@ var BattleEffectProcessor = {
2882
2882
  }
2883
2883
  };
2884
2884
  }
2885
- const stackMessage = currentStacks < 20 ? `当前${currentStacks}层,获得${(addedReduction * 100).toFixed(0)}%减伤,同时层数+1` : `已达到最大20层,获得${(addedReduction * 100).toFixed(0)}%减伤`;
2886
- messages.push(`🩸 【吸血唾液】${stackMessage}`);
2885
+ messages.push(`🩸 【吸血唾液】生效:当前${currentStacks}层,受到的伤害-${(addedReduction * 100).toFixed(0)}%`);
2886
+ messages.push(`🩸 【吸血唾液】叠层:「吸血唾液」层数+1`);
2887
2887
  return {
2888
2888
  nerfMultiplier: addedReduction,
2889
2889
  messages,
@@ -2911,7 +2911,7 @@ var BattleEffectProcessor = {
2911
2911
  // 生命值回复
2912
2912
  }
2913
2913
  };
2914
- messages.push(`🍽️ 【进食】生效:消耗20层吸血唾液,回复${healAmount}点生命值`);
2914
+ messages.push(`🍽️ 【进食】触发:消耗20层「吸血唾液」,回复${healAmount}点生命值`);
2915
2915
  return {
2916
2916
  messages,
2917
2917
  targetUpdates
@@ -2940,8 +2940,7 @@ var BattleEffectProcessor = {
2940
2940
  };
2941
2941
  }
2942
2942
  nerfMultiplier = 0.2;
2943
- const stackMessage = currentStacks < 20 ? `额外叠加1层吸血唾液(当前${currentStacks + 1}/20层)` : `已达到最大20层吸血唾液`;
2944
- messages.push(`🔥 【嗜血狂暴】生效:HP≤50%,${stackMessage},并且获得20%额外减伤`);
2943
+ messages.push(`🔥 【嗜血狂暴】生效:生命值≤50%,每次受击+1层「吸血唾液」且受到的伤害-20%`);
2945
2944
  }
2946
2945
  return {
2947
2946
  nerfMultiplier,
@@ -2959,7 +2958,7 @@ var BattleEffectProcessor = {
2959
2958
  const isTriggered = currentVampireStacks === 0;
2960
2959
  const buffMultiplier = isTriggered ? 0.2 : 0;
2961
2960
  if (isTriggered) {
2962
- messages.push(`🩸 【吐血】生效:无「吸血唾液」层数,所受伤害提升20%`);
2961
+ messages.push(`🩸 【吐血】生效:无「吸血唾液」层数,受到的伤害+20%`);
2963
2962
  }
2964
2963
  return {
2965
2964
  buffMultiplier,
@@ -2988,7 +2987,7 @@ var BattleEffectProcessor = {
2988
2987
  // 添加重甲标签
2989
2988
  }
2990
2989
  };
2991
- messages.push(`🛡️ 【超导体】生效:生命值≤10%,「护盾」标签转换为「重甲」标签`);
2990
+ messages.push(`🛡️ 【超导体】触发:生命值≤10%,「护盾」标签转换为「重甲」标签`);
2992
2991
  return {
2993
2992
  messages,
2994
2993
  targetUpdates
@@ -3003,10 +3002,10 @@ var BattleEffectProcessor = {
3003
3002
  let nerfMultiplier = 0;
3004
3003
  if (hpPercent >= 0.7) {
3005
3004
  nerfMultiplier = 0.4;
3006
- messages.push(`⚡ 【能量虹吸】生效:生命值≥70%,所受伤害降低40%`);
3005
+ messages.push(`⚡ 【能量虹吸】生效:生命值≥70%,受到的伤害-40%`);
3007
3006
  } else if (hpPercent >= 0.3) {
3008
3007
  nerfMultiplier = 0.2;
3009
- messages.push(`⚡ 【能量虹吸】生效:生命值≥30%,所受伤害降低20%`);
3008
+ messages.push(`⚡ 【能量虹吸】生效:生命值≥30%,受到的伤害-20%`);
3010
3009
  }
3011
3010
  return { nerfMultiplier, messages };
3012
3011
  }, "handleEnergySiphon"),
@@ -3020,18 +3019,20 @@ var BattleEffectProcessor = {
3020
3019
  let nerfMultiplier = 0;
3021
3020
  if (energyPercent >= 0.8) {
3022
3021
  nerfMultiplier = 0.5;
3023
- messages.push(`⚡ 【能源虹吸】生效:能量≥80%,所受伤害降低50%`);
3022
+ messages.push(`⚡ 【能源虹吸】生效:能量值≥80%,受到的伤害-50%`);
3024
3023
  } else if (energyPercent >= 0.5) {
3025
3024
  nerfMultiplier = 0.3;
3026
- messages.push(`⚡ 【能源虹吸】生效:能量≥50%,所受伤害降低30%`);
3025
+ messages.push(`⚡ 【能源虹吸】生效:能量值≥50%,受到的伤害-30%`);
3027
3026
  }
3028
3027
  return { nerfMultiplier, messages };
3029
3028
  }, "handleEnergyAbsorption"),
3030
- // 电能立场(能量相关免疫)
3031
- handleElectricField: /* @__PURE__ */ __name(function(targetBoss) {
3029
+ handleElectricField: /* @__PURE__ */ __name(function(targetBoss, weaponData) {
3032
3030
  const messages = [];
3033
3031
  let isImmune = false;
3034
3032
  if (!targetBoss.skills.includes("电能立场")) return null;
3033
+ if (weaponData.type === "热能武器") {
3034
+ return null;
3035
+ }
3035
3036
  const currentEnergy = targetBoss.energy;
3036
3037
  const maxEnergy = getMaxEnergyByName(targetBoss.name);
3037
3038
  const energyPercent = currentEnergy / maxEnergy;
@@ -3043,8 +3044,10 @@ var BattleEffectProcessor = {
3043
3044
  const coldPenalty = coldLayers * 0.05;
3044
3045
  const immuneChance = Math.max(baseChance - coldPenalty, 0.05);
3045
3046
  isImmune = Math.random() < immuneChance;
3046
- const chancePercent = Math.round(immuneChance * 100);
3047
- messages.push(`⚡ 【电能立场】生效:能量≥30%,免疫概率${chancePercent}%` + (isImmune ? " → 免疫成功" : " → 未免疫"));
3047
+ if (isImmune) {
3048
+ const chancePercent = Math.round(immuneChance * 100);
3049
+ messages.push(`⚡ 【电能立场】生效:能量值≥30%,${chancePercent}%概率成功免疫非热能武器伤害`);
3050
+ }
3048
3051
  return { isImmune, messages };
3049
3052
  }, "handleElectricField"),
3050
3053
  // 电能冲击波(能量回复)
@@ -3058,11 +3061,7 @@ var BattleEffectProcessor = {
3058
3061
  const maxHealAmount = 100;
3059
3062
  const actualHealAmount = Math.min(maxHealAmount, maxEnergy - currentEnergy);
3060
3063
  if (actualHealAmount <= 0) {
3061
- messages.push(`⚡ 【电能冲击波】生效:能量已达上限`);
3062
- return {
3063
- messages,
3064
- targetUpdates: null
3065
- };
3064
+ return null;
3066
3065
  }
3067
3066
  const targetUpdates = {
3068
3067
  name: targetBoss.name,
@@ -3117,7 +3116,7 @@ var BattleEffectProcessor = {
3117
3116
  handleEnergyBlackhole: /* @__PURE__ */ __name(function(targetBoss) {
3118
3117
  const messages = [];
3119
3118
  if (!targetBoss.skills.includes("能量黑洞")) return null;
3120
- messages.push(`⚡ 【能量黑洞】生效:存在「能量黑洞」时,所受伤害降低20%`);
3119
+ messages.push(`⚡ 【能量黑洞】生效:存在「能量黑洞」时,受到的伤害-20%`);
3121
3120
  return { nerfMultiplier: 0.2, messages };
3122
3121
  }, "handleEnergyBlackhole"),
3123
3122
  // 火焰异形(免疫伤害并回复生命值)
@@ -3140,8 +3139,7 @@ var BattleEffectProcessor = {
3140
3139
  // 生命值变化量
3141
3140
  }
3142
3141
  };
3143
- messages.push(`🔥 【火焰异形】生效:「${targetBoss.boss}」免疫火焰伤害`);
3144
- messages.push(`🔥 恢复${healAmount}点生命值`);
3142
+ messages.push(`🔥 【火焰异形】生效:免疫火焰伤害并回复${healAmount}点生命值`);
3145
3143
  return {
3146
3144
  isImmune,
3147
3145
  messages,
@@ -3157,9 +3155,9 @@ var BattleEffectProcessor = {
3157
3155
  const maxHP = getMaxHPByName(targetBoss.name);
3158
3156
  const hpPercent = targetBoss.HP / maxHP;
3159
3157
  let nerfMultiplier = 0;
3160
- if (hpPercent < 0.5) {
3158
+ if (hpPercent <= 0.5) {
3161
3159
  nerfMultiplier = 0.5;
3162
- messages.push(`💥 【庞兽狂暴】生效:生命值低于50%,狂暴状态下所受伤害降低50%`);
3160
+ messages.push(`💥 【庞兽狂暴】生效:生命值≤50%,受到的伤害-50%`);
3163
3161
  }
3164
3162
  return { nerfMultiplier, messages };
3165
3163
  }, "handleColossalRampage"),
@@ -3177,17 +3175,15 @@ var BattleEffectProcessor = {
3177
3175
  if (!isFireDamage && currentStacks < maxStacks) {
3178
3176
  updates.skillStacksChanged = 1;
3179
3177
  const newStacks = currentStacks + 1;
3180
- messages.push(`🔥 【灼烧粘液】叠加:当前层数${newStacks}/${maxStacks}`);
3178
+ messages.push(`🔥 【灼烧粘液】叠层:当前${newStacks}/20层`);
3181
3179
  }
3182
3180
  if (isFireDamage && currentStacks > 0) {
3183
3181
  const healAmount = currentStacks * 10;
3184
3182
  updates.hpChange = healAmount;
3185
3183
  updates.skillStacksChanged = -currentStacks;
3184
+ messages.push(`🔥 【灼烧粘液】触发:消耗${currentStacks}层「灼烧粘液」,回复${healAmount}点生命值`);
3186
3185
  if (currentStacks >= 10) {
3187
3186
  isHighStackHeal = true;
3188
- messages.push(`🔥 【灼烧粘液】强力回复:消耗${currentStacks}层(≥10),回复${healAmount}点生命值!`);
3189
- } else {
3190
- messages.push(`🔥 【灼烧粘液】生效:消耗${currentStacks}层,回复${healAmount}点生命值`);
3191
3187
  }
3192
3188
  }
3193
3189
  if (Object.keys(updates).length > 0) {
@@ -3226,7 +3222,7 @@ var BattleEffectProcessor = {
3226
3222
  // 重置层数为0
3227
3223
  }
3228
3224
  };
3229
- messages.push(`🧪 【腐蚀胆汁】触发:灼烧粘液达到${currentStacks}层,为所有存活异形回复生命值`);
3225
+ messages.push(`🧪 【腐蚀胆汁】触发:消耗${currentStacks}层「灼烧粘液」`);
3230
3226
  otherSurvivingBosses.forEach((otherBoss) => {
3231
3227
  const otherName = otherBoss.name;
3232
3228
  const healAmount = 1e3;
@@ -3235,7 +3231,7 @@ var BattleEffectProcessor = {
3235
3231
  name: otherName,
3236
3232
  updates: { hpChange: healAmount }
3237
3233
  });
3238
- messages.push(`🧪 【腐蚀胆汁】生效:为「${otherName}」回复${healAmount}点生命值`);
3234
+ messages.push(`🧪 【腐蚀胆汁】触发:为「${otherName}」回复${healAmount}点生命值`);
3239
3235
  }
3240
3236
  });
3241
3237
  return {
@@ -3267,7 +3263,7 @@ var BattleEffectProcessor = {
3267
3263
  // 重置层数为0
3268
3264
  }
3269
3265
  };
3270
- messages.push(`🔥 【火焰吐息】触发:灼烧粘液达到${currentStacks}层,为所有存活异形回复20%最大生命值`);
3266
+ messages.push(`🔥 【火焰吐息】触发:消耗${currentStacks}层「灼烧粘液」`);
3271
3267
  otherSurvivingBosses.forEach((otherBoss) => {
3272
3268
  const otherName = otherBoss.name;
3273
3269
  const maxHP = getMaxHPByName(otherName);
@@ -3277,7 +3273,7 @@ var BattleEffectProcessor = {
3277
3273
  name: otherName,
3278
3274
  updates: { hpChange: healAmount }
3279
3275
  });
3280
- messages.push(`🔥 【火焰吐息】生效:为「${otherName}」回复${healAmount}点生命值`);
3276
+ messages.push(`🔥 【火焰吐息】触发:为「${otherName}」回复${healAmount}点生命值`);
3281
3277
  }
3282
3278
  });
3283
3279
  return {
@@ -3287,7 +3283,7 @@ var BattleEffectProcessor = {
3287
3283
  };
3288
3284
  }, "handleFlameBreath"),
3289
3285
  // 太阳耀斑 - 移除状态并获得免疫
3290
- handleSolarFlare: /* @__PURE__ */ __name(function(targetBoss, weaponName, damage, activeBosses) {
3286
+ handleSolarFlare: /* @__PURE__ */ __name(function(targetBoss, weaponName, activeBosses) {
3291
3287
  const messages = [];
3292
3288
  let isImmune = false;
3293
3289
  let targetUpdates = null;
@@ -3298,25 +3294,29 @@ var BattleEffectProcessor = {
3298
3294
  (boss) => boss.name !== targetBoss.name && boss.isActive
3299
3295
  );
3300
3296
  const hasFearColdTag = targetBoss.tags.includes("惧寒") || false;
3301
- if (hasLivingOffspring || !hasFearColdTag) {
3297
+ if (hasLivingOffspring) {
3302
3298
  return null;
3303
3299
  }
3304
- targetUpdates = {
3305
- name: targetBoss.name,
3306
- updates: {
3307
- tagsRemoved: ["惧寒"]
3308
- }
3309
- };
3310
- messages.push(`☀️ 【太阳耀斑】生效:无存活子代,移除「惧寒」状态`);
3300
+ if (hasFearColdTag) {
3301
+ targetUpdates = {
3302
+ name: targetBoss.name,
3303
+ updates: {
3304
+ tagsRemoved: ["惧寒"]
3305
+ }
3306
+ };
3307
+ messages.push(`☀️ 【太阳耀斑】触发:移除「惧寒」标签`);
3308
+ }
3311
3309
  const isColdWeapon = weaponName === "零度之下";
3312
3310
  if (isColdWeapon) {
3313
3311
  isImmune = true;
3314
- messages.push(`☀️ 【太阳耀斑】触发:免疫寒冷伤害`);
3312
+ messages.push(`☀️ 【太阳耀斑】生效:免疫寒冷伤害`);
3315
3313
  }
3316
3314
  return {
3317
3315
  isImmune,
3318
3316
  messages,
3319
- targetUpdates
3317
+ targetUpdates,
3318
+ tempMark: true
3319
+ // 添加临时标记
3320
3320
  };
3321
3321
  }, "handleSolarFlare"),
3322
3322
  // 燃烧潜地 - 低生命回复
@@ -3342,7 +3342,8 @@ var BattleEffectProcessor = {
3342
3342
  // 回复生命值
3343
3343
  }
3344
3344
  };
3345
- messages.push(`🔥 【燃烧潜地】生效:生命值低于10%,立即回复${healAmount}点生命值(效果移除)`);
3345
+ messages.push(`🔥 【燃烧潜地】触发:生命值≤10%,回复${healAmount}点生命值`);
3346
+ messages.push(`🔥 【燃烧潜地】技能移除`);
3346
3347
  return {
3347
3348
  messages,
3348
3349
  targetUpdates
@@ -3368,7 +3369,7 @@ var BattleEffectProcessor = {
3368
3369
  if (nerfMultiplier > 0) {
3369
3370
  const reductionPercent = Math.round(nerfMultiplier * 100);
3370
3371
  const offspringMsg = hasLivingOffspring ? "(存在子代,额外加成)" : "";
3371
- messages.push(`💣 【炼狱爆弹】生效:灼烧粘液${currentStacks}层,获得${reductionPercent}%减伤${offspringMsg}`);
3372
+ messages.push(`💣 【炼狱爆弹】生效:当前${currentStacks}层「灼烧粘液」,受到的伤害-${reductionPercent}%${offspringMsg}`);
3372
3373
  }
3373
3374
  return { nerfMultiplier, messages };
3374
3375
  }, "handleInfernalBomb"),
@@ -3392,10 +3393,10 @@ var BattleEffectProcessor = {
3392
3393
  ).length;
3393
3394
  if (otherLivingAliens > 0) {
3394
3395
  nerfMultiplier = 0.2;
3395
- messages.push(`🦖 【猎手异形】生效:存在其他存活异形,所受伤害降低20%`);
3396
+ messages.push(`🦖 【猎手异形】生效:存在其他存活异形,受到的伤害-20%`);
3396
3397
  } else {
3397
3398
  buffMultiplier = 0.2;
3398
- messages.push(`🦖 【猎手异形】生效:无其他存活异形,所受伤害提升20%`);
3399
+ messages.push(`🦖 【猎手异形】生效:无其他存活异形,受到的伤害+20%`);
3399
3400
  }
3400
3401
  return {
3401
3402
  buffMultiplier,
@@ -3413,9 +3414,9 @@ var BattleEffectProcessor = {
3413
3414
  }
3414
3415
  const maxHP = getMaxHPByName(targetBoss.name);
3415
3416
  const currentHP = targetBoss.HP;
3416
- if (currentHP < maxHP * 0.5) {
3417
+ if (currentHP <= maxHP * 0.5) {
3417
3418
  nerfMultiplier = 0.5;
3418
- messages.push(`💥 【狂暴】生效:生命值低于50%,进入狂暴状态,所受伤害降低50%`);
3419
+ messages.push(`💥 【狂暴】生效:生命值≤50%,受到的伤害-50%`);
3419
3420
  }
3420
3421
  return { nerfMultiplier, messages };
3421
3422
  }, "handleRampage"),
@@ -3430,7 +3431,7 @@ var BattleEffectProcessor = {
3430
3431
  const lastWeapon = targetBoss.lastWeaponName || null;
3431
3432
  if (lastWeapon && lastWeapon === weaponName) {
3432
3433
  nerfMultiplier = 0.8;
3433
- messages.push(`🎭 【伪装】生效:已适应武器「${weaponName}」,本次伤害降低80%`);
3434
+ messages.push(`🎭 【伪装】生效:已适应武器「${weaponName}」,本次受到的伤害-80%`);
3434
3435
  } else {
3435
3436
  targetUpdates = {
3436
3437
  name: targetBoss.name,
@@ -3439,7 +3440,7 @@ var BattleEffectProcessor = {
3439
3440
  // 记录当前武器
3440
3441
  }
3441
3442
  };
3442
- messages.push(`🎭 【伪装】生效:记录新武器「${weaponName}」,下次同武器攻击伤害降低80%`);
3443
+ messages.push(`🎭 【伪装】生效:记录新武器「${weaponName}」`);
3443
3444
  }
3444
3445
  return {
3445
3446
  nerfMultiplier,
@@ -3456,7 +3457,7 @@ var BattleEffectProcessor = {
3456
3457
  }
3457
3458
  if (Math.random() < 0.05) {
3458
3459
  isImmune = true;
3459
- messages.push(`💀 【致命一击】生效:5%概率免疫本次伤害`);
3460
+ messages.push(`💀 【致命一击】生效:5%概率免疫伤害`);
3460
3461
  }
3461
3462
  return { isImmune, messages };
3462
3463
  }, "handleDeadlyHit"),
@@ -3481,13 +3482,8 @@ var BattleEffectProcessor = {
3481
3482
  updates: { hpChange: baseHealAmount }
3482
3483
  });
3483
3484
  }
3484
- messages.push(`🌬️ 【星界之风】为「${bossName}」回复${baseHealAmount}点生命值`);
3485
+ messages.push(`🌬️ 【星界之风】触发:为「${bossName}」回复${baseHealAmount}点生命值`);
3485
3486
  });
3486
- if (doubleChance) {
3487
- messages.unshift(`🌬️ 【星界之风】生效:心灵狂热状态(触发概率10%)为所有存活异形回复生命值`);
3488
- } else {
3489
- messages.unshift(`🌬️ 【星界之风】生效:5%概率触发,为所有存活异形回复生命值`);
3490
- }
3491
3487
  return {
3492
3488
  messages,
3493
3489
  otherUpdates
@@ -3503,41 +3499,54 @@ var BattleEffectProcessor = {
3503
3499
  }
3504
3500
  const maxHP = getMaxHPByName(targetBoss.name);
3505
3501
  const hpPercent = targetBoss.HP / maxHP;
3506
- if (hpPercent < 0.5) {
3502
+ if (hpPercent <= 0.5) {
3507
3503
  nerfMultiplier = 0.2;
3508
3504
  doubleAstralWind = true;
3509
- messages.push(`🧠 【心灵狂热】生效:生命值低于50%,进入心灵狂热状态,所受伤害降低20%,星界之风触发概率翻倍`);
3505
+ messages.push(`🧠 【心灵狂热】生效:生命值≤50%,受到的伤害-20%,「星界之风」触发概率翻倍`);
3510
3506
  }
3511
3507
  return { nerfMultiplier, doubleAstralWind, messages };
3512
3508
  }, "handleMindFrenzy"),
3513
- /** 宇宙能量处理(伤害值转能量/生命) */
3514
- handleCosmicEnergy: /* @__PURE__ */ __name(function(targetBoss, activeBosses, damage) {
3515
- const messages = [];
3516
- let targetUpdates = null;
3509
+ handleCosmicEnergy: /* @__PURE__ */ __name(function(targetBoss, damage) {
3517
3510
  if (!targetBoss.skills.includes("宇宙能量")) {
3518
3511
  return null;
3519
3512
  }
3520
3513
  const maxEnergy = getMaxEnergyByName(targetBoss.name);
3521
3514
  const currentEnergy = targetBoss.energy || 0;
3522
3515
  const energyToAdd = damage;
3523
- const updates = {};
3516
+ if (energyToAdd <= 0) {
3517
+ return null;
3518
+ }
3519
+ let energyGained = 0;
3520
+ let overflowHeal = 0;
3524
3521
  if (currentEnergy + energyToAdd <= maxEnergy) {
3525
- updates.energyChange = energyToAdd;
3526
- messages.push(`🌌 【宇宙能量】生效:吸收伤害值,获得${energyToAdd}点能量`);
3522
+ energyGained = energyToAdd;
3527
3523
  } else {
3528
- const energyGained = maxEnergy - currentEnergy;
3524
+ energyGained = maxEnergy - currentEnergy;
3525
+ overflowHeal = currentEnergy + energyToAdd - maxEnergy;
3526
+ }
3527
+ if (energyGained <= 0 && overflowHeal <= 0) {
3528
+ return null;
3529
+ }
3530
+ const messages = [];
3531
+ const updates = {};
3532
+ let messageParts = [];
3533
+ if (energyGained > 0) {
3534
+ messageParts.push(`获得${energyGained}点能量`);
3529
3535
  updates.energyChange = energyGained;
3530
- const overflowHeal = currentEnergy + energyToAdd - maxEnergy;
3536
+ }
3537
+ if (overflowHeal > 0) {
3538
+ messageParts.push(`${overflowHeal}点溢出伤害转为生命回复`);
3531
3539
  updates.hpChange = overflowHeal;
3532
- messages.push(`🌌 【宇宙能量】生效:获得${energyGained}点能量,${overflowHeal}点溢出伤害转为生命回复`);
3533
3540
  }
3534
- targetUpdates = {
3535
- name: targetBoss.name,
3536
- updates
3537
- };
3541
+ if (messageParts.length > 0) {
3542
+ messages.push(`🌌 【宇宙能量】生效:${messageParts.join(",")}`);
3543
+ }
3538
3544
  return {
3539
3545
  messages,
3540
- targetUpdates
3546
+ targetUpdates: {
3547
+ name: targetBoss.name,
3548
+ updates
3549
+ }
3541
3550
  };
3542
3551
  }, "handleCosmicEnergy"),
3543
3552
  /** 复苏处理(免疫死亡并回复) */
@@ -3566,9 +3575,8 @@ var BattleEffectProcessor = {
3566
3575
  // 添加新技能
3567
3576
  }
3568
3577
  };
3569
- messages.push(`🔥 【复苏】生效:免疫致命伤害`);
3570
- messages.push(`🔥 回复${healAmount}点生命值和${energyGain}点能量`);
3571
- messages.push(`🔥 获得【灵能构造炉】技能,复苏效果移除`);
3578
+ messages.push(`🔥 【复苏】生效:承受致命伤害时免疫死亡,回复${healAmount}点生命值和${energyGain}点能量,获得「灵能构造炉」技能`);
3579
+ messages.push(`🔥 【复苏】技能移除`);
3572
3580
  return {
3573
3581
  messages,
3574
3582
  targetUpdates
@@ -3584,11 +3592,7 @@ var BattleEffectProcessor = {
3584
3592
  }
3585
3593
  const currentStacks = targetBoss.skillStacks || 0;
3586
3594
  if (currentStacks >= maxStacks) {
3587
- messages.push(`✨ 【光影之刃】已达到最大层数(${maxStacks})`);
3588
- return {
3589
- messages,
3590
- targetUpdates: null
3591
- };
3595
+ return null;
3592
3596
  }
3593
3597
  targetUpdates = {
3594
3598
  name: targetBoss.name,
@@ -3597,21 +3601,21 @@ var BattleEffectProcessor = {
3597
3601
  }
3598
3602
  };
3599
3603
  const newStacks = currentStacks + 1;
3600
- messages.push(`✨ 【光影之刃】叠加:当前${newStacks}/${maxStacks}层`);
3604
+ messages.push(`✨ 【光影之刃】生效:获得1层「光影之刃」`);
3601
3605
  return {
3602
3606
  messages,
3603
3607
  targetUpdates
3604
3608
  };
3605
3609
  }, "handleBladeOfLight"),
3606
3610
  /** 远古预兆处理(概率免疫能量伤害)- 增加boost参数 */
3607
- handleAncientOmen: /* @__PURE__ */ __name(function(targetBoss, weaponData, boost = 0) {
3611
+ handleAncientOmen: /* @__PURE__ */ __name(function(targetBoss, weaponData, boost) {
3608
3612
  const messages = [];
3609
3613
  let isImmune = false;
3610
3614
  let targetUpdates = null;
3611
3615
  if (!targetBoss.skills.includes("远古预兆")) {
3612
3616
  return null;
3613
3617
  }
3614
- if (weaponData.type !== "能量武器") {
3618
+ if (weaponData.type === "热能武器") {
3615
3619
  return null;
3616
3620
  }
3617
3621
  const baseProbability = 0.01;
@@ -3628,8 +3632,7 @@ var BattleEffectProcessor = {
3628
3632
  // 回复100点能量
3629
3633
  }
3630
3634
  };
3631
- messages.push(`🔮 【远古预兆】生效:${(actualProbability * 100).toFixed(2)}%概率免疫能量武器伤害`);
3632
- messages.push(`🔮 回复${energyGained}点能量`);
3635
+ messages.push(`🔮 【远古预兆】触发:${(actualProbability * 100).toFixed(2)}%概率免疫非热能武器伤害,并回复${energyGained}点能量`);
3633
3636
  return {
3634
3637
  isImmune,
3635
3638
  messages,
@@ -3650,8 +3653,7 @@ var BattleEffectProcessor = {
3650
3653
  ancientOmenBoost = totalBoost;
3651
3654
  psychicForgeBoost = totalBoost;
3652
3655
  if (totalBoost > 0) {
3653
- messages.push(`⚡ 【闪电冲锋】生效:每层光影之刃提升0.5%概率`);
3654
- messages.push(` → 当前${lightBladeStacks}层,远古预兆+${(ancientOmenBoost * 100).toFixed(1)}%,灵能构造炉+${(psychicForgeBoost * 100).toFixed(1)}%`);
3656
+ messages.push(`⚡ 【闪电冲锋】生效:「光影之刃」当前${lightBladeStacks}层,「远古预兆」触发概率+${(ancientOmenBoost * 100).toFixed(1)}%,「灵能构造炉」触发概率+${(psychicForgeBoost * 100).toFixed(1)}%`);
3655
3657
  }
3656
3658
  return { ancientOmenBoost, psychicForgeBoost, messages };
3657
3659
  }, "handleLightningCharge"),
@@ -3668,13 +3670,13 @@ var BattleEffectProcessor = {
3668
3670
  const energyPercent = currentEnergy / maxEnergy;
3669
3671
  if (energyPercent >= 0.6) {
3670
3672
  nerfMultiplier = targetBoss.skillStacks * 0.1;
3671
- messages.push(`🚀 【超视距穿梭】生效:高能量状态(≥60%),受到的伤害-${(nerfMultiplier * 100).toFixed(0)}%`);
3673
+ messages.push(`🚀 【超视距穿梭】生效:能量值≥60%,受到的伤害-${(nerfMultiplier * 100).toFixed(0)}%`);
3672
3674
  } else if (energyPercent >= 0.3) {
3673
3675
  nerfMultiplier = targetBoss.skillStacks * 0.05;
3674
- messages.push(`🚀 【超视距穿梭】生效:中能量状态(≥30%),受到的伤害-${(nerfMultiplier * 100).toFixed(0)}%`);
3676
+ messages.push(`🚀 【超视距穿梭】生效:能量值≥30%,受到的伤害-${(nerfMultiplier * 100).toFixed(0)}%`);
3675
3677
  } else if (energyPercent <= 0.1) {
3676
3678
  buffMultiplier = targetBoss.skillStacks * 0.05;
3677
- messages.push(`🚀 【超视距穿梭】生效:低能量状态(≤10%),受到的伤害+${(buffMultiplier * 100).toFixed(0)}%`);
3679
+ messages.push(`🚀 【超视距穿梭】生效:能量值≤10%,受到的伤害+${(buffMultiplier * 100).toFixed(0)}%`);
3678
3680
  }
3679
3681
  return { nerfMultiplier, buffMultiplier, messages };
3680
3682
  }, "handleHyperRangeShift"),
@@ -3710,7 +3712,7 @@ var BattleEffectProcessor = {
3710
3712
  skillsAdded: [newSkill]
3711
3713
  }
3712
3714
  };
3713
- messages.push(`⚙️ 【灵能构造炉】生效:${(actualProbability * 100).toFixed(2)}%概率获得新技能「${newSkill}」`);
3715
+ messages.push(`⚙️ 【灵能构造炉】触发:${(actualProbability * 100).toFixed(2)}%概率获得新技能「${newSkill}」`);
3714
3716
  return {
3715
3717
  messages,
3716
3718
  newSkill,
@@ -3724,7 +3726,7 @@ var BattleEffectProcessor = {
3724
3726
  if (!targetBoss.skills.includes("天启超载护盾")) {
3725
3727
  return null;
3726
3728
  }
3727
- if (Math.random() >= 0.05) {
3729
+ if (Math.random() >= 0.1) {
3728
3730
  return null;
3729
3731
  }
3730
3732
  const baseHealAmount = (targetBoss.skillStacks || 0) * 10;
@@ -3737,9 +3739,8 @@ var BattleEffectProcessor = {
3737
3739
  updates: { hpChange: baseHealAmount }
3738
3740
  });
3739
3741
  }
3740
- messages.push(`🛡️ 【天启超载护盾】为「${bossName}」回复${baseHealAmount}点生命值`);
3742
+ messages.push(`🛡️ 【天启超载护盾】触发:为「${bossName}」回复${baseHealAmount}点生命值`);
3741
3743
  });
3742
- messages.unshift(`🛡️ 【天启超载护盾】生效:5%概率触发,为所有存活异形回复生命值`);
3743
3744
  return {
3744
3745
  messages,
3745
3746
  otherUpdates
@@ -3755,11 +3756,7 @@ var BattleEffectProcessor = {
3755
3756
  }
3756
3757
  const currentStacks = targetBoss.skillStacks || 0;
3757
3758
  if (currentStacks >= maxStacks) {
3758
- messages.push(`🌀 【塌缩脉冲】生效:层数已达上限(${maxStacks})`);
3759
- return {
3760
- messages,
3761
- targetUpdates: null
3762
- };
3759
+ return null;
3763
3760
  }
3764
3761
  targetUpdates = {
3765
3762
  name: targetBoss.name,
@@ -3768,7 +3765,7 @@ var BattleEffectProcessor = {
3768
3765
  }
3769
3766
  };
3770
3767
  const newStacks = currentStacks + 1;
3771
- messages.push(`🌀 【塌缩脉冲】生效:额外叠加1层光影之刃,当前${newStacks}/${maxStacks}层`);
3768
+ messages.push(`🌀 【塌缩脉冲】生效:额外获得1层「光影之刃」`);
3772
3769
  return {
3773
3770
  messages,
3774
3771
  targetUpdates
@@ -3782,8 +3779,8 @@ var BattleEffectProcessor = {
3782
3779
  return null;
3783
3780
  }
3784
3781
  nerfMultiplier = 1;
3785
- messages.push(`💣 【地毯式轰炸】生效:获得100%减伤`);
3786
- return { nerfMultiplier, messages };
3782
+ messages.push(`💣 【地毯式轰炸】生效:受到的伤害-100%`);
3783
+ return { nerfMultiplier, messages, tempMark: true };
3787
3784
  }, "handleCarpetBombing"),
3788
3785
  /** 轰炸引导处理(层数相关能量回复) */
3789
3786
  handleBombardmentGuide: /* @__PURE__ */ __name(function(targetBoss) {
@@ -3792,7 +3789,7 @@ var BattleEffectProcessor = {
3792
3789
  if (!targetBoss.skills.includes("轰炸引导")) {
3793
3790
  return null;
3794
3791
  }
3795
- if (Math.random() >= 0.05) {
3792
+ if (Math.random() >= 0.1) {
3796
3793
  return null;
3797
3794
  }
3798
3795
  const currentStacks = targetBoss.skillStacks || 0;
@@ -3803,7 +3800,7 @@ var BattleEffectProcessor = {
3803
3800
  energyChange: energyGained
3804
3801
  }
3805
3802
  };
3806
- messages.push(`🎯 【轰炸引导】生效:5%概率触发,获得${energyGained}点能量(基于${currentStacks}层光影之刃)`);
3803
+ messages.push(`🎯 【轰炸引导】触发:当前${currentStacks}层「光影之刃」,获得${energyGained}点能量`);
3807
3804
  return {
3808
3805
  messages,
3809
3806
  targetUpdates
@@ -3817,9 +3814,9 @@ var BattleEffectProcessor = {
3817
3814
  const effectiveLayers = Math.min(currentLayers, 20);
3818
3815
  const buffMultiplier = effectiveLayers * 0.025;
3819
3816
  if (effectiveLayers > 0) {
3820
- messages.push(`☢️ 【辐射增伤】:当前${currentLayers}层,所受伤害提升${(effectiveLayers * 2.5).toFixed(1)}%`);
3817
+ messages.push(`☢️ 【辐射增伤】:当前${currentLayers}层,受到的伤害+${(effectiveLayers * 2.5).toFixed(1)}%`);
3821
3818
  if (currentLayers > 20) {
3822
- messages.push(`☢️ 注意:超过20层的辐射无效,不会提供额外增伤`);
3819
+ messages.push(`☢️ 注意:超过20层的辐射不会提供额外增伤`);
3823
3820
  }
3824
3821
  }
3825
3822
  let targetUpdates = null;
@@ -3834,7 +3831,7 @@ var BattleEffectProcessor = {
3834
3831
  }
3835
3832
  };
3836
3833
  const newLayers = currentLayers + 1;
3837
- messages.push(`☢️ 满足辐射条件,获得1层"辐射"效果,累计${newLayers}层`);
3834
+ messages.push(`☢️ 【伽马枪】武器效果:获得1层「辐射」`);
3838
3835
  layerAdded = true;
3839
3836
  }
3840
3837
  return {
@@ -3853,9 +3850,9 @@ var BattleEffectProcessor = {
3853
3850
  const effectiveLayers = Math.min(currentLayers, 20);
3854
3851
  const buffMultiplier = effectiveLayers * 0.025;
3855
3852
  if (effectiveLayers > 0) {
3856
- messages.push(`❄️ 【寒冷增伤】:当前${currentLayers}层,所受伤害提升${(effectiveLayers * 2.5).toFixed(1)}%`);
3853
+ messages.push(`❄️ 【寒冷增伤】:当前${currentLayers}层,受到的伤害+${(effectiveLayers * 2.5).toFixed(1)}%`);
3857
3854
  if (currentLayers > 20) {
3858
- messages.push(`❄️ 注意:超过20层的寒冷无效,不会提供额外增伤`);
3855
+ messages.push(`❄️ 注意:超过20层的寒冷不会提供额外增伤`);
3859
3856
  }
3860
3857
  }
3861
3858
  let targetUpdates = null;
@@ -3868,7 +3865,7 @@ var BattleEffectProcessor = {
3868
3865
  }
3869
3866
  };
3870
3867
  const newLayers = currentLayers + 1;
3871
- messages.push(`❄️ 满足寒冷条件,获得1层"寒冷"效果,累计${newLayers}层`);
3868
+ messages.push(`❄️【零度之下】武器效果: 获得1层「寒冷」`);
3872
3869
  layerAdded = true;
3873
3870
  }
3874
3871
  return {
@@ -3903,7 +3900,7 @@ var BattleEffectProcessor = {
3903
3900
  }
3904
3901
  const weaponDisplayName = weaponName === "弧焊枪" ? "弧焊枪" : "DG-3电弧步枪";
3905
3902
  if (success) {
3906
- messages.push(`⚡ 【${weaponDisplayName}】武器效果:消耗目标${drainValue}点能量`);
3903
+ messages.push(`⚡ 【${weaponDisplayName}】武器效果:消耗${drainValue}点能量`);
3907
3904
  }
3908
3905
  return {
3909
3906
  messages,
@@ -3934,7 +3931,7 @@ var BattleEffectProcessor = {
3934
3931
  };
3935
3932
  }
3936
3933
  if (reductionSuccess) {
3937
- messages.push(`⚡ 【${weaponName}】武器效果:使${targetBoss.name}的技能层数减少${reductionAmount}层`);
3934
+ messages.push(`⚡ 【${weaponName}】武器效果:技能层数减少${reductionAmount}层`);
3938
3935
  }
3939
3936
  return {
3940
3937
  messages,
@@ -3957,178 +3954,192 @@ function applyPassiveEffects(targetBoss, activeBosses, weaponName, damage, ignor
3957
3954
  let ancientOmenBoost = 0;
3958
3955
  let psychicForgeBoost = 0;
3959
3956
  let doubleAstralWind = false;
3957
+ let isolatedImmunityMark = false;
3958
+ const processEffect = /* @__PURE__ */ __name((effect, ...args) => {
3959
+ const result = effect(...args);
3960
+ if (!result) return null;
3961
+ messages.push(...result.messages || []);
3962
+ if (result.targetUpdates) {
3963
+ updateStatsByName(result.targetUpdates.name, result.targetUpdates.updates);
3964
+ }
3965
+ if (result.otherUpdates) {
3966
+ for (const update of result.otherUpdates) {
3967
+ updateStatsByName(update.name, update.updates);
3968
+ }
3969
+ }
3970
+ return result;
3971
+ }, "processEffect");
3960
3972
  const lightningResult = BattleEffectProcessor.handleLightningCharge(targetBoss);
3961
3973
  if (lightningResult) {
3974
+ ancientOmenBoost = lightningResult.ancientOmenBoost || 0;
3975
+ psychicForgeBoost = lightningResult.psychicForgeBoost || 0;
3962
3976
  messages.push(...lightningResult.messages);
3963
- ancientOmenBoost += lightningResult.ancientOmenBoost || 0;
3964
- psychicForgeBoost += lightningResult.psychicForgeBoost || 0;
3965
3977
  }
3966
3978
  const coldImmuneEffects = [
3967
- BattleEffectProcessor.handleFrostEvolution,
3968
- BattleEffectProcessor.handleColdAdaptation,
3969
- BattleEffectProcessor.handleSolarFlare
3979
+ {
3980
+ effect: BattleEffectProcessor.handleFrostEvolution,
3981
+ args: [targetBoss, weaponName, damage]
3982
+ },
3983
+ {
3984
+ effect: BattleEffectProcessor.handleColdAdaptation,
3985
+ args: [targetBoss, weaponName]
3986
+ }
3970
3987
  ];
3971
3988
  const fireImmuneEffects = [
3972
- BattleEffectProcessor.handleFlameAlien
3989
+ {
3990
+ effect: BattleEffectProcessor.handleFlameAlien,
3991
+ args: [targetBoss, weaponName, damage]
3992
+ }
3973
3993
  ];
3974
- if (weaponName === "零度之下") {
3975
- for (const effect of coldImmuneEffects) {
3976
- const result = effect(targetBoss, weaponName, damage, activeBosses);
3977
- if (result && result.isImmune) {
3978
- immune = true;
3979
- messages.push(...result.messages);
3980
- if (result.targetUpdates) {
3981
- updateStatsByName(result.targetUpdates.name, result.targetUpdates.updates);
3982
- }
3983
- }
3994
+ const chanceImmuneEffects = [
3995
+ {
3996
+ effect: BattleEffectProcessor.handleDeadlyHit,
3997
+ args: [targetBoss]
3998
+ },
3999
+ {
4000
+ effect: BattleEffectProcessor.handleElectricField,
4001
+ args: [targetBoss, weaponData]
4002
+ },
4003
+ {
4004
+ effect: BattleEffectProcessor.handleAncientOmen,
4005
+ args: [targetBoss, weaponData, ancientOmenBoost]
3984
4006
  }
4007
+ ];
4008
+ const allImmuneEffects = [...coldImmuneEffects, ...fireImmuneEffects, ...chanceImmuneEffects];
4009
+ for (const immuneEffect of allImmuneEffects) {
4010
+ const result = processEffect(immuneEffect.effect, ...immuneEffect.args);
4011
+ if (result?.isImmune) immune = true;
3985
4012
  }
3986
- if (weaponName === "焚烧枪") {
3987
- for (const effect of fireImmuneEffects) {
3988
- const result = effect(targetBoss, weaponName, damage);
3989
- if (result && result.isImmune) {
3990
- immune = true;
3991
- messages.push(...result.messages);
3992
- if (result.targetUpdates) {
3993
- updateStatsByName(result.targetUpdates.name, result.targetUpdates.updates);
3994
- }
3995
- }
4013
+ const solarFlareResult = BattleEffectProcessor.handleSolarFlare(targetBoss, weaponName, activeBosses);
4014
+ if (solarFlareResult) {
4015
+ isolatedImmunityMark = solarFlareResult.tempMark || false;
4016
+ if (solarFlareResult.isImmune) immune = true;
4017
+ messages.push(...solarFlareResult.messages);
4018
+ if (solarFlareResult.targetUpdates) {
4019
+ updateStatsByName(solarFlareResult.targetUpdates.name, solarFlareResult.targetUpdates.updates);
3996
4020
  }
3997
4021
  }
3998
- const chanceImmuneEffects = [
3999
- BattleEffectProcessor.handleDeadlyHit,
4000
- BattleEffectProcessor.handleElectricField,
4001
- BattleEffectProcessor.handleAncientOmen
4002
- ];
4003
- for (const effect of chanceImmuneEffects) {
4004
- if (effect === BattleEffectProcessor.handleAncientOmen) {
4005
- const result = effect(targetBoss, weaponData, ancientOmenBoost);
4006
- if (result && result.isImmune) {
4007
- immune = true;
4008
- messages.push(...result.messages);
4009
- if (result.targetUpdates) {
4010
- updateStatsByName(result.targetUpdates.name, result.targetUpdates.updates);
4011
- }
4012
- }
4013
- } else {
4014
- const result = effect(targetBoss, weaponData);
4015
- if (result && result.isImmune) {
4016
- immune = true;
4017
- messages.push(...result.messages);
4018
- }
4022
+ const carpetBombResult = processEffect(BattleEffectProcessor.handleCarpetBombing, targetBoss);
4023
+ if (carpetBombResult) {
4024
+ isolatedImmunityMark = carpetBombResult.tempMark || false;
4025
+ if (carpetBombResult.nerfMultiplier) {
4026
+ totalNerfMultiplier += carpetBombResult.nerfMultiplier;
4019
4027
  }
4028
+ messages.push(...carpetBombResult.messages);
4020
4029
  }
4021
4030
  const damageAdjustEffects = [
4022
- BattleEffectProcessor.handleWeakForm,
4023
- BattleEffectProcessor.handleAlienShell,
4024
- BattleEffectProcessor.handleIsolated,
4025
- BattleEffectProcessor.handleFrostHell,
4026
- BattleEffectProcessor.handleStressShellI,
4027
- BattleEffectProcessor.handleStressShellII,
4028
- BattleEffectProcessor.handleInfectedSpaceStation,
4029
- BattleEffectProcessor.handleVirusCloud,
4030
- BattleEffectProcessor.handleStructuralArmor,
4031
- BattleEffectProcessor.handleVampireSaliva,
4032
- BattleEffectProcessor.handleBloodlust,
4033
- BattleEffectProcessor.handleVomit,
4034
- BattleEffectProcessor.handleEnergySiphon,
4035
- BattleEffectProcessor.handleEnergyAbsorption,
4036
- BattleEffectProcessor.handleEnergyBlackhole,
4037
- BattleEffectProcessor.handleColossalRampage,
4038
- BattleEffectProcessor.handleInfernalBomb,
4039
- BattleEffectProcessor.handleHunterAlien,
4040
- BattleEffectProcessor.handleRampage,
4041
- BattleEffectProcessor.handleDisguise,
4042
- BattleEffectProcessor.handleHyperRangeShift,
4043
- BattleEffectProcessor.handleCarpetBombing
4031
+ // 单参数效果
4032
+ { effect: BattleEffectProcessor.handleWeakForm, args: [targetBoss] },
4033
+ { effect: BattleEffectProcessor.handleAlienShell, args: [targetBoss] },
4034
+ { effect: BattleEffectProcessor.handleFrostHell, args: [targetBoss] },
4035
+ { effect: BattleEffectProcessor.handleStressShellI, args: [targetBoss] },
4036
+ { effect: BattleEffectProcessor.handleStressShellII, args: [targetBoss] },
4037
+ { effect: BattleEffectProcessor.handleVirusCloud, args: [targetBoss] },
4038
+ { effect: BattleEffectProcessor.handleEnergyBlackhole, args: [targetBoss] },
4039
+ { effect: BattleEffectProcessor.handleColossalRampage, args: [targetBoss] },
4040
+ { effect: BattleEffectProcessor.handleVomit, args: [targetBoss] },
4041
+ // 双参数效果
4042
+ { effect: BattleEffectProcessor.handleStructuralArmor, args: [targetBoss, weaponData] },
4043
+ { effect: BattleEffectProcessor.handleDisguise, args: [targetBoss, weaponName] },
4044
+ // 多参数效果
4045
+ { effect: BattleEffectProcessor.handleIsolated, args: [targetBoss, activeBosses, isolatedImmunityMark] },
4046
+ { effect: BattleEffectProcessor.handleInfectedSpaceStation, args: [targetBoss, activeBosses] },
4047
+ { effect: BattleEffectProcessor.handleInfernalBomb, args: [targetBoss, activeBosses] },
4048
+ { effect: BattleEffectProcessor.handleHunterAlien, args: [targetBoss, activeBosses, weaponName] },
4049
+ { effect: BattleEffectProcessor.handleRampage, args: [targetBoss, activeBosses] },
4050
+ { effect: BattleEffectProcessor.handleHyperRangeShift, args: [targetBoss] }
4044
4051
  ];
4045
- for (const effect of damageAdjustEffects) {
4046
- let result;
4047
- if (effect === BattleEffectProcessor.handleIsolated || effect === BattleEffectProcessor.handleInfectedSpaceStation || effect === BattleEffectProcessor.handleInfernalBomb || effect === BattleEffectProcessor.handleHunterAlien) {
4048
- result = effect(targetBoss, activeBosses, weaponName);
4049
- } else if (effect === BattleEffectProcessor.handleStructuralArmor) {
4050
- result = effect(targetBoss, weaponData);
4051
- } else if (effect === BattleEffectProcessor.handleBloodlust || effect === BattleEffectProcessor.handleVampireSaliva || effect === BattleEffectProcessor.handleHyperRangeShift) {
4052
- result = effect(targetBoss, activeBosses);
4053
- } else {
4054
- result = effect(targetBoss, activeBosses, weaponName);
4055
- }
4052
+ for (const effectItem of damageAdjustEffects) {
4053
+ const result = processEffect(effectItem.effect, ...effectItem.args);
4056
4054
  if (result) {
4057
- messages.push(...result.messages);
4058
- if (result.buffMultiplier !== void 0 && typeof result.buffMultiplier === "number") {
4059
- totalBuffMultiplier += result.buffMultiplier;
4060
- }
4061
- if (result.nerfMultiplier !== void 0 && typeof result.nerfMultiplier === "number") {
4062
- totalNerfMultiplier += result.nerfMultiplier;
4063
- }
4055
+ if (result.buffMultiplier !== void 0) totalBuffMultiplier += result.buffMultiplier;
4056
+ if (result.nerfMultiplier !== void 0) totalNerfMultiplier += result.nerfMultiplier;
4057
+ bileDetonationTrigger ||= result.bileDetonationTrigger === true;
4064
4058
  }
4065
4059
  }
4066
- const stateChangeEffects = [
4067
- BattleEffectProcessor.handleVampireSaliva,
4068
- BattleEffectProcessor.handleBladeOfLight,
4069
- BattleEffectProcessor.handleSuperconductor
4060
+ const mindFrenzyResult = BattleEffectProcessor.handleMindFrenzy(targetBoss);
4061
+ if (mindFrenzyResult) {
4062
+ messages.push(...mindFrenzyResult.messages);
4063
+ if (mindFrenzyResult.nerfMultiplier) {
4064
+ totalNerfMultiplier += mindFrenzyResult.nerfMultiplier;
4065
+ }
4066
+ doubleAstralWind = mindFrenzyResult.doubleAstralWind || false;
4067
+ }
4068
+ const layerDependentEffects = [
4069
+ { effect: BattleEffectProcessor.handleVampireSaliva, args: [targetBoss] },
4070
+ { effect: BattleEffectProcessor.handleBloodlust, args: [targetBoss] },
4071
+ { effect: BattleEffectProcessor.handleBladeOfLight, args: [targetBoss] },
4072
+ { effect: BattleEffectProcessor.handleCollapsingPulse, args: [targetBoss] }
4070
4073
  ];
4071
- for (const effect of stateChangeEffects) {
4072
- const result = effect(targetBoss);
4074
+ for (const effectItem of layerDependentEffects) {
4075
+ const result = processEffect(effectItem.effect, ...effectItem.args);
4073
4076
  if (result) {
4074
- messages.push(...result.messages);
4075
- if (result.targetUpdates) {
4076
- updateStatsByName(result.targetUpdates.name, result.targetUpdates.updates);
4077
- }
4077
+ if (result.buffMultiplier !== void 0) totalBuffMultiplier += result.buffMultiplier;
4078
+ if (result.nerfMultiplier !== void 0) totalNerfMultiplier += result.nerfMultiplier;
4078
4079
  }
4079
4080
  }
4081
+ const stateChangeEffects = [
4082
+ { effect: BattleEffectProcessor.handleSuperconductor, args: [targetBoss] }
4083
+ ];
4084
+ for (const effectItem of stateChangeEffects) {
4085
+ processEffect(effectItem.effect, ...effectItem.args);
4086
+ }
4087
+ const healingEffects = [
4088
+ { effect: BattleEffectProcessor.handleFrostRegeneration, args: [targetBoss, activeBosses] },
4089
+ { effect: BattleEffectProcessor.handleFrostAura, args: [targetBoss, activeBosses] },
4090
+ { effect: BattleEffectProcessor.handleSentryGun, args: [targetBoss, activeBosses] },
4091
+ { effect: BattleEffectProcessor.handleSurvivalInstinctI, args: [targetBoss] },
4092
+ { effect: BattleEffectProcessor.handleSurvivalInstinctII, args: [targetBoss] },
4093
+ { effect: BattleEffectProcessor.handleMoldGrowth, args: [targetBoss, activeBosses] },
4094
+ { effect: BattleEffectProcessor.handleElectricShockwave, args: [targetBoss] },
4095
+ { effect: BattleEffectProcessor.handlePulse, args: [targetBoss, activeBosses] },
4096
+ { effect: BattleEffectProcessor.handleFeeding, args: [targetBoss] },
4097
+ { effect: BattleEffectProcessor.handleBurningBurrow, args: [targetBoss] },
4098
+ { effect: BattleEffectProcessor.handleRevival, args: [targetBoss] },
4099
+ { effect: BattleEffectProcessor.handleCosmicEnergy, args: [targetBoss, damage] },
4100
+ { effect: BattleEffectProcessor.handleBombardmentGuide, args: [targetBoss] },
4101
+ { effect: BattleEffectProcessor.handleOverdriveShield, args: [targetBoss, activeBosses] }
4102
+ ];
4103
+ for (const effectItem of healingEffects) {
4104
+ processEffect(effectItem.effect, ...effectItem.args);
4105
+ }
4080
4106
  const burningSlimeResult = BattleEffectProcessor.handleBurningSlime(targetBoss, weaponName);
4081
4107
  if (burningSlimeResult) {
4082
4108
  messages.push(...burningSlimeResult.messages);
4083
4109
  if (burningSlimeResult.targetUpdates) {
4084
4110
  updateStatsByName(burningSlimeResult.targetUpdates.name, burningSlimeResult.targetUpdates.updates);
4085
4111
  }
4086
- bileDetonationTrigger = burningSlimeResult.isHighStackHeal;
4112
+ bileDetonationTrigger = burningSlimeResult.isHighStackHeal || false;
4087
4113
  }
4088
- const healingEffects = [
4089
- BattleEffectProcessor.handleFrostRegeneration,
4090
- BattleEffectProcessor.handleFrostAura,
4091
- BattleEffectProcessor.handleSurvivalInstinctI,
4092
- BattleEffectProcessor.handleSurvivalInstinctII,
4093
- BattleEffectProcessor.handleSentryGun,
4094
- BattleEffectProcessor.handleFeeding,
4095
- BattleEffectProcessor.handleMoldGrowth,
4096
- BattleEffectProcessor.handleElectricShockwave,
4097
- BattleEffectProcessor.handlePulse,
4098
- BattleEffectProcessor.handleCorrosiveBile,
4099
- BattleEffectProcessor.handleFlameBreath,
4100
- BattleEffectProcessor.handleBurningBurrow,
4101
- BattleEffectProcessor.handleRevival,
4102
- BattleEffectProcessor.handleCosmicEnergy,
4103
- BattleEffectProcessor.handleBombardmentGuide,
4104
- BattleEffectProcessor.handleOverdriveShield
4114
+ const bileEffects = [
4115
+ { effect: BattleEffectProcessor.handleCorrosiveBile, args: [targetBoss, activeBosses] },
4116
+ { effect: BattleEffectProcessor.handleFlameBreath, args: [targetBoss, activeBosses] }
4105
4117
  ];
4106
- for (const effect of healingEffects) {
4107
- let result;
4108
- if (effect === BattleEffectProcessor.handleFrostRegeneration || effect === BattleEffectProcessor.handleFrostAura || effect === BattleEffectProcessor.handlePulse || effect === BattleEffectProcessor.handleSentryGun || effect === BattleEffectProcessor.handleCorrosiveBile || effect === BattleEffectProcessor.handleFlameBreath || effect === BattleEffectProcessor.handleOverdriveShield) {
4109
- result = effect(targetBoss, activeBosses, damage);
4110
- } else if (effect === BattleEffectProcessor.handleCosmicEnergy) {
4111
- result = effect(targetBoss, activeBosses, damage);
4112
- } else {
4113
- result = effect(targetBoss, activeBosses, damage);
4114
- }
4115
- if (result) {
4116
- messages.push(...result.messages);
4117
- if (result.targetUpdates) {
4118
- updateStatsByName(result.targetUpdates.name, result.targetUpdates.updates);
4119
- }
4120
- if (result.otherUpdates) {
4121
- for (const update of result.otherUpdates) {
4122
- updateStatsByName(update.name, update.updates);
4123
- }
4118
+ for (const effectItem of bileEffects) {
4119
+ processEffect(effectItem.effect, ...effectItem.args);
4120
+ }
4121
+ const astralWindResult = BattleEffectProcessor.handleAstralWind(
4122
+ targetBoss,
4123
+ activeBosses,
4124
+ doubleAstralWind
4125
+ );
4126
+ if (astralWindResult) {
4127
+ messages.push(...astralWindResult.messages);
4128
+ if (astralWindResult.otherUpdates) {
4129
+ for (const update of astralWindResult.otherUpdates) {
4130
+ updateStatsByName(update.name, update.updates);
4124
4131
  }
4125
4132
  }
4126
4133
  }
4127
- const mindFrenzyResult = BattleEffectProcessor.handleMindFrenzy(targetBoss);
4128
- if (mindFrenzyResult) {
4129
- messages.push(...mindFrenzyResult.messages);
4130
- totalNerfMultiplier += mindFrenzyResult.nerfMultiplier || 0;
4131
- doubleAstralWind = mindFrenzyResult.doubleAstralWind || false;
4134
+ const psychicForgeResult = BattleEffectProcessor.handlePsychicForge(
4135
+ targetBoss,
4136
+ psychicForgeBoost
4137
+ );
4138
+ if (psychicForgeResult) {
4139
+ messages.push(...psychicForgeResult.messages);
4140
+ if (psychicForgeResult.targetUpdates) {
4141
+ updateStatsByName(psychicForgeResult.targetUpdates.name, psychicForgeResult.targetUpdates.updates);
4142
+ }
4132
4143
  }
4133
4144
  const radiationResult = BattleEffectProcessor.handleRadiationEffect(targetBoss, weaponName);
4134
4145
  if (radiationResult) {
@@ -4158,7 +4169,7 @@ function applyPassiveEffects(targetBoss, activeBosses, weaponName, damage, ignor
4158
4169
  if (energyDrainResult.targetUpdates) {
4159
4170
  updateStatsByName(energyDrainResult.targetUpdates.name, energyDrainResult.targetUpdates.updates);
4160
4171
  }
4161
- energyDrained = energyDrainResult.success;
4172
+ energyDrained = energyDrainResult.success || false;
4162
4173
  }
4163
4174
  const layerReduceResult = BattleEffectProcessor.handleWeaponLayerReduction(targetBoss, weaponName);
4164
4175
  if (layerReduceResult) {
@@ -4166,48 +4177,19 @@ function applyPassiveEffects(targetBoss, activeBosses, weaponName, damage, ignor
4166
4177
  if (layerReduceResult.targetUpdates) {
4167
4178
  updateStatsByName(layerReduceResult.targetUpdates.name, layerReduceResult.targetUpdates.updates);
4168
4179
  }
4169
- layerReduced = layerReduceResult.reductionSuccess;
4170
- }
4171
- const astralWindResult = BattleEffectProcessor.handleAstralWind(targetBoss, activeBosses, doubleAstralWind);
4172
- if (astralWindResult) {
4173
- messages.push(...astralWindResult.messages);
4174
- if (astralWindResult.otherUpdates) {
4175
- for (const update of astralWindResult.otherUpdates) {
4176
- updateStatsByName(update.name, update.updates);
4177
- }
4178
- }
4179
- }
4180
- const psychicForgeResult = BattleEffectProcessor.handlePsychicForge(targetBoss, psychicForgeBoost);
4181
- if (psychicForgeResult) {
4182
- messages.push(...psychicForgeResult.messages);
4183
- if (psychicForgeResult.targetUpdates) {
4184
- updateStatsByName(psychicForgeResult.targetUpdates.name, psychicForgeResult.targetUpdates.updates);
4185
- }
4180
+ layerReduced = layerReduceResult.reductionSuccess || false;
4186
4181
  }
4187
4182
  let finalDamage = damage;
4188
4183
  if (!immune) {
4189
4184
  let adjustedNerfMultiplier = totalNerfMultiplier * (1 - ignoreRate);
4190
- if (ignoreRate > 0 && totalNerfMultiplier > 0) {
4191
- messages.push(`🗡️ 无视减伤: 无视了${(ignoreRate * 100).toFixed(1)}%减伤效果`);
4192
- messages.push(` 减伤系数由${(totalNerfMultiplier * 100).toFixed(1)}%降低至${(adjustedNerfMultiplier * 100).toFixed(1)}%`);
4193
- }
4194
4185
  const damageMultiplier = 1 + totalBuffMultiplier - adjustedNerfMultiplier;
4195
4186
  finalDamage = Math.max(1, Math.round(damage * damageMultiplier));
4196
- if (damage !== finalDamage) {
4197
- const adjustmentPercent = ((damageMultiplier - 1) * 100).toFixed(1);
4198
- if (damageMultiplier > 1) {
4199
- messages.push(`⚔️ 伤害增益: 总计增加${adjustmentPercent}%伤害`);
4200
- } else if (damageMultiplier < 1) {
4201
- messages.push(`🛡️ 伤害减免: 总计减少${Math.abs(Number(adjustmentPercent))}%伤害`);
4202
- }
4203
- }
4204
4187
  if (finalDamage > 0) {
4205
4188
  updateStatsByName(targetBoss.name, {
4206
4189
  hpChange: -finalDamage
4207
4190
  });
4208
4191
  }
4209
- }
4210
- if (immune) {
4192
+ } else {
4211
4193
  finalDamage = 0;
4212
4194
  }
4213
4195
  return {
@@ -4399,7 +4381,6 @@ __name(handlePrimaryAttack, "handlePrimaryAttack");
4399
4381
  async function handleScatterAttack(ctx, session, handle, config, equippedWeapon, targetBoss, weaponName, activeBosses) {
4400
4382
  const secondaryTargets = activeBosses.filter((boss) => boss.name !== targetBoss.name);
4401
4383
  const scatterEffectMessages = [];
4402
- const ignoreMessage = [];
4403
4384
  const extraDamages = [];
4404
4385
  const actuallyDead = [];
4405
4386
  const taskUpdates = [];
@@ -4447,14 +4428,12 @@ async function handleScatterAttack(ctx, session, handle, config, equippedWeapon,
4447
4428
  }
4448
4429
  const isDead = currentHP <= 0;
4449
4430
  scatterEffectMessages.push(...EffectProcessor.messages.map((m) => ` 对 ${secondaryTarget.name} ${m}`));
4450
- ignoreMessage.push(...ignoreReduction.messages.map((m) => ` 对 ${secondaryTarget.name} ${m}`));
4451
4431
  if (isDead) {
4452
4432
  actuallyDead.push(secondaryTarget.name);
4453
4433
  }
4454
4434
  }
4455
4435
  return {
4456
4436
  scatterEffectMessages,
4457
- ignoreMessage,
4458
4437
  extraDamages,
4459
4438
  actuallyDead,
4460
4439
  taskUpdates
@@ -4555,7 +4534,7 @@ async function updateSignRecord(ctx, handle, reward) {
4555
4534
  }
4556
4535
  __name(updateSignRecord, "updateSignRecord");
4557
4536
  function buildResultMessage(session, weaponName, targetBoss, primaryResult, scatterResult, finalReward, careerMessage, techMessage, redcrystalMessage) {
4558
- const maxHP = getMaxHPByName2(targetBoss.name);
4537
+ const maxHP = getMaxHPByName(targetBoss.name);
4559
4538
  const messages = [
4560
4539
  `🔥 ${session.username} 使用武器 ${weaponName} 对 ${targetBoss.name} 发起攻击!`,
4561
4540
  ...primaryResult.effectMessage.length > 0 ? [
@@ -4574,10 +4553,6 @@ ${primaryResult.passiveMessages.map((m) => `▸ ${m}`).join("\n")}`
4574
4553
  ];
4575
4554
  if (scatterResult) {
4576
4555
  messages.push(
4577
- ...scatterResult.ignoreMessage.length > 0 ? [
4578
- `🗡️ 无视减伤效果:
4579
- ${scatterResult.ignoreMessage.map((m) => `▸ ${m}`).join("\n")}`
4580
- ] : [],
4581
4556
  `⚡ 散射效果:
4582
4557
  ${scatterResult.scatterEffectMessages.map((m) => `▸ ${m}`).join("\n")}`,
4583
4558
  `散射伤害:`,
@@ -4651,38 +4626,10 @@ async function updateTaskProgress(ctx, handle, taskUpdates) {
4651
4626
  }
4652
4627
  }
4653
4628
  __name(updateTaskProgress, "updateTaskProgress");
4654
- function getMaxHPByName2(bossName) {
4655
- for (const boss of bossPool) {
4656
- if (boss.main.name === bossName) {
4657
- return boss.main.maxHP;
4658
- }
4659
- for (const minion of boss.minions) {
4660
- if (minion.name === bossName) {
4661
- return minion.maxHP;
4662
- }
4663
- }
4664
- }
4665
- return void 0;
4666
- }
4667
- __name(getMaxHPByName2, "getMaxHPByName");
4668
- function getMaxEnergyByName2(bossName) {
4669
- for (const boss of bossPool) {
4670
- if (boss.main.name === bossName) {
4671
- return boss.main.maxEnergy;
4672
- }
4673
- for (const minion of boss.minions) {
4674
- if (minion.name === bossName) {
4675
- return minion.maxEnergy;
4676
- }
4677
- }
4678
- }
4679
- return void 0;
4680
- }
4681
- __name(getMaxEnergyByName2, "getMaxEnergyByName");
4682
4629
  async function updateDatabaseWithStats(ctx, stats) {
4683
4630
  const bossData = await ctx.database.get("ggcevo_boss", { name: stats.name });
4684
- const maxHP = getMaxHPByName2(stats.name);
4685
- const maxEnergy = getMaxEnergyByName2(stats.name);
4631
+ const maxHP = getMaxHPByName(stats.name);
4632
+ const maxEnergy = getMaxEnergyByName(stats.name);
4686
4633
  if (!bossData || bossData.length === 0) {
4687
4634
  return;
4688
4635
  }
@@ -4742,13 +4689,13 @@ async function handleIgnoreReductionEffects(ctx, handle, weaponName, targetBoss)
4742
4689
  const handleWeaponEffect = /* @__PURE__ */ __name(() => {
4743
4690
  if (weaponName === "光剑") {
4744
4691
  ignoreEffects.push(1);
4745
- messages.push(`⚔️ 【光剑】武器效果:无视目标100%减伤效果`);
4692
+ messages.push(`⚔️ 【光剑】武器效果:无视100%减伤效果`);
4746
4693
  } else if (weaponName === "M4AE脉冲步枪") {
4747
4694
  ignoreEffects.push(0.8);
4748
- messages.push(`🔫 【M4AE脉冲步枪】武器效果:无视目标80%减伤效果`);
4695
+ messages.push(`🔫 【M4AE脉冲步枪】武器效果:无视80%减伤效果`);
4749
4696
  } else if (weaponName === "粒子相位枪" && targetBoss?.tags.includes("护盾")) {
4750
4697
  ignoreEffects.push(0.5);
4751
- messages.push(`⚡ 【粒子相位枪】武器效果:无视护盾目标50%减伤效果`);
4698
+ messages.push(`⚡ 【粒子相位枪】武器效果:无视50%减伤效果`);
4752
4699
  }
4753
4700
  }, "handleWeaponEffect");
4754
4701
  const handlePiercingMod = /* @__PURE__ */ __name(async () => {
@@ -4761,7 +4708,7 @@ async function handleIgnoreReductionEffects(ctx, handle, weaponName, targetBoss)
4761
4708
  });
4762
4709
  if (equippedWeapon?.installedMods?.includes("破甲模块")) {
4763
4710
  ignoreEffects.push(0.2);
4764
- messages.push(`⚡ 【破甲模块】生效:无视目标20%减伤效果`);
4711
+ messages.push(`⚡ 【破甲模块】生效:无视20%减伤效果`);
4765
4712
  }
4766
4713
  }, "handlePiercingMod");
4767
4714
  handleWeaponEffect();
@@ -4775,11 +4722,11 @@ async function handleIgnoreReductionEffects(ctx, handle, weaponName, targetBoss)
4775
4722
  });
4776
4723
  if (radarMask?.quantity > 0) {
4777
4724
  ignoreEffects.push(0.1);
4778
- messages.push(`🛰️ 【雷达面罩】生效:无视目标10%减伤效果`);
4725
+ messages.push(`🛰️ 【雷达面罩】生效:无视10%减伤效果`);
4779
4726
  }
4780
4727
  if (careerData.career === "猩红杀手" && weaponName === "侦察步枪") {
4781
4728
  ignoreEffects.push(0.2);
4782
- messages.push(`🎯 【猩红杀手】职业效果:无视目标20%减伤效果`);
4729
+ messages.push(`🎯 【猩红杀手】职业效果:无视20%减伤效果`);
4783
4730
  }
4784
4731
  }, "handleCareerEffects");
4785
4732
  await handleCareerEffects();
@@ -7133,10 +7080,14 @@ ${validTypes.join("、")}`;
7133
7080
  let discountRate = 0;
7134
7081
  if (careerData?.group === "人类联盟") {
7135
7082
  if (modInfo.isExclusive) {
7136
- if (techLevel >= 2 && isCareerMatch) discountRate = 10;
7083
+ if (techLevel >= 2) {
7084
+ const baseDiscount = 5;
7085
+ const careerDiscount = 10;
7086
+ discountRate = Math.max(baseDiscount, careerDiscount);
7087
+ }
7137
7088
  } else {
7138
- const baseDiscount = [5, 10][techLevel - 1] || 0;
7139
- const careerDiscount = techLevel >= 1 && isCareerMatch ? [10, 20][techLevel - 1] : 0;
7089
+ const baseDiscount = 5;
7090
+ const careerDiscount = 10;
7140
7091
  discountRate = Math.max(baseDiscount, careerDiscount);
7141
7092
  }
7142
7093
  }