koishi-plugin-ggcevo-game 1.4.69 → 1.4.71

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.
@@ -492,6 +492,64 @@ export declare const BattleEffectProcessor: {
492
492
  updates: Partial<BattleStatistics>;
493
493
  } | null;
494
494
  } | null;
495
+ handleHiveMind: (targetBoss: any, activeBosses: any[], nestlingNames?: string[]) => {
496
+ nerfMultiplier: number;
497
+ messages: string[];
498
+ };
499
+ handleBurrowAmbush: (targetBoss: any, nestlingNames?: string[]) => {
500
+ messages: string[];
501
+ targetUpdates: {
502
+ name: any;
503
+ updates: Partial<BattleStatistics>;
504
+ };
505
+ spawnNewBossMark: string;
506
+ };
507
+ handleWeakeningSpit: (targetBoss: any, activeBosses: any[]) => any;
508
+ handleHealingSwarm: (targetBoss: any, activeBosses: any[]) => {
509
+ messages: string[];
510
+ targetUpdates: {
511
+ name: any;
512
+ updates: {
513
+ hpChange: number;
514
+ };
515
+ };
516
+ otherUpdates: {
517
+ name: string;
518
+ updates: Partial<BattleStatistics>;
519
+ }[];
520
+ };
521
+ handleReleasePheromones: (targetBoss: any) => {
522
+ messages: string[];
523
+ nerfMultiplier: number;
524
+ };
525
+ handleTerrifyingScreech: (targetBoss: any, activeBosses: any[], nestlingNames?: string[]) => {
526
+ targetUpdates: Partial<BattleStatistics>;
527
+ messages: string[];
528
+ spawnNewBossMark?: undefined;
529
+ } | {
530
+ targetUpdates: Partial<BattleStatistics>;
531
+ messages: string[];
532
+ spawnNewBossMark: string;
533
+ };
534
+ handleHatching: (targetBoss: any, activeBosses: any[], nestlingNames?: string[]) => {
535
+ targetUpdates: {
536
+ name: any;
537
+ updates: {
538
+ statusLayersChanged: number;
539
+ };
540
+ };
541
+ messages: string[];
542
+ spawnNewBossMark?: undefined;
543
+ } | {
544
+ targetUpdates: {
545
+ name: any;
546
+ updates: {
547
+ statusLayersChanged: number;
548
+ };
549
+ };
550
+ messages: string[];
551
+ spawnNewBossMark: string;
552
+ };
495
553
  };
