koishi-plugin-ggcevo-game 1.4.27 → 1.4.28

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.
@@ -172,7 +172,7 @@ export declare const bossPool: readonly [{
172
172
  maxHP: number;
173
173
  energy: number;
174
174
  tags: ("重甲" | "护盾" | "生物" | "灵能" | "异形")[];
175
- passive: ("星界之风" | "宇宙能量" | "复苏" | "光影之刃" | "远古预兆" | "超视距穿梭")[];
175
+ passive: ("星界之风" | "宇宙能量" | "复苏" | "光影之刃" | "远古预兆" | "闪电冲锋" | "超视距穿梭")[];
176
176
  };
177
177
  minions: {
178
178
  name: string;
@@ -97,7 +97,7 @@ export declare const passiveConfig: {
97
97
  };
98
98
  readonly 能源虹吸: {
99
99
  readonly effect: 0;
100
- readonly description: "拥有“能量”机制。当“能量”≥80%的时候,受到的伤害-50%; 当“能量”≥50%的时候,受到的伤害-30%";
100
+ readonly description: "当“能量”≥80%的时候,受到的伤害-50%; 当“能量”≥50%的时候,受到的伤害-30%";
101
101
  };
102
102
  readonly 电能立场: {
103
103
  readonly effect: 0;
@@ -165,19 +165,19 @@ export declare const passiveConfig: {
165
165
  };
166
166
  readonly 星界之风: {
167
167
  readonly effect: 0;
168
- readonly description: "受到伤害时,有5%的概率回复所有存活异形500点血量";
168
+ readonly description: "受到伤害时,有5%的概率回复所有存活异形200点血量";
169
169
  };
170
170
  readonly 心灵狂热: {
171
171
  readonly effect: 0;
172
- readonly description: "当血量低于50%时,进入心灵狂热状态,受到的伤害-50%";
172
+ readonly description: "当血量低于50%时,进入心灵狂热状态,受到的伤害-20%,并且触发“星界之风”技能的概率翻倍";
173
173
  };
174
174
  readonly 宇宙能量: {
175
175
  readonly effect: 0;
176
- readonly description: "拥有“能量”机制; 受到攻击时回复与该攻击伤害等额的“能量”; 若“能量”已满,则回复与该攻击伤害等额的血量";
176
+ readonly description: "受到攻击时回复与该攻击伤害等额的“能量”; 若“能量”已满,则回复与该攻击伤害等额的血量";
177
177
  };
178
178
  readonly 复苏: {
179
179
  readonly effect: 0;
180
- readonly description: "受到致命伤害时,免于死亡并且快速回复50%的血量和100%的能量,并且获得“灵能构造炉”技能(触发后移除)";
180
+ readonly description: "受到致命伤害时,免于死亡,快速回复自身100%的最大生命值和100%的“能量”,并且获得“灵能构造炉”技能(触发后移除)";
181
181
  };
182
182
  readonly 光影之刃: {
183
183
  readonly effect: 0;
@@ -185,19 +185,23 @@ export declare const passiveConfig: {
185
185
  };
186
186
  readonly 远古预兆: {
187
187
  readonly effect: 0;
188
- readonly description: "受到伤害时,有5%的概率免疫此次伤害并且回复100点“能量”,每层“光影之刃”额外提供1%的概率";
188
+ readonly description: "受到伤害时,有1%的概率免疫此次伤害并且回复100点“能量”";
189
+ };
190
+ readonly 闪电冲锋: {
191
+ readonly effect: 0;
192
+ readonly description: "每层“光影之刃”使触发“星界之风”,“远古预兆”和“灵能构造炉”技能的概率+1%";
189
193
  };
190
194
  readonly 超视距穿梭: {
191
195
  readonly effect: 0;
192
- readonly description: "当“能量”≥30%时,每层“光影之刃”使受到的伤害-5%";
196
+ readonly description: "当“能量”≥30%时,每层“光影之刃”使受到的伤害-5%; 当“能量”≥60%时,每层“光影之刃”使受到的伤害-10%; 当“能量”≤10%时,每层“光影之刃”使受到的伤害+5%";
193
197
  };
194
198
  readonly 灵能构造炉: {
195
199
  readonly effect: 0;
196
- readonly description: "受到攻击后,有5%的概率会随机获得以下4个技能之一(天启超载护盾,塌缩脉冲,地毯式轰炸,轰炸引导),每层“光影之刃”额外提供1%的概率";
200
+ readonly description: "受到攻击后,有5%的概率会随机获得以下4个技能之一(天启超载护盾,塌缩脉冲,地毯式轰炸,轰炸引导)";
197
201
  };
198
202
  readonly 天启超载护盾: {
199
203
  readonly effect: 0;
200
- readonly description: "受到伤害后,有10%的概率消耗所有“光影之刃”层数,回复所有存活异形X点血量(X为“光影之刃”层数 x 100)";
204
+ readonly description: "受到伤害后,有10%的概率回复所有存活异形X点血量(X为“光影之刃”层数 x 50)";
201
205
  };
202
206
  readonly 塌缩脉冲: {
203
207
  readonly effect: 0;
@@ -209,6 +213,6 @@ export declare const passiveConfig: {
209
213
  };
210
214
  readonly 轰炸引导: {
211
215
  readonly effect: 0;
212
- readonly description: "受到伤害后,有10%的概率概率消耗所有“光影之刃”层数,回复自身X点“能量”(X为“光影之刃”层数 x 100)";
216
+ readonly description: "受到伤害后,有10%的概率概率回复自身X点“能量”(X为“光影之刃”层数 x 100)";
213
217
  };
214
218
  };
@@ -38,7 +38,7 @@ export declare const PassiveHandler: {
38
38
  messages: string[];
39
39
  skillUpdates: {
40
40
  name: any;
41
- remove: ("冰霜环绕" | "寒霜地狱" | "冰霜回复" | "弱化形态" | "异形甲壳" | "孤立无援" | "冰霜进化" | "应激甲壳I" | "应激甲壳II" | "求生本能I" | "求生本能II" | "冷适应" | "感染空间站" | "病毒云" | "霉菌滋生" | "岗哨机枪" | "结构装甲" | "吸血唾液" | "进食" | "嗜血狂暴" | "吐血" | "电能导体" | "超导体" | "能量虹吸" | "能源虹吸" | "电能立场" | "电能冲击波" | "脉冲" | "能量黑洞" | "火焰异形" | "庞兽狂暴" | "灼烧粘液" | "腐蚀胆汁" | "火焰吐息" | "太阳耀斑" | "燃烧潜地" | "炼狱爆弹" | "猎手异形" | "狂暴" | "伪装" | "致命一击" | "星界之风" | "心灵狂热" | "宇宙能量" | "复苏" | "光影之刃" | "远古预兆" | "超视距穿梭" | "灵能构造炉" | "天启超载护盾" | "塌缩脉冲" | "地毯式轰炸" | "轰炸引导")[];
41
+ remove: ("弱化形态" | "异形甲壳" | "孤立无援" | "冰霜回复" | "冰霜进化" | "冰霜环绕" | "寒霜地狱" | "应激甲壳I" | "应激甲壳II" | "求生本能I" | "求生本能II" | "冷适应" | "感染空间站" | "病毒云" | "霉菌滋生" | "岗哨机枪" | "结构装甲" | "吸血唾液" | "进食" | "嗜血狂暴" | "吐血" | "电能导体" | "超导体" | "能量虹吸" | "能源虹吸" | "电能立场" | "电能冲击波" | "脉冲" | "能量黑洞" | "火焰异形" | "庞兽狂暴" | "灼烧粘液" | "腐蚀胆汁" | "火焰吐息" | "太阳耀斑" | "燃烧潜地" | "炼狱爆弹" | "猎手异形" | "狂暴" | "伪装" | "致命一击" | "星界之风" | "心灵狂热" | "宇宙能量" | "复苏" | "光影之刃" | "远古预兆" | "闪电冲锋" | "超视距穿梭" | "灵能构造炉" | "天启超载护盾" | "塌缩脉冲" | "地毯式轰炸" | "轰炸引导")[];
42
42
  }[];
43
43
  };
44
44
  handleInfectedStation: (ctx: Context, targetBoss: any) => Promise<{
@@ -56,7 +56,8 @@ export declare const PassiveHandler: {
56
56
  messages: string[];
57
57
  };
58
58
  handleBloodEffects: (targetBoss: any, currentHP: number, maxHP: number) => {
59
- damageMultiplier: number;
59
+ buffAmount: number;
60
+ nerfAmount: number;
60
61
  messages: string[];
61
62
  };
62
63
  handleBloodCount: (ctx: Context, targetBoss: any, currentHP: number, maxHP: number) => Promise<{
@@ -181,7 +182,7 @@ export declare const PassiveHandler: {
181
182
  handlePulseDisruptor: (ctx: Context, targetBoss: any, weaponName: string) => Promise<{
182
183
  messages: string[];
183
184
  }>;
184
- handleStellarWind: (ctx: Context, targetBoss: any, initialDamage: number, activeBosses: any[], bossGroup: BossPoolItem) => Promise<{
185
+ handleStellarWind: (ctx: Context, targetBoss: any, initialDamage: number, maxHP: number, activeBosses: any[], bossGroup: BossPoolItem) => Promise<{
185
186
  messages: string[];
186
187
  }>;
187
188
  handlePsychicFrenzy: (targetBoss: any, currentHP: number, maxHP: number) => {
@@ -200,7 +201,8 @@ export declare const PassiveHandler: {
200
201
  messages: string[];
201
202
  }>;
202
203
  handleHyperspaceSkip: (targetBoss: any) => {
203
- damageMultiplier: number;
204
+ reduction: number;
205
+ increase: number;
204
206
  messages: string[];
205
207
  };
206
208
  handleRevival: (ctx: Context, targetBoss: any, currentHP: number, maxHP: number) => Promise<{
package/lib/index.js CHANGED
@@ -1237,16 +1237,16 @@ var bossPool = [
1237
1237
  id: 9,
1238
1238
  name: "宇宙界主",
1239
1239
  type: "主宰",
1240
- maxHP: 25e3,
1240
+ maxHP: 2e4,
1241
1241
  energy: 1e3,
1242
1242
  tags: asBossTags(["重甲", "护盾", "生物", "灵能", "异形"]),
1243
- passive: asPassives(["宇宙能量", "复苏", "光影之刃", "远古预兆", "星界之风", "超视距穿梭"])
1243
+ passive: asPassives(["宇宙能量", "复苏", "光影之刃", "闪电冲锋", "远古预兆", "星界之风", "超视距穿梭"])
1244
1244
  },
1245
1245
  minions: [
1246
1246
  {
1247
1247
  name: "宇宙战将",
1248
1248
  type: "子代",
1249
- maxHP: 7500,
1249
+ maxHP: 5e3,
1250
1250
  energy: 0,
1251
1251
  tags: asBossTags(["重甲", "护盾", "生物", "灵能", "异形"]),
1252
1252
  passive: asPassives(["弱化形态", "心灵狂热", "星界之风"])
@@ -1355,7 +1355,7 @@ var passiveConfig = {
1355
1355
  },
1356
1356
  "能源虹吸": {
1357
1357
  effect: 0,
1358
- description: "拥有“能量”机制。当“能量”≥80%的时候,受到的伤害-50%; 当“能量”≥50%的时候,受到的伤害-30%"
1358
+ description: "当“能量”≥80%的时候,受到的伤害-50%; 当“能量”≥50%的时候,受到的伤害-30%"
1359
1359
  },
1360
1360
  "电能立场": {
1361
1361
  effect: 0,
@@ -1423,19 +1423,19 @@ var passiveConfig = {
1423
1423
  },
1424
1424
  "星界之风": {
1425
1425
  effect: 0,
1426
- description: "受到伤害时,有5%的概率回复所有存活异形500点血量"
1426
+ description: "受到伤害时,有5%的概率回复所有存活异形200点血量"
1427
1427
  },
1428
1428
  "心灵狂热": {
1429
1429
  effect: 0,
1430
- description: "当血量低于50%时,进入心灵狂热状态,受到的伤害-50%"
1430
+ description: "当血量低于50%时,进入心灵狂热状态,受到的伤害-20%,并且触发“星界之风”技能的概率翻倍"
1431
1431
  },
1432
1432
  "宇宙能量": {
1433
1433
  effect: 0,
1434
- description: "拥有“能量”机制; 受到攻击时回复与该攻击伤害等额的“能量”; 若“能量”已满,则回复与该攻击伤害等额的血量"
1434
+ description: "受到攻击时回复与该攻击伤害等额的“能量”; 若“能量”已满,则回复与该攻击伤害等额的血量"
1435
1435
  },
1436
1436
  "复苏": {
1437
1437
  effect: 0,
1438
- description: "受到致命伤害时,免于死亡并且快速回复50%的血量和100%的能量,并且获得“灵能构造炉”技能(触发后移除)"
1438
+ description: "受到致命伤害时,免于死亡,快速回复自身100%的最大生命值和100%的“能量”,并且获得“灵能构造炉”技能(触发后移除)"
1439
1439
  },
1440
1440
  "光影之刃": {
1441
1441
  effect: 0,
@@ -1443,19 +1443,23 @@ var passiveConfig = {
1443
1443
  },
1444
1444
  "远古预兆": {
1445
1445
  effect: 0,
1446
- description: "受到伤害时,有5%的概率免疫此次伤害并且回复100点“能量”,每层“光影之刃”额外提供1%的概率"
1446
+ description: "受到伤害时,有1%的概率免疫此次伤害并且回复100点“能量”"
1447
+ },
1448
+ "闪电冲锋": {
1449
+ effect: 0,
1450
+ description: "每层“光影之刃”使触发“星界之风”,“远古预兆”和“灵能构造炉”技能的概率+1%"
1447
1451
  },
1448
1452
  "超视距穿梭": {
1449
1453
  effect: 0,
1450
- description: "当“能量”≥30%时,每层“光影之刃”使受到的伤害-5%"
1454
+ description: "当“能量”≥30%时,每层“光影之刃”使受到的伤害-5%; 当“能量”≥60%时,每层“光影之刃”使受到的伤害-10%; 当“能量”≤10%时,每层“光影之刃”使受到的伤害+5%"
1451
1455
  },
1452
1456
  "灵能构造炉": {
1453
1457
  effect: 0,
1454
- description: "受到攻击后,有5%的概率会随机获得以下4个技能之一(天启超载护盾,塌缩脉冲,地毯式轰炸,轰炸引导),每层“光影之刃”额外提供1%的概率"
1458
+ description: "受到攻击后,有5%的概率会随机获得以下4个技能之一(天启超载护盾,塌缩脉冲,地毯式轰炸,轰炸引导)"
1455
1459
  },
1456
1460
  "天启超载护盾": {
1457
1461
  effect: 0,
1458
- description: "受到伤害后,有10%的概率消耗所有“光影之刃”层数,回复所有存活异形X点血量(X为“光影之刃”层数 x 100)"
1462
+ description: "受到伤害后,有10%的概率回复所有存活异形X点血量(X为“光影之刃”层数 x 50)"
1459
1463
  },
1460
1464
  "塌缩脉冲": {
1461
1465
  effect: 0,
@@ -1467,7 +1471,7 @@ var passiveConfig = {
1467
1471
  },
1468
1472
  "轰炸引导": {
1469
1473
  effect: 0,
1470
- description: "受到伤害后,有10%的概率概率消耗所有“光影之刃”层数,回复自身X点“能量”(X为“光影之刃”层数 x 100)"
1474
+ description: "受到伤害后,有10%的概率概率回复自身X点“能量”(X为“光影之刃”层数 x 100)"
1471
1475
  }
1472
1476
  };
1473
1477
 
@@ -2623,28 +2627,36 @@ var PassiveHandler = {
2623
2627
  messages: [`🛡️ 【结构装甲】生效:${msg}`]
2624
2628
  };
2625
2629
  }, "handleStructuralArmor"),
2626
- // 吸血效果处理(返回综合系数)
2630
+ // 修改 handleBloodEffects 函数
2627
2631
  handleBloodEffects: /* @__PURE__ */ __name(function(targetBoss, currentHP, maxHP) {
2628
2632
  if (!targetBoss.skills.includes("吸血唾液")) return null;
2629
2633
  const bloodStacks = targetBoss.Skillcountpoints || 0;
2630
- let damageMultiplier = 0;
2634
+ let buffAmount = 0;
2635
+ let nerfAmount = 0;
2631
2636
  const messages = [];
2632
- if (targetBoss.skills.includes("吸血唾液")) {
2637
+ if (bloodStacks > 0) {
2633
2638
  const reduction = bloodStacks * 0.05;
2634
- damageMultiplier -= reduction;
2635
- if (bloodStacks > 0) {
2636
- messages.push(`🩸 【吸血唾液】生效:受到的伤害-${bloodStacks * 5}%`);
2637
- }
2639
+ nerfAmount += reduction;
2640
+ messages.push(`🩸 【吸血唾液】生效:受到的伤害-${(reduction * 100).toFixed(0)}%`);
2638
2641
  }
2639
2642
  if (targetBoss.skills.includes("嗜血狂暴") && currentHP / maxHP < 0.5) {
2640
- damageMultiplier -= 0.2;
2643
+ nerfAmount += 0.2;
2641
2644
  messages.push(`🔥 【嗜血狂暴】生效:进入狂暴状态,受到的伤害-20%`);
2642
2645
  }
2643
2646
  if (targetBoss.skills.includes("吐血") && bloodStacks < 1) {
2644
- damageMultiplier += 0.2;
2645
- messages.push(`💔 【吐血】生效:无“吸血”层数,受到的伤害+20%`);
2647
+ buffAmount += 0.2;
2648
+ messages.push(`💔 【吐血】生效:无"吸血"层数,受到的伤害+20%`);
2646
2649
  }
2647
- return { damageMultiplier, messages };
2650
+ if (buffAmount > 0 || nerfAmount > 0) {
2651
+ return {
2652
+ buffAmount,
2653
+ // 正值增伤系数
2654
+ nerfAmount,
2655
+ // 正值减伤系数
2656
+ messages
2657
+ };
2658
+ }
2659
+ return null;
2648
2660
  }, "handleBloodEffects"),
2649
2661
  handleBloodCount: /* @__PURE__ */ __name(async function(ctx, targetBoss, currentHP, maxHP) {
2650
2662
  if (!targetBoss.skills.includes("吸血唾液")) {
@@ -3377,19 +3389,30 @@ var PassiveHandler = {
3377
3389
  };
3378
3390
  }, "handlePulseDisruptor"),
3379
3391
  // === 星界之风 ===
3380
- handleStellarWind: /* @__PURE__ */ __name(async (ctx, targetBoss, initialDamage, activeBosses, bossGroup) => {
3392
+ handleStellarWind: /* @__PURE__ */ __name(async (ctx, targetBoss, initialDamage, maxHP, activeBosses, bossGroup) => {
3381
3393
  if (!targetBoss.skills.includes("星界之风") || initialDamage === 0) return null;
3382
- if (Math.random() * 100 < 5) {
3394
+ let baseChance = 5;
3395
+ const hasPsychicFrenzy = targetBoss.skills.includes("心灵狂热");
3396
+ const isInFrenzy = targetBoss.HP / maxHP < 0.5;
3397
+ if (hasPsychicFrenzy && isInFrenzy) {
3398
+ baseChance *= 2;
3399
+ }
3400
+ let lightbladeStacks = 0;
3401
+ if (targetBoss.skills.includes("闪电冲锋")) {
3402
+ lightbladeStacks = targetBoss?.Skillcountpoints || 0;
3403
+ }
3404
+ const triggerChance = baseChance + lightbladeStacks;
3405
+ if (Math.random() * 100 < triggerChance) {
3383
3406
  const groupMembers = activeBosses.filter(
3384
3407
  (b) => b.groupId === targetBoss.groupId && b.HP > 0
3385
3408
  );
3386
3409
  const updates = [];
3387
- const messages = ["🌠 【星界之风】生效:治疗所有存活异形500点血量"];
3410
+ const messages = [`🌠 【星界之风】生效:治疗所有存活异形200点血量`];
3388
3411
  for (const member of groupMembers) {
3389
- const maxHP = PassiveHandler.getMemberConfig(member.name, bossGroup)?.maxHP;
3390
- if (!maxHP) continue;
3391
- const healAmount = 500;
3392
- const newHP = Math.min(member.HP + healAmount, maxHP);
3412
+ const maxHP2 = PassiveHandler.getMemberConfig(member.name, bossGroup)?.maxHP;
3413
+ if (!maxHP2) continue;
3414
+ const healAmount = 200;
3415
+ const newHP = Math.min(member.HP + healAmount, maxHP2);
3393
3416
  updates.push(
3394
3417
  ctx.database.set(
3395
3418
  "ggcevo_boss",
@@ -3399,6 +3422,8 @@ var PassiveHandler = {
3399
3422
  );
3400
3423
  messages.push(`${member.name} +${healAmount}HP`);
3401
3424
  }
3425
+ if (hasPsychicFrenzy && isInFrenzy) {
3426
+ }
3402
3427
  await Promise.all(updates);
3403
3428
  return { messages };
3404
3429
  }
@@ -3409,8 +3434,11 @@ var PassiveHandler = {
3409
3434
  if (!targetBoss.skills.includes("心灵狂热")) return null;
3410
3435
  if (currentHP / maxHP < 0.5) {
3411
3436
  return {
3412
- damageMultiplier: -0.5,
3413
- messages: [`🌀 【心灵狂热】生效:进入心灵狂热状态,受到的伤害-50%`]
3437
+ damageMultiplier: -0.2,
3438
+ // 受到的伤害-20%
3439
+ messages: [
3440
+ `🌀 【心灵狂热】生效:进入心灵狂热状态,受到的伤害-20%`
3441
+ ]
3414
3442
  };
3415
3443
  }
3416
3444
  return null;
@@ -3424,25 +3452,30 @@ var PassiveHandler = {
3424
3452
  const energyToAdd = Math.min(initialDamage, availableSpace);
3425
3453
  const newEnergy = currentEnergy + energyToAdd;
3426
3454
  let healAmount = 0;
3455
+ let messages = [];
3456
+ if (energyToAdd > 0) {
3457
+ messages.push(`🌌 获得${energyToAdd}点能量`);
3458
+ }
3427
3459
  if (newEnergy >= maxEnergy) {
3428
3460
  const overflow = initialDamage - energyToAdd;
3429
3461
  if (overflow > 0) {
3430
3462
  const maxHP = PassiveHandler.getMemberConfig(targetBoss.name, bossGroup)?.maxHP || 0;
3431
3463
  if (maxHP > 0) {
3432
3464
  healAmount = Math.min(overflow, maxHP - targetBoss.HP);
3465
+ messages.push(`💫 能量溢出回复${healAmount}点生命值`);
3433
3466
  }
3434
3467
  }
3435
3468
  }
3469
+ if (energyToAdd === 0 && healAmount === 0) {
3470
+ return null;
3471
+ }
3436
3472
  await ctx.database.set(
3437
3473
  "ggcevo_boss",
3438
3474
  { name: targetBoss.name },
3439
3475
  { energy: newEnergy }
3440
3476
  );
3441
3477
  return {
3442
- messages: [
3443
- `🌌 【宇宙能量】生效:获得${energyToAdd}点能量`,
3444
- healAmount > 0 ? `💫 能量溢出,回复${healAmount}点生命值` : ""
3445
- ].filter(Boolean),
3478
+ messages: [`🌌 【宇宙能量】生效:${messages.join(",")}`],
3446
3479
  healAmount
3447
3480
  };
3448
3481
  }, "handleCosmicEnergy"),
@@ -3457,15 +3490,18 @@ var PassiveHandler = {
3457
3490
  { Skillcountpoints: newStacks }
3458
3491
  );
3459
3492
  return {
3460
- messages: [`✨ 【光影之刃】生效:获得1层光影之刃`]
3493
+ messages: [`✨ 【光影之刃】生效:获得1层“光影之刃”`]
3461
3494
  };
3462
3495
  }, "handleLightblade"),
3463
3496
  // === 远古预兆 ===
3464
3497
  handleAncientOmen: /* @__PURE__ */ __name(async (ctx, targetBoss) => {
3465
3498
  if (!targetBoss.skills.includes("远古预兆")) return null;
3466
- const lightbladeStacks = targetBoss.Skillcountpoints || 0;
3467
- const immuneChance = 5 + lightbladeStacks;
3468
- if (Math.random() * 100 < immuneChance) {
3499
+ let lightbladeStacks = 0;
3500
+ if (targetBoss.skills.includes("闪电冲锋")) {
3501
+ lightbladeStacks = targetBoss?.Skillcountpoints || 0;
3502
+ }
3503
+ const totalChance = 1 + lightbladeStacks;
3504
+ if (Math.random() * 100 < totalChance) {
3469
3505
  const maxEnergy = 1e3;
3470
3506
  const currentEnergy = targetBoss.energy || 0;
3471
3507
  const newEnergy = Math.min(currentEnergy + 100, maxEnergy);
@@ -3477,8 +3513,7 @@ var PassiveHandler = {
3477
3513
  return {
3478
3514
  immune: true,
3479
3515
  messages: [
3480
- `🔮 【远古预兆】生效:免疫此次伤害`,
3481
- `⚡ 回复100点能量`
3516
+ `🔮 【远古预兆】生效:免疫此次伤害,并且回复100点能量`
3482
3517
  ]
3483
3518
  };
3484
3519
  }
@@ -3490,25 +3525,41 @@ var PassiveHandler = {
3490
3525
  const maxEnergy = 1e3;
3491
3526
  const currentEnergy = targetBoss.energy || 0;
3492
3527
  const lightbladeStacks = targetBoss.Skillcountpoints || 0;
3528
+ let reduction = 0;
3529
+ let increase = 0;
3530
+ const effectParts = [];
3493
3531
  if (currentEnergy >= maxEnergy * 0.3) {
3494
- const reduction = lightbladeStacks * 0.05;
3495
- if (reduction > 0) {
3496
- return {
3497
- damageMultiplier: -reduction,
3498
- messages: [
3499
- `🚀 【超视距穿梭】生效:能量>30%`,
3500
- `🪞 当前${lightbladeStacks}层光影之刃,减伤${(reduction * 100).toFixed(0)}%`
3501
- ]
3502
- };
3532
+ const baseReduction = lightbladeStacks * 0.05;
3533
+ reduction += baseReduction;
3534
+ effectParts.push(`能量≥30%:减伤${(baseReduction * 100).toFixed(0)}%`);
3535
+ if (currentEnergy >= maxEnergy * 0.6) {
3536
+ const bonusReduction = lightbladeStacks * 0.05;
3537
+ reduction += bonusReduction;
3538
+ effectParts.push(`能量≥60%:额外减伤${(bonusReduction * 100).toFixed(0)}%`);
3503
3539
  }
3504
3540
  }
3541
+ if (currentEnergy <= maxEnergy * 0.1) {
3542
+ increase = lightbladeStacks * 0.05;
3543
+ effectParts.push(`能量≤10%:增伤${(increase * 100).toFixed(0)}%`);
3544
+ }
3545
+ if (reduction > 0 || increase > 0) {
3546
+ const effectDescription = effectParts.join(",");
3547
+ return {
3548
+ reduction,
3549
+ // 返沪减伤系数(正值)
3550
+ increase,
3551
+ // 返沪增伤系数(正值)
3552
+ messages: [
3553
+ `🚀 【超视距穿梭】生效:${effectDescription}(当前${lightbladeStacks}层光影之刃)`
3554
+ ]
3555
+ };
3556
+ }
3505
3557
  return null;
3506
3558
  }, "handleHyperspaceSkip"),
3507
3559
  // === 复苏 ===
3508
3560
  handleRevival: /* @__PURE__ */ __name(async function(ctx, targetBoss, currentHP, maxHP) {
3509
3561
  if (!targetBoss.skills.includes("复苏") || currentHP > 0) return null;
3510
- const healAmount = Math.floor(maxHP * 0.5);
3511
- const updatedHP = Math.min(currentHP + healAmount, maxHP);
3562
+ const updatedHP = maxHP;
3512
3563
  const maxEnergy = 1e3;
3513
3564
  let newSkills = targetBoss.skills;
3514
3565
  if (!newSkills.includes("灵能构造炉")) {
@@ -3527,9 +3578,7 @@ var PassiveHandler = {
3527
3578
  return {
3528
3579
  updatedHP,
3529
3580
  messages: [
3530
- `🔥 【复苏】生效:免于死亡,回复50%最大生命值`,
3531
- `⚡ 能量回复为100%`,
3532
- `获得新技能【灵能构造炉】`
3581
+ `🔥 【复苏】生效:免于死亡,回复自身100%的最大生命值和100%的“能量”,并且获得新技能【灵能构造炉】`
3533
3582
  ]
3534
3583
  };
3535
3584
  }, "handleRevival"),
@@ -3547,13 +3596,16 @@ var PassiveHandler = {
3547
3596
  );
3548
3597
  return {
3549
3598
  messages: [
3550
- `⚙️ 【灵能构造炉】生效:所有技能已获取完毕,该技能已移除`
3599
+ `⚙️ 【灵能构造炉】生效:所有技能已获取完毕,此技能已移除`
3551
3600
  ]
3552
3601
  };
3553
3602
  }
3554
- const lightbladeStacks = targetBoss.Skillcountpoints || 0;
3555
- const triggerChance = 5 + lightbladeStacks;
3556
- if (Math.random() * 100 < triggerChance) {
3603
+ let lightbladeStacks = 0;
3604
+ if (targetBoss.skills.includes("闪电冲锋")) {
3605
+ lightbladeStacks = targetBoss.Skillcountpoints || 0;
3606
+ }
3607
+ const totalChance = 5 + lightbladeStacks;
3608
+ if (Math.random() * 100 < totalChance) {
3557
3609
  const availableSkills = allSkills.filter(
3558
3610
  (skill) => !targetBoss.skills.includes(skill)
3559
3611
  );
@@ -3567,14 +3619,13 @@ var PassiveHandler = {
3567
3619
  );
3568
3620
  return {
3569
3621
  messages: [
3570
- `⚙️ 【灵能构造炉】生效:获得新技能【${randomSkill}】`,
3571
- `剩余可获取技能:${availableSkills.length - 1}/${allSkills.length}`
3622
+ `⚙️ 【灵能构造炉】生效:获得新技能【${randomSkill}】`
3572
3623
  ]
3573
3624
  };
3574
3625
  }
3575
3626
  return null;
3576
3627
  }, "handleConstructor"),
3577
- // === 天启超载护盾 ===
3628
+ // 修改后 - 移除了层数清零操作
3578
3629
  handleTyrsShield: /* @__PURE__ */ __name(async function(ctx, targetBoss, activeBosses, bossGroup) {
3579
3630
  if (!targetBoss.skills.includes("天启超载护盾")) return null;
3580
3631
  const lightbladeStacks = targetBoss.Skillcountpoints || 0;
@@ -3584,11 +3635,11 @@ var PassiveHandler = {
3584
3635
  const groupMembers = activeBosses.filter(
3585
3636
  (b) => b.groupId === targetBoss.groupId && b.HP > 0
3586
3637
  );
3587
- const healAmount = lightbladeStacks * 100;
3638
+ const healAmount = lightbladeStacks * 50;
3588
3639
  const updates = [];
3589
- const messages = [`🛡️ 【天启超载护盾】生效:消耗${lightbladeStacks}层光影之刃,治疗所有存活异形`];
3640
+ const messages = [`🛡️ 【天启超载护盾】生效:治疗所有存活异形`];
3590
3641
  for (const member of groupMembers) {
3591
- const maxHP = (await this.getMemberConfig(member.name, bossGroup))?.maxHP;
3642
+ const maxHP = this.getMemberConfig(member.name, bossGroup)?.maxHP;
3592
3643
  if (!maxHP) continue;
3593
3644
  const heal = Math.min(healAmount, maxHP - member.HP);
3594
3645
  if (heal > 0) {
@@ -3603,15 +3654,11 @@ var PassiveHandler = {
3603
3654
  messages.push(`${member.name} +${heal}HP`);
3604
3655
  }
3605
3656
  }
3606
- updates.push(
3607
- ctx.database.set(
3608
- "ggcevo_boss",
3609
- { name: targetBoss.name },
3610
- { Skillcountpoints: 0 }
3611
- )
3612
- );
3613
3657
  await Promise.all(updates);
3614
- return { messages };
3658
+ return {
3659
+ messages
3660
+ // 不再清除层数
3661
+ };
3615
3662
  }
3616
3663
  return null;
3617
3664
  }, "handleTyrsShield"),
@@ -3648,19 +3695,18 @@ var PassiveHandler = {
3648
3695
  { name: targetBoss.name },
3649
3696
  { skills: newSkills }
3650
3697
  );
3651
- messages.push(`💣 【地毯式轰炸】生效:移除孤立无援技能`);
3698
+ messages.push(`🔥 【地毯式轰炸】生效:移除“孤立无援”`);
3652
3699
  } else {
3653
- messages.push(`💣 【地毯式轰炸】生效:`);
3654
3700
  }
3655
3701
  damageMultiplier = -0.5;
3656
- messages.push(`🔥 我心中的怒火胜过千万个太阳!受到的伤害-50%`);
3702
+ messages.push(`🔥 【地毯式轰炸】生效:我心中的怒火胜过千万个太阳!受到的伤害-50%`);
3657
3703
  }
3658
3704
  return {
3659
3705
  messages,
3660
3706
  damageMultiplier
3661
3707
  };
3662
3708
  }, "handleCarpetBombing"),
3663
- // === 轰炸引导 ===
3709
+ // 修改后 - 移除了层数清零操作
3664
3710
  handleBombardmentGuidance: /* @__PURE__ */ __name(async function(ctx, targetBoss) {
3665
3711
  if (!targetBoss.skills.includes("轰炸引导")) return null;
3666
3712
  const lightbladeStacks = targetBoss.Skillcountpoints || 0;
@@ -3674,15 +3720,11 @@ var PassiveHandler = {
3674
3720
  await ctx.database.set(
3675
3721
  "ggcevo_boss",
3676
3722
  { name: targetBoss.name },
3677
- {
3678
- energy: newEnergy,
3679
- Skillcountpoints: 0
3680
- }
3723
+ { energy: newEnergy }
3681
3724
  );
3682
3725
  return {
3683
3726
  messages: [
3684
- `🎯 【轰炸引导】生效:消耗${lightbladeStacks}层光影之刃`,
3685
- `⚡ 回复${energyGain}点能量`
3727
+ `🎯 【轰炸引导】生效:回复${energyGain}点能量`
3686
3728
  ]
3687
3729
  };
3688
3730
  }
@@ -3815,7 +3857,12 @@ var PassiveHandler = {
3815
3857
  }
3816
3858
  const bloodEffect = this.handleBloodEffects(targetBoss, currentHP, maxHP);
3817
3859
  if (bloodEffect) {
3818
- nerfMultiplier += bloodEffect.damageMultiplier;
3860
+ if (bloodEffect.buffAmount > 0) {
3861
+ buffMultiplier += bloodEffect.buffAmount;
3862
+ }
3863
+ if (bloodEffect.nerfAmount > 0) {
3864
+ nerfMultiplier -= bloodEffect.nerfAmount;
3865
+ }
3819
3866
  messages.push(...bloodEffect.messages);
3820
3867
  }
3821
3868
  const siphonResult = this.handleEnergySiphon(targetBoss, currentHP, maxHP);
@@ -3859,7 +3906,12 @@ var PassiveHandler = {
3859
3906
  }
3860
3907
  const hyperspaceResult = this.handleHyperspaceSkip(targetBoss);
3861
3908
  if (hyperspaceResult) {
3862
- nerfMultiplier += hyperspaceResult.damageMultiplier;
3909
+ if (hyperspaceResult.reduction > 0) {
3910
+ nerfMultiplier -= hyperspaceResult.reduction;
3911
+ }
3912
+ if (hyperspaceResult.increase > 0) {
3913
+ buffMultiplier += hyperspaceResult.increase;
3914
+ }
3863
3915
  messages.push(...hyperspaceResult.messages);
3864
3916
  }
3865
3917
  const frenzyResult = this.handlePsychicFrenzy(targetBoss, currentHP, maxHP);
@@ -3972,7 +4024,7 @@ var PassiveHandler = {
3972
4024
  }
3973
4025
  }
3974
4026
  }
3975
- const stellarWindResult = await this.handleStellarWind(ctx, targetBoss, initialDamage, activeBosses, bossGroup);
4027
+ const stellarWindResult = await this.handleStellarWind(ctx, targetBoss, initialDamage, maxHP, activeBosses, bossGroup);
3976
4028
  if (stellarWindResult) {
3977
4029
  messages.push(...stellarWindResult.messages);
3978
4030
  }
@@ -3980,13 +4032,6 @@ var PassiveHandler = {
3980
4032
  if (shieldResult) {
3981
4033
  messages.push(...shieldResult.messages);
3982
4034
  }
3983
- const cosmicResult = await this.handleCosmicEnergy(ctx, targetBoss, finalDamage, bossGroup);
3984
- if (cosmicResult) {
3985
- messages.push(...cosmicResult.messages);
3986
- if (cosmicResult.healAmount > 0) {
3987
- currentHP = Math.min(targetBoss.HP + cosmicResult.healAmount, maxHP);
3988
- }
3989
- }
3990
4035
  const survivalResult = this.handleSurvivalInstinct(targetBoss, currentHP, maxHP);
3991
4036
  if (survivalResult) {
3992
4037
  currentHP = survivalResult.updatedHP;
@@ -4014,10 +4059,6 @@ var PassiveHandler = {
4014
4059
  if (arcRifleResult) {
4015
4060
  messages.push(...arcRifleResult.messages);
4016
4061
  }
4017
- const constructorResult = await this.handleConstructor(ctx, targetBoss);
4018
- if (constructorResult) {
4019
- messages.push(...constructorResult.messages);
4020
- }
4021
4062
  const coldAdaptResult = await this.handleColdAdaptation(ctx, targetBoss, weaponName);
4022
4063
  if (coldAdaptResult) {
4023
4064
  messages.push(...coldAdaptResult.messages);
@@ -4039,14 +4080,21 @@ var PassiveHandler = {
4039
4080
  if (CollapsepulseResult) {
4040
4081
  messages.push(...CollapsepulseResult.messages);
4041
4082
  }
4042
- const tagChangeResult = await this.handleConductorTagChange(ctx, targetBoss, currentHP, maxHP);
4043
- if (tagChangeResult) {
4044
- messages.push(...tagChangeResult.messages);
4083
+ const bileStackResult = await this.handleBileStacking(ctx, targetBoss, skipBileStacking);
4084
+ if (bileStackResult) {
4085
+ messages.push(...bileStackResult.messages);
4045
4086
  }
4046
4087
  const shockwaveResult = await this.handleEnergyShockwave(ctx, targetBoss);
4047
4088
  if (shockwaveResult) {
4048
4089
  messages.push(...shockwaveResult.messages);
4049
4090
  }
4091
+ const cosmicResult = await this.handleCosmicEnergy(ctx, targetBoss, finalDamage, bossGroup);
4092
+ if (cosmicResult) {
4093
+ messages.push(...cosmicResult.messages);
4094
+ if (cosmicResult.healAmount > 0) {
4095
+ currentHP = Math.min(targetBoss.HP + cosmicResult.healAmount, maxHP);
4096
+ }
4097
+ }
4050
4098
  const guidanceResult = await this.handleBombardmentGuidance(ctx, targetBoss);
4051
4099
  if (guidanceResult) {
4052
4100
  messages.push(...guidanceResult.messages);
@@ -4056,15 +4104,19 @@ var PassiveHandler = {
4056
4104
  messages.push(...gammaRadResult.messages);
4057
4105
  radiationApplied = gammaRadResult.radiationApplied;
4058
4106
  }
4059
- const bileStackResult = await this.handleBileStacking(ctx, targetBoss, skipBileStacking);
4060
- if (bileStackResult) {
4061
- messages.push(...bileStackResult.messages);
4062
- }
4063
4107
  const coldEffectResult = await this.handleColdEffect(ctx, targetBoss, weaponName);
4064
4108
  if (coldEffectResult) {
4065
4109
  messages.push(...coldEffectResult.messages);
4066
4110
  freezing = coldEffectResult.freezing;
4067
4111
  }
4112
+ const tagChangeResult = await this.handleConductorTagChange(ctx, targetBoss, currentHP, maxHP);
4113
+ if (tagChangeResult) {
4114
+ messages.push(...tagChangeResult.messages);
4115
+ }
4116
+ const constructorResult = await this.handleConstructor(ctx, targetBoss);
4117
+ if (constructorResult) {
4118
+ messages.push(...constructorResult.messages);
4119
+ }
4068
4120
  return {
4069
4121
  currentHP,
4070
4122
  messages,
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.27",
4
+ "version": "1.4.28",
5
5
  "main": "lib/index.js",
6
6
  "typings": "lib/index.d.ts",
7
7
  "files": [