496
554
  /**
497
555
  * 统一处理所有被动效果(包含伤害修正、免疫检查、状态更新等)
@@ -509,4 +567,5 @@ export declare function applyPassiveEffects(targetBoss: any, activeBosses: any[]
509
567
  energyDrained: boolean;
510
568
  layerReduced: boolean;
511
569
  bileDetonationTrigger: boolean;
570
+ spawnNewBossMarks: string[];
512
571
  };
@@ -51,3 +51,4 @@ export declare function testAttackFunction(ctx: Context, session: any, handle: s
51
51
  passiveMessages: string[];
52
52
  ignoreMessage: any[];
53
53
  }>;
54
+ export declare function createNestlingBosses(ctx: any, nestlingName: string): Promise<any>;
@@ -227,4 +227,32 @@ export declare const passiveConfig: {
227
227
  type: string;
228
228
  description: string;
229
229
  };
230
+ 虫巢思维: {
231
+ type: string;
232
+ description: string;
233
+ };
234
+ 爆虫伏击: {
235
+ type: string;
236
+ description: string;
237
+ };
238
+ 虚弱喷吐: {
239
+ type: string;
240
+ description: string;
241
+ };
242
+ 治愈虫群: {
243
+ type: string;
244
+ description: string;
245
+ };
246
+ 释放信息素: {
247
+ type: string;
248
+ description: string;
249
+ };
250
+ 恐吓尖啸: {
251
+ type: string;
252
+ description: string;
253
+ };
254
+ 孵化: {
255
+ type: string;
256
+ description: string;
257
+ };
230
258
  };
package/lib/index.js CHANGED
@@ -315,7 +315,7 @@ var weaponConfig = {
315
315
  id: 19,
316
316
  type: "能量武器",
317
317
  category: "能量武器",
318
- damage: 30,
318
+ damage: 35,
319
319
  armorDamageReduction: 1,
320
320
  description: "这是在一位高级灵能者的帮助下,解析灵能力量制作出的高科技武器",
321
321
  specialeffect: "",
@@ -348,10 +348,10 @@ var weaponConfig = {
348
348
  id: 102,
349
349
  type: "能量武器",
350
350
  category: "传奇武器",
351
- damage: 75,
351
+ damage: 80,
352
352
  armorDamageReduction: -1,
353
353
  description: "一件传奇武器",
354
- specialeffect: "暴击率+25%;若连续3次攻击没暴击,则第四次攻击必定暴击",
354
+ specialeffect: "暴击率+25%;若连续3次攻击没暴击,则下一次攻击必定暴击",
355
355
  price: 6400,
356
356
  redCrystalCost: 200,
357
357
  isantiair: true,
@@ -484,7 +484,7 @@ var modConfig = {
484
484
  },
485
485
  "棱镜超载核心": {
486
486
  cost: 2550,
487
- effect: "暴击率+20%",
487
+ effect: "暴击率+20%;若连续4次攻击没暴击,则下一次攻击必定暴击",
488
488
  // 保持原描述
489
489
  exclusiveTo: "激光步枪",
490
490
  isExclusive: true
@@ -1475,6 +1475,71 @@ var bossPool = [
1475
1475
  passive: ["弱化形态", "毒性唾液", "毒气波", "淬毒撕咬", "酸蚀池"]
1476
1476
  }
1477
1477
  ]
1478
+ },
1479
+ {
1480
+ id: 11,
1481
+ main: {
1482
+ name: "虫群女王",
1483
+ type: "主宰",
1484
+ maxHP: 7500,
1485
+ maxShield: 0,
1486
+ maxEnergy: 0,
1487
+ armor: 5,
1488
+ shieldArmor: 0,
1489
+ maxStacks: 20,
1490
+ tags: ["生物", "灵能", "异形"],
1491
+ passive: ["虫巢思维", "爆虫伏击", "虚弱喷吐", "治愈虫群", "释放信息素", "恐吓尖啸"]
1492
+ },
1493
+ minions: [
1494
+ {
1495
+ name: "孵化场",
1496
+ type: "子代",
1497
+ maxHP: 2e4,
1498
+ maxShield: 0,
1499
+ maxEnergy: 0,
1500
+ armor: 4,
1501
+ shieldArmor: 0,
1502
+ maxStacks: 20,
1503
+ tags: ["重甲", "生物", "建筑", "异形"],
1504
+ passive: ["孵化"]
1505
+ },
1506
+ {
1507
+ name: "巢穴雷兽",
1508
+ type: "子代",
1509
+ maxHP: 4e3,
1510
+ maxShield: 0,
1511
+ maxEnergy: 0,
1512
+ armor: 15,
1513
+ shieldArmor: 0,
1514
+ maxStacks: 0,
1515
+ tags: ["重甲", "生物", "异形"],
1516
+ passive: []
1517
+ },
1518
+ {
1519
+ name: "巢穴战士",
1520
+ type: "子代",
1521
+ maxHP: 2e3,
1522
+ maxShield: 0,
1523
+ maxEnergy: 0,
1524
+ armor: 4,
1525
+ shieldArmor: 0,
1526
+ maxStacks: 0,
1527
+ tags: ["轻甲", "生物", "异形"],
1528
+ passive: []
1529
+ },
1530
+ {
1531
+ name: "巢穴甲虫",
1532
+ type: "子代",
1533
+ maxHP: 3e3,
1534
+ maxShield: 0,
1535
+ maxEnergy: 0,
1536
+ armor: 10,
1537
+ shieldArmor: 0,
1538
+ maxStacks: 0,
1539
+ tags: ["重甲", "生物", "异形"],
1540
+ passive: []
1541
+ }
1542
+ ]
1478
1543
  }
1479
1544
  ];
1480
1545
 
@@ -3345,7 +3410,169 @@ var BattleEffectProcessor = {
3345
3410
  messages,
3346
3411
  targetUpdates
3347
3412
  };
3348
- }, "handleToxicAssault")
3413
+ }, "handleToxicAssault"),
3414
+ // 虫巢思维 - 每有一只巢穴子代,减伤20%
3415
+ handleHiveMind: /* @__PURE__ */ __name(function(targetBoss, activeBosses, nestlingNames = ["巢穴雷兽", "巢穴战士", "巢穴甲虫"]) {
3416
+ if (!targetBoss.skills.includes("虫巢思维")) return null;
3417
+ const livingNestlings = activeBosses.filter(
3418
+ (boss) => boss.isActive && nestlingNames.includes(boss.name)
3419
+ ).length;
3420
+ if (livingNestlings === 0) return null;
3421
+ const nerfMultiplier = livingNestlings * 0.2;
3422
+ const messages = [`🐛 【虫巢思维】生效:存在${livingNestlings}只巢穴子代,受到的伤害-${nerfMultiplier * 100}%`];
3423
+ return { nerfMultiplier, messages };
3424
+ }, "handleHiveMind"),
3425
+ // 爆虫伏击 - 血量低于50%时,立即随机孵化1只巢穴子代并移除技能
3426
+ handleBurrowAmbush: /* @__PURE__ */ __name(function(targetBoss, nestlingNames = ["巢穴雷兽", "巢穴战士", "巢穴甲虫"]) {
3427
+ if (!targetBoss.skills.includes("爆虫伏击")) return null;
3428
+ const maxHP = getMaxHPByName(targetBoss.name);
3429
+ const hpPercent = targetBoss.HP / maxHP;
3430
+ if (hpPercent >= 0.5) return null;
3431
+ const randomBossName = nestlingNames[Math.floor(Math.random() * nestlingNames.length)];
3432
+ const messages = [
3433
+ `🕳️ 【爆虫伏击】触发:生命值≤50%,需要孵化1只${randomBossName}`,
3434
+ `🕳️ 【爆虫伏击】技能移除`
3435
+ ];
3436
+ return {
3437
+ messages,
3438
+ targetUpdates: {
3439
+ // 添加目标boss更新数据
3440
+ name: targetBoss.name,
3441
+ updates: {
3442
+ skillsRemoved: ["爆虫伏击"]
3443
+ // 移除此技能
3444
+ }
3445
+ },
3446
+ spawnNewBossMark: randomBossName
3447
+ // 返回生成标记
3448
+ };
3449
+ }, "handleBurrowAmbush"),
3450
+ // 虚弱喷吐 - 孵化场存活时减伤80%,死亡时增伤20%
3451
+ handleWeakeningSpit: /* @__PURE__ */ __name(function(targetBoss, activeBosses) {
3452
+ if (!targetBoss.skills.includes("虚弱喷吐")) return null;
3453
+ const hatcheryExists = activeBosses.some(
3454
+ (boss) => boss.name === "孵化场" && boss.isActive
3455
+ );
3456
+ let effect = null;
3457
+ if (hatcheryExists) {
3458
+ effect = { nerfMultiplier: 0.8, messages: ["🤢 【虚弱喷吐】生效:孵化场存活,受到的伤害-80%"] };
3459
+ } else {
3460
+ effect = { buffMultiplier: 0.2, messages: ["☠️ 【虚弱喷吐】生效:孵化场死亡,受到的伤害+20%"] };
3461
+ }
3462
+ return effect;
3463
+ }, "handleWeakeningSpit"),
3464
+ // 治愈虫群 - 血量低于30%时,自身回复40%生命值,所有异形回复10%生命值
3465
+ handleHealingSwarm: /* @__PURE__ */ __name(function(targetBoss, activeBosses) {
3466
+ if (!targetBoss.skills.includes("治愈虫群")) return null;
3467
+ const maxHP = getMaxHPByName(targetBoss.name);
3468
+ const hpPercent = targetBoss.HP / maxHP;
3469
+ let targetUpdates = null;
3470
+ if (hpPercent >= 0.3) return null;
3471
+ const selfHealAmount = Math.round(maxHP * 0.4);
3472
+ const messages = [`💫 【治愈虫群】触发:生命值≤30%,自身回复${selfHealAmount}点生命值`];
3473
+ const otherUpdates = [];
3474
+ const survivors = activeBosses.filter((boss) => boss.name !== targetBoss.name && boss.isActive);
3475
+ survivors.forEach((boss) => {
3476
+ const healAmount = Math.round(getMaxHPByName(boss.name) * 0.1);
3477
+ if (healAmount > 0) {
3478
+ otherUpdates.push({
3479
+ name: boss.name,
3480
+ updates: { hpChange: healAmount }
3481
+ });
3482
+ messages.push(`💫 「${boss.name}」回复${healAmount}点生命值`);
3483
+ }
3484
+ });
3485
+ return {
3486
+ messages,
3487
+ targetUpdates: {
3488
+ name: targetBoss.name,
3489
+ updates: { hpChange: selfHealAmount }
3490
+ },
3491
+ otherUpdates
3492
+ };
3493
+ }, "handleHealingSwarm"),
3494
+ // 释放信息素 - 所有存活巢穴子代减伤20%
3495
+ handleReleasePheromones: /* @__PURE__ */ __name(function(targetBoss) {
3496
+ if (!targetBoss.name.includes("巢穴雷兽") && !targetBoss.name.includes("巢穴战士") && !targetBoss.name.includes("巢穴甲虫")) return null;
3497
+ const messages = [`🌬️ 【释放信息素】生效:所有巢穴子代受到的伤害-20%`];
3498
+ const nerfMultiplier = 0.2;
3499
+ return { messages, nerfMultiplier };
3500
+ }, "handleReleasePheromones"),
3501
+ // 恐吓尖啸 - 每受到10次攻击,无巢穴子代时孵化1只
3502
+ handleTerrifyingScreech: /* @__PURE__ */ __name(function(targetBoss, activeBosses, nestlingNames = ["巢穴雷兽", "巢穴战士", "巢穴甲虫"]) {
3503
+ if (!targetBoss.skills.includes("恐吓尖啸")) return null;
3504
+ const currentCount = targetBoss.statusLayers || 0;
3505
+ if (currentCount < 10) {
3506
+ return {
3507
+ targetUpdates: {
3508
+ name: targetBoss.name,
3509
+ updates: { statusLayersChanged: 1 }
3510
+ },
3511
+ messages: [`😱 【恐吓尖啸】生效:获得一层恐吓尖啸`]
3512
+ };
3513
+ }
3514
+ const nestlingsExist = activeBosses.some(
3515
+ (boss) => boss.isActive && nestlingNames.includes(boss.name)
3516
+ );
3517
+ if (nestlingsExist) {
3518
+ return {
3519
+ targetUpdates: {
3520
+ name: targetBoss.name,
3521
+ updates: { statusLayersChanged: -10 }
3522
+ // 重置计数器
3523
+ },
3524
+ messages: []
3525
+ };
3526
+ }
3527
+ const randomBossName = nestlingNames[Math.floor(Math.random() * nestlingNames.length)];
3528
+ return {
3529
+ targetUpdates: {
3530
+ name: targetBoss.name,
3531
+ updates: { statusLayersChanged: -10 }
3532
+ // 重置计数器
3533
+ },
3534
+ messages: [`😱 【恐吓尖啸】触发:无巢穴子代存活,需要孵化1只${randomBossName}`],
3535
+ spawnNewBossMark: randomBossName
3536
+ // 返回生成标记
3537
+ };
3538
+ }, "handleTerrifyingScreech"),
3539
+ // 孵化 - 每受到10次攻击,无巢穴子代时孵化1只
3540
+ handleHatching: /* @__PURE__ */ __name(function(targetBoss, activeBosses, nestlingNames = ["巢穴雷兽", "巢穴战士", "巢穴甲虫"]) {
3541
+ if (!targetBoss.skills.includes("孵化")) return null;
3542
+ const currentCount = targetBoss.statusLayers || 0;
3543
+ if (currentCount < 10) {
3544
+ return {
3545
+ targetUpdates: {
3546
+ name: targetBoss.name,
3547
+ updates: { statusLayersChanged: 1 }
3548
+ },
3549
+ messages: [`🥚 【孵化】生效:获得一层孵化`]
3550
+ };
3551
+ }
3552
+ const hasNestlings = activeBosses.some(
3553
+ (boss) => boss.isActive && nestlingNames.includes(boss.name)
3554
+ );
3555
+ if (hasNestlings) {
3556
+ return {
3557
+ targetUpdates: {
3558
+ name: targetBoss.name,
3559
+ updates: { statusLayersChanged: -10 }
3560
+ // 重置计数器
3561
+ },
3562
+ messages: []
3563
+ };
3564
+ }
3565
+ const randomBossName = nestlingNames[Math.floor(Math.random() * nestlingNames.length)];
3566
+ return {
3567
+ targetUpdates: {
3568
+ name: targetBoss.name,
3569
+ updates: { statusLayersChanged: -10 }
3570
+ // 重置计数器
3571
+ },
3572
+ messages: [`🥚 【孵化】触发:成功孵化1只${randomBossName}`],
3573
+ spawnNewBossMark: randomBossName
3574
+ };
3575
+ }, "handleHatching")
3349
3576
  };
3350
3577
  function applyPassiveEffects(targetBoss, activeBosses, weaponName, damage, hasCrit, ignoreRate, careerData) {
3351
3578
  const messages = [];
@@ -3357,6 +3584,7 @@ function applyPassiveEffects(targetBoss, activeBosses, weaponName, damage, hasCr
3357
3584
  let energyDrained = false;
3358
3585
  let layerReduced = false;
3359
3586
  let bileDetonationTrigger = false;
3587
+ let spawnNewBossMarks = [];
3360
3588
  const weaponData = weaponConfig[weaponName] || { type: "" };
3361
3589
  let doubleAstralWind = false;
3362
3590
  let isolatedImmunityMark = false;
@@ -3372,6 +3600,9 @@ function applyPassiveEffects(targetBoss, activeBosses, weaponName, damage, hasCr
3372
3600
  updateStatsByName(update.name, update.updates);
3373
3601
  }
3374
3602
  }
3603
+ if (result.spawnNewBossMark) {
3604
+ spawnNewBossMarks.push(result.spawnNewBossMark);
3605
+ }
3375
3606
  return result;
3376
3607
  }, "processEffect");
3377
3608
  const maxStatsMap = {};
@@ -3456,7 +3687,10 @@ function applyPassiveEffects(targetBoss, activeBosses, weaponName, damage, hasCr
3456
3687
  { effect: BattleEffectProcessor.handleIsolated, args: [targetBoss, activeBosses, isolatedImmunityMark] },
3457
3688
  { effect: BattleEffectProcessor.handleInfectedSpaceStation, args: [targetBoss, activeBosses] },
3458
3689
  { effect: BattleEffectProcessor.handleInfernalBomb, args: [targetBoss, activeBosses] },
3459
- { effect: BattleEffectProcessor.handleHunterAlien, args: [targetBoss, activeBosses, weaponName] }
3690
+ { effect: BattleEffectProcessor.handleHunterAlien, args: [targetBoss, activeBosses, weaponName] },
3691
+ { effect: BattleEffectProcessor.handleHiveMind, args: [targetBoss, activeBosses] },
3692
+ { effect: BattleEffectProcessor.handleReleasePheromones, args: [targetBoss] },
3693
+ { effect: BattleEffectProcessor.handleWeakeningSpit, args: [targetBoss, activeBosses] }
3460
3694
  ];
3461
3695
  for (const effectItem of damageAdjustEffects) {
3462
3696
  const result = processEffect(effectItem.effect, ...effectItem.args);
@@ -3492,13 +3726,15 @@ function applyPassiveEffects(targetBoss, activeBosses, weaponName, damage, hasCr
3492
3726
  const stateChangeEffects = [
3493
3727
  { effect: BattleEffectProcessor.handleSuperconductor, args: [targetBoss] },
3494
3728
  // 4. 剧毒突袭
3495
- { effect: BattleEffectProcessor.handleToxicAssault, args: [targetBoss] }
3729
+ { effect: BattleEffectProcessor.handleToxicAssault, args: [targetBoss] },
3730
+ { effect: BattleEffectProcessor.handleTerrifyingScreech, args: [targetBoss, activeBosses] },
3731
+ { effect: BattleEffectProcessor.handleHatching, args: [targetBoss, activeBosses] }
3496
3732
  ];
3497
3733
  for (const effectItem of stateChangeEffects) {
3498
3734
  processEffect(effectItem.effect, ...effectItem.args);
3499
3735
  }
3500
3736
  let isEnhanced = false;
3501
- if (targetBoss.statusLayers > 0) {
3737
+ if (targetBoss.statusLayers > 0 && targetBoss.skills.includes("酸蚀池")) {
3502
3738
  isEnhanced = true;
3503
3739
  updateStatsByName(targetBoss.name, {
3504
3740
  statusLayersChanged: -1
@@ -3533,7 +3769,9 @@ function applyPassiveEffects(targetBoss, activeBosses, weaponName, damage, hasCr
3533
3769
  { effect: BattleEffectProcessor.handleBombardmentGuide, args: [targetBoss] },
3534
3770
  { effect: BattleEffectProcessor.handleOverdriveShield, args: [targetBoss, activeBosses] },
3535
3771
  // 6. 淬毒撕咬
3536
- { effect: BattleEffectProcessor.handlePoisonedBite, args: [targetBoss] }
3772
+ { effect: BattleEffectProcessor.handlePoisonedBite, args: [targetBoss] },
3773
+ { effect: BattleEffectProcessor.handleHealingSwarm, args: [targetBoss, activeBosses] },
3774
+ { effect: BattleEffectProcessor.handleBurrowAmbush, args: [targetBoss] }
3537
3775
  ];
3538
3776
  for (const effectItem of healingEffects) {
3539
3777
  processEffect(effectItem.effect, ...effectItem.args);
@@ -3702,7 +3940,9 @@ function applyPassiveEffects(targetBoss, activeBosses, weaponName, damage, hasCr
3702
3940
  coldLayerAdded,
3703
3941
  energyDrained,
3704
3942
  layerReduced,
3705
- bileDetonationTrigger
3943
+ bileDetonationTrigger,
3944
+ spawnNewBossMarks
3945
+ // +++ 新增生成标记 +++
3706
3946
  };
3707
3947
  }
3708
3948
  __name(applyPassiveEffects, "applyPassiveEffects");
@@ -3936,6 +4176,34 @@ var passiveConfig = {
3936
4176
  "剧毒突袭": {
3937
4177
  type: "强化效果",
3938
4178
  description: "「毒性唾液」≥20层时,受击消耗所有层数并强化下5次触发的「酸蚀池」(武器类型对应的增伤和减伤效果翻倍)"
4179
+ },
4180
+ "虫巢思维": {
4181
+ type: "",
4182
+ description: "每有一只巢穴子代,则受到的伤害降低20%"
4183
+ },
4184
+ "爆虫伏击": {
4185
+ type: "",
4186
+ description: "血量低于50%时,立即随机孵化1只巢穴子代(生效后移除)"
4187
+ },
4188
+ "虚弱喷吐": {
4189
+ type: "",
4190
+ description: "当孵化场存活时,自身受到的伤害降低80%;如果孵化场已死亡,则自身受到的伤害提高20%"
4191
+ },
4192
+ "治愈虫群": {
4193
+ type: "",
4194
+ description: "血量低于30%时,立即回复自身40%点生命值,同时回复所有存活异形10%点生命值"
4195
+ },
4196
+ "释放信息素": {
4197
+ type: "",
4198
+ description: "所有存活的巢穴子代受到的伤害降低20%"
4199
+ },
4200
+ "恐吓尖啸": {
4201
+ type: "",
4202
+ description: "每受到10次攻击,如果没有存活的巢穴子代,则随机孵化1只巢穴子代(巢穴雷兽,巢穴战士,巢穴甲虫)"
4203
+ },
4204
+ "孵化": {
4205
+ type: "",
4206
+ description: "每受到10次攻击,如果没有存活的巢穴子代,则随机孵化1只巢穴子代(巢穴雷兽,巢穴战士,巢穴甲虫)"
3939
4207
  }
3940
4208
  };
3941
4209
 
@@ -5006,6 +5274,11 @@ async function handlePrimaryAttack(ctx, session, handle, config, equippedWeapon,
5006
5274
  const EffectProcessor = applyPassiveEffects(targetBoss, activeBosses, weaponName, damageResult.damage, damageResult.hasCrit, ignoreReduction.ignoreRate, careerData);
5007
5275
  const initialDamage = EffectProcessor.finalDamage;
5008
5276
  await saveAndClearStats(ctx);
5277
+ if (EffectProcessor.spawnNewBossMarks?.length) {
5278
+ for (const bossName of EffectProcessor.spawnNewBossMarks) {
5279
+ await createNestlingBosses(ctx, bossName);
5280
+ }
5281
+ }
5009
5282
  const [currentboss] = await ctx.database.get("ggcevo_boss", { name: targetBoss.name });
5010
5283
  const currentHP = currentboss.HP;
5011
5284
  const isDefeated = currentHP <= 0;
@@ -5418,6 +5691,33 @@ async function testAttackFunction(ctx, session, handle, config, equippedWeapon,
5418
5691
  };
5419
5692
  }
5420
5693
  __name(testAttackFunction, "testAttackFunction");
5694
+ async function createNestlingBosses(ctx, nestlingName) {
5695
+ let foundMinion = null;
5696
+ let groupId = null;
5697
+ for (const bossGroup of bossPool) {
5698
+ const minion = bossGroup.minions.find((m) => m.name === nestlingName);
5699
+ if (minion) {
5700
+ foundMinion = minion;
5701
+ groupId = bossGroup.id;
5702
+ break;
5703
+ }
5704
+ }
5705
+ if (!foundMinion) {
5706
+ throw new Error(`未知的巢穴子代名称: ${nestlingName}`);
5707
+ }
5708
+ return ctx.database.create("ggcevo_boss", {
5709
+ name: foundMinion.name,
5710
+ type: foundMinion.type,
5711
+ HP: foundMinion.maxHP,
5712
+ tags: foundMinion.tags,
5713
+ skills: [...foundMinion.passive],
5714
+ energy: foundMinion.maxEnergy,
5715
+ groupId,
5716
+ isActive: true,
5717
+ respawnTime: /* @__PURE__ */ new Date()
5718
+ });
5719
+ }
5720
+ __name(createNestlingBosses, "createNestlingBosses");
5421
5721
 
5422
5722
  // src/index.ts
5423
5723
  var name = "ggcevo-game";
@@ -7956,7 +8256,7 @@ ${validTypes.join("、")}`;
7956
8256
  modInfo.isExclusive ? "ℹ️ 专属模块拆卸只返还50%" : ""
7957
8257
  ].filter(Boolean).join("\n");
7958
8258
  });
7959
- ctx.command("ggcevo/攻击 <bossName>").usage("请输入要攻击的异形名称(例如:攻击 异齿猛兽 或 攻击 寒冰王蛇)").action(async (argv, bossName) => {
8259
+ ctx.guild().command("ggcevo/攻击 <bossName>").usage("请输入要攻击的异形名称(例如:攻击 异齿猛兽 或 攻击 寒冰王蛇)").action(async (argv, bossName) => {
7960
8260
  const session = argv.session;
7961
8261
  let bossEventBroadcast = null;
7962
8262
  let cleanerRewardBroadcast = null;
@@ -8278,6 +8578,12 @@ ${testResult.passiveMessages.map((m) => `▸ ${m}`).join("\n")}`
8278
8578
  if (mainBoss.skills.includes("剧毒突袭")) {
8279
8579
  result.push(`☠️ 剧毒突袭:${mainBoss.statusLayers}层`);
8280
8580
  }
8581
+ if (mainBoss.skills.includes("恐吓尖啸")) {
8582
+ result.push(`😱 恐吓尖啸:${mainBoss.statusLayers}层`);
8583
+ }
8584
+ if (mainBoss.skills.includes("孵化")) {
8585
+ result.push(`🥚 孵化:${mainBoss.statusLayers}层`);
8586
+ }
8281
8587
  if (mainBoss.skills.includes("酸蚀池")) {
8282
8588
  let acidText;
8283
8589
  switch (mainBoss.skillStatus) {
@@ -8336,6 +8642,12 @@ ${testResult.passiveMessages.map((m) => `▸ ${m}`).join("\n")}`
8336
8642
  if (minion.skills.includes("剧毒突袭")) {
8337
8643
  minionInfo.push(`☠️ 剧毒突袭:${minion.statusLayers}层`);
8338
8644
  }
8645
+ if (minion.skills.includes("恐吓尖啸")) {
8646
+ minionInfo.push(`😱 恐吓尖啸:${mainBoss.statusLayers}层`);
8647
+ }
8648
+ if (minion.skills.includes("孵化")) {
8649
+ minionInfo.push(`🥚 孵化:${mainBoss.statusLayers}层`);
8650
+ }
8339
8651
  if (minion.skills.includes("酸蚀池")) {
8340
8652
  let acidText;
8341
8653
  switch (minion.skillStatus) {
@@ -8382,7 +8694,11 @@ ${testResult.passiveMessages.map((m) => `▸ ${m}`).join("\n")}`
8382
8694
  isActive: true,
8383
8695
  respawnTime: /* @__PURE__ */ new Date()
8384
8696
  });
8385
- for (const minion of bossConfig.minions) {
8697
+ const excludeNames = ["巢穴雷兽", "巢穴战士", "巢穴甲虫"];
8698
+ const validMinions = bossConfig.minions.filter(
8699
+ (minion) => !excludeNames.includes(minion.name)
8700
+ );
8701
+ for (const minion of validMinions) {
8386
8702
  await ctx.database.create("ggcevo_boss", {
8387
8703
  name: minion.name,
8388
8704
  type: "子代",
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "koishi-plugin-ggcevo-game",
3
3
  "description": "《星际争霸2》咕咕虫-evolved地图的专属游戏助手插件,集成天梯排行、抽奖系统、签到福利、兑换商城等丰富功能。",
4
- "version": "1.4.69",
4
+ "version": "1.4.71",
5
5
  "main": "lib/index.js",
6
6
  "typings": "lib/index.d.ts",
7
7
  "files": [