koishi-plugin-ggcevo-game 1.4.26 → 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.
@@ -164,4 +164,22 @@ export declare const bossPool: readonly [{
164
164
  tags: ("生物" | "异形")[];
165
165
  passive: ("弱化形态" | "猎手异形" | "狂暴" | "伪装")[];
166
166
  }[];
167
+ }, {
168
+ main: {
169
+ id: number;
170
+ name: string;
171
+ type: "主宰";
172
+ maxHP: number;
173
+ energy: number;
174
+ tags: ("重甲" | "护盾" | "生物" | "灵能" | "异形")[];
175
+ passive: ("星界之风" | "宇宙能量" | "复苏" | "光影之刃" | "远古预兆" | "闪电冲锋" | "超视距穿梭")[];
176
+ };
177
+ minions: {
178
+ name: string;
179
+ type: "子代";
180
+ maxHP: number;
181
+ energy: number;
182
+ tags: ("重甲" | "护盾" | "生物" | "灵能" | "异形")[];
183
+ passive: ("弱化形态" | "星界之风" | "心灵狂热")[];
184
+ }[];
167
185
  }];
@@ -97,11 +97,11 @@ 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;
104
- readonly description: "当“能量”≥10%的时候,每次受到攻击有55%的概率免疫此次伤害(无法免疫寒冷伤害); 每拥有一层“寒冷”则降低5%的概率";
104
+ readonly description: "当“能量”≥30%的时候,每次受到攻击有55%的概率免疫此次伤害(无法免疫寒冷伤害); 每拥有一层“寒冷”则降低5%的概率";
105
105
  };
106
106
  readonly 电能冲击波: {
107
107
  readonly effect: 0;
@@ -109,7 +109,7 @@ export declare const passiveConfig: {
109
109
  };
110
110
  readonly 脉冲: {
111
111
  readonly effect: 0;
112
- readonly description: "当“能量”≥10%的时候,每次受到攻击有60%的概率回复所有存活的异形100点血量; 每拥有一层“寒冷”则降低5%的概率";
112
+ readonly description: "当“能量”≥30%的时候,每次受到攻击有60%的概率回复所有存活的异形100点血量; 每拥有一层“寒冷”则降低5%的概率";
113
113
  };
114
114
  readonly 能量黑洞: {
115
115
  readonly effect: -0.2;
@@ -163,4 +163,56 @@ export declare const passiveConfig: {
163
163
  readonly effect: 0;
164
164
  readonly description: "受到伤害时,有5%的概率免疫此次伤害";
165
165
  };
166
+ readonly 星界之风: {
167
+ readonly effect: 0;
168
+ readonly description: "受到伤害时,有5%的概率回复所有存活异形200点血量";
169
+ };
170
+ readonly 心灵狂热: {
171
+ readonly effect: 0;
172
+ readonly description: "当血量低于50%时,进入心灵狂热状态,受到的伤害-20%,并且触发“星界之风”技能的概率翻倍";
173
+ };
174
+ readonly 宇宙能量: {
175
+ readonly effect: 0;
176
+ readonly description: "受到攻击时回复与该攻击伤害等额的“能量”; 若“能量”已满,则回复与该攻击伤害等额的血量";
177
+ };
178
+ readonly 复苏: {
179
+ readonly effect: 0;
180
+ readonly description: "受到致命伤害时,免于死亡,快速回复自身100%的最大生命值和100%的“能量”,并且获得“灵能构造炉”技能(触发后移除)";
181
+ };
182
+ readonly 光影之刃: {
183
+ readonly effect: 0;
184
+ readonly description: "受到伤害后,获得一层“光影之刃”";
185
+ };
186
+ readonly 远古预兆: {
187
+ readonly effect: 0;
188
+ readonly description: "受到伤害时,有1%的概率免疫此次伤害并且回复100点“能量”";
189
+ };
190
+ readonly 闪电冲锋: {
191
+ readonly effect: 0;
192
+ readonly description: "每层“光影之刃”使触发“星界之风”,“远古预兆”和“灵能构造炉”技能的概率+1%";
193
+ };
194
+ readonly 超视距穿梭: {
195
+ readonly effect: 0;
196
+ readonly description: "当“能量”≥30%时,每层“光影之刃”使受到的伤害-5%; 当“能量”≥60%时,每层“光影之刃”使受到的伤害-10%; 当“能量”≤10%时,每层“光影之刃”使受到的伤害+5%";
197
+ };
198
+ readonly 灵能构造炉: {
199
+ readonly effect: 0;
200
+ readonly description: "受到攻击后,有5%的概率会随机获得以下4个技能之一(天启超载护盾,塌缩脉冲,地毯式轰炸,轰炸引导)";
201
+ };
202
+ readonly 天启超载护盾: {
203
+ readonly effect: 0;
204
+ readonly description: "受到伤害后,有10%的概率回复所有存活异形X点血量(X为“光影之刃”层数 x 50)";
205
+ };
206
+ readonly 塌缩脉冲: {
207
+ readonly effect: 0;
208
+ readonly description: "受到伤害后,额外获得一层“光影之刃”";
209
+ };
210
+ readonly 地毯式轰炸: {
211
+ readonly effect: 0;
212
+ readonly description: "我心中的怒火胜过千万个太阳!移除自身的“孤立无援”,并使受到的伤害-50%";
213
+ };
214
+ readonly 轰炸引导: {
215
+ readonly effect: 0;
216
+ readonly description: "受到伤害后,有10%的概率概率回复自身X点“能量”(X为“光影之刃”层数 x 100)";
217
+ };
166
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,6 +182,49 @@ export declare const PassiveHandler: {
181
182
  handlePulseDisruptor: (ctx: Context, targetBoss: any, weaponName: string) => Promise<{
182
183
  messages: string[];
183
184
  }>;
185
+ handleStellarWind: (ctx: Context, targetBoss: any, initialDamage: number, maxHP: number, activeBosses: any[], bossGroup: BossPoolItem) => Promise<{
186
+ messages: string[];
187
+ }>;
188
+ handlePsychicFrenzy: (targetBoss: any, currentHP: number, maxHP: number) => {
189
+ damageMultiplier: number;
190
+ messages: string[];
191
+ };
192
+ handleCosmicEnergy: (ctx: Context, targetBoss: any, initialDamage: number, bossGroup: any) => Promise<{
193
+ messages: string[];
194
+ healAmount: number;
195
+ }>;
196
+ handleLightblade: (ctx: Context, targetBoss: any) => Promise<{
197
+ messages: string[];
198
+ }>;
199
+ handleAncientOmen: (ctx: Context, targetBoss: any) => Promise<{
200
+ immune: boolean;
201
+ messages: string[];
202
+ }>;
203
+ handleHyperspaceSkip: (targetBoss: any) => {
204
+ reduction: number;
205
+ increase: number;
206
+ messages: string[];
207
+ };
208
+ handleRevival: (ctx: Context, targetBoss: any, currentHP: number, maxHP: number) => Promise<{
209
+ updatedHP: number;
210
+ messages: string[];
211
+ }>;
212
+ handleConstructor: (ctx: Context, targetBoss: any) => Promise<{
213
+ messages: string[];
214
+ }>;
215
+ handleTyrsShield: (ctx: Context, targetBoss: any, activeBosses: any[], bossGroup: BossPoolItem) => Promise<{
216
+ messages: string[];
217
+ }>;
218
+ handleCollapsePulse: (ctx: Context, targetBoss: any) => Promise<{
219
+ messages: string[];
220
+ }>;
221
+ handleCarpetBombing: (ctx: Context, targetBoss: any) => Promise<{
222
+ messages: string[];
223
+ damageMultiplier: number;
224
+ }>;
225
+ handleBombardmentGuidance: (ctx: Context, targetBoss: any) => Promise<{
226
+ messages: string[];
227
+ }>;
184
228
  handlePassives: (ctx: Context, handle: string, targetBoss: any, initialDamage: number, currentHP: number, maxHP: number, weaponName: string, weaponData: any, bossGroup: any) => Promise<{
185
229
  currentHP: any;
186
230
  messages: any;
package/lib/index.js CHANGED
@@ -437,7 +437,7 @@ var SyndicatedItems = {
437
437
  price: 75,
438
438
  redCrystalCost: 0,
439
439
  condition: "目标无建筑标签和重型标签",
440
- effects: "重置目标的技能计数"
440
+ effects: "使目标的技能层数减少10层"
441
441
  },
442
442
  "CRED-17": {
443
443
  id: 3,
@@ -1231,6 +1231,27 @@ var bossPool = [
1231
1231
  passive: asPassives(["弱化形态", "猎手异形", "狂暴", "伪装"])
1232
1232
  }
1233
1233
  ]
1234
+ }),
1235
+ defineBoss({
1236
+ main: {
1237
+ id: 9,
1238
+ name: "宇宙界主",
1239
+ type: "主宰",
1240
+ maxHP: 2e4,
1241
+ energy: 1e3,
1242
+ tags: asBossTags(["重甲", "护盾", "生物", "灵能", "异形"]),
1243
+ passive: asPassives(["宇宙能量", "复苏", "光影之刃", "闪电冲锋", "远古预兆", "星界之风", "超视距穿梭"])
1244
+ },
1245
+ minions: [
1246
+ {
1247
+ name: "宇宙战将",
1248
+ type: "子代",
1249
+ maxHP: 5e3,
1250
+ energy: 0,
1251
+ tags: asBossTags(["重甲", "护盾", "生物", "灵能", "异形"]),
1252
+ passive: asPassives(["弱化形态", "心灵狂热", "星界之风"])
1253
+ }
1254
+ ]
1234
1255
  })
1235
1256
  ];
1236
1257
 
@@ -1334,11 +1355,11 @@ var passiveConfig = {
1334
1355
  },
1335
1356
  "能源虹吸": {
1336
1357
  effect: 0,
1337
- description: "拥有独特的“能量”机制。当“能量”≥80%的时候,受到的伤害-50%; 当“能量”≥50%的时候,受到的伤害-30%"
1358
+ description: "当“能量”≥80%的时候,受到的伤害-50%; 当“能量”≥50%的时候,受到的伤害-30%"
1338
1359
  },
1339
1360
  "电能立场": {
1340
1361
  effect: 0,
1341
- description: "当“能量”≥10%的时候,每次受到攻击有55%的概率免疫此次伤害(无法免疫寒冷伤害); 每拥有一层“寒冷”则降低5%的概率"
1362
+ description: "当“能量”≥30%的时候,每次受到攻击有55%的概率免疫此次伤害(无法免疫寒冷伤害); 每拥有一层“寒冷”则降低5%的概率"
1342
1363
  },
1343
1364
  "电能冲击波": {
1344
1365
  effect: 0,
@@ -1346,7 +1367,7 @@ var passiveConfig = {
1346
1367
  },
1347
1368
  "脉冲": {
1348
1369
  effect: 0,
1349
- description: "当“能量”≥10%的时候,每次受到攻击有60%的概率回复所有存活的异形100点血量; 每拥有一层“寒冷”则降低5%的概率"
1370
+ description: "当“能量”≥30%的时候,每次受到攻击有60%的概率回复所有存活的异形100点血量; 每拥有一层“寒冷”则降低5%的概率"
1350
1371
  },
1351
1372
  "能量黑洞": {
1352
1373
  effect: -0.2,
@@ -1399,6 +1420,58 @@ var passiveConfig = {
1399
1420
  "致命一击": {
1400
1421
  effect: 0,
1401
1422
  description: "受到伤害时,有5%的概率免疫此次伤害"
1423
+ },
1424
+ "星界之风": {
1425
+ effect: 0,
1426
+ description: "受到伤害时,有5%的概率回复所有存活异形200点血量"
1427
+ },
1428
+ "心灵狂热": {
1429
+ effect: 0,
1430
+ description: "当血量低于50%时,进入心灵狂热状态,受到的伤害-20%,并且触发“星界之风”技能的概率翻倍"
1431
+ },
1432
+ "宇宙能量": {
1433
+ effect: 0,
1434
+ description: "受到攻击时回复与该攻击伤害等额的“能量”; 若“能量”已满,则回复与该攻击伤害等额的血量"
1435
+ },
1436
+ "复苏": {
1437
+ effect: 0,
1438
+ description: "受到致命伤害时,免于死亡,快速回复自身100%的最大生命值和100%的“能量”,并且获得“灵能构造炉”技能(触发后移除)"
1439
+ },
1440
+ "光影之刃": {
1441
+ effect: 0,
1442
+ description: "受到伤害后,获得一层“光影之刃”"
1443
+ },
1444
+ "远古预兆": {
1445
+ effect: 0,
1446
+ description: "受到伤害时,有1%的概率免疫此次伤害并且回复100点“能量”"
1447
+ },
1448
+ "闪电冲锋": {
1449
+ effect: 0,
1450
+ description: "每层“光影之刃”使触发“星界之风”,“远古预兆”和“灵能构造炉”技能的概率+1%"
1451
+ },
1452
+ "超视距穿梭": {
1453
+ effect: 0,
1454
+ description: "当“能量”≥30%时,每层“光影之刃”使受到的伤害-5%; 当“能量”≥60%时,每层“光影之刃”使受到的伤害-10%; 当“能量”≤10%时,每层“光影之刃”使受到的伤害+5%"
1455
+ },
1456
+ "灵能构造炉": {
1457
+ effect: 0,
1458
+ description: "受到攻击后,有5%的概率会随机获得以下4个技能之一(天启超载护盾,塌缩脉冲,地毯式轰炸,轰炸引导)"
1459
+ },
1460
+ "天启超载护盾": {
1461
+ effect: 0,
1462
+ description: "受到伤害后,有10%的概率回复所有存活异形X点血量(X为“光影之刃”层数 x 50)"
1463
+ },
1464
+ "塌缩脉冲": {
1465
+ effect: 0,
1466
+ description: "受到伤害后,额外获得一层“光影之刃”"
1467
+ },
1468
+ "地毯式轰炸": {
1469
+ effect: 0,
1470
+ description: "我心中的怒火胜过千万个太阳!移除自身的“孤立无援”,并使受到的伤害-50%"
1471
+ },
1472
+ "轰炸引导": {
1473
+ effect: 0,
1474
+ description: "受到伤害后,有10%的概率概率回复自身X点“能量”(X为“光影之刃”层数 x 100)"
1402
1475
  }
1403
1476
  };
1404
1477
 
@@ -1570,28 +1643,28 @@ async function calculateCareerAdditive(ctx, handle, weaponType, weaponId) {
1570
1643
  let message = "";
1571
1644
  if (careerData?.career === "警卫长") {
1572
1645
  value += 0.05;
1573
- message = "⚔️ 警卫长:攻击伤害+5%";
1646
+ message = "⚔️ 警卫长职业:攻击伤害+5%";
1574
1647
  }
1575
1648
  if (careerData?.career === "武器中士") {
1576
1649
  value += 0.15;
1577
- message = "⚔️ 武器中士:攻击伤害+15%";
1650
+ message = "⚔️ 武器中士职业:攻击伤害+15%";
1578
1651
  }
1579
1652
  if (careerData?.career === "能量武器专家") {
1580
1653
  if (weaponType === "能量武器") {
1581
1654
  value += 0.2;
1582
- message = "⚔️ 能量武器专家:能量武器攻击伤害+20%";
1655
+ message = "⚔️ 能量武器专家职业:能量武器攻击伤害+20%";
1583
1656
  }
1584
1657
  }
1585
1658
  if (careerData?.career === "纵火狂") {
1586
1659
  if (weaponType === "热能武器") {
1587
1660
  value += 0.2;
1588
- message = "⚔️ 纵火狂:热能武器攻击伤害+20%";
1661
+ message = "⚔️ 纵火狂职业:热能武器攻击伤害+20%";
1589
1662
  }
1590
1663
  }
1591
1664
  if (careerData?.career === "猩红杀手") {
1592
1665
  if (weaponId === 7) {
1593
1666
  value += 0.15;
1594
- message = "⚔️ 猩红杀手:侦察步枪攻击伤害+15%";
1667
+ message = "⚔️ 猩红杀手职业:侦察步枪攻击伤害+15%";
1595
1668
  }
1596
1669
  }
1597
1670
  return { value, message };
@@ -1608,7 +1681,7 @@ async function calculateWishAdditive(ctx, handle, weapon) {
1608
1681
  });
1609
1682
  if (sovereign) {
1610
1683
  value += 0.1;
1611
- messages.push("👑 王权增幅:攻击伤害+10%");
1684
+ messages.push("👑 王权增幅祈愿:攻击伤害+10%");
1612
1685
  }
1613
1686
  const [lament] = await ctx.database.get("ggcevo_Wish_Record", {
1614
1687
  handle,
@@ -1619,7 +1692,7 @@ async function calculateWishAdditive(ctx, handle, weapon) {
1619
1692
  if (lament) {
1620
1693
  const levelBonus = 0.1 * (weapon.level + 1);
1621
1694
  value += levelBonus;
1622
- messages.push(`🗡️ 悲鸣之锋:攻击伤害+${Math.round(levelBonus * 100)}%`);
1695
+ messages.push(`🗡️ 悲鸣之锋祈愿:攻击伤害+${Math.round(levelBonus * 100)}%`);
1623
1696
  }
1624
1697
  const [critRhythm] = await ctx.database.get("ggcevo_Wish_Record", {
1625
1698
  handle,
@@ -1628,7 +1701,7 @@ async function calculateWishAdditive(ctx, handle, weapon) {
1628
1701
  endTime: { $gte: /* @__PURE__ */ new Date() }
1629
1702
  });
1630
1703
  if (critRhythm) {
1631
- messages.push("🎵 暴击韵律:攻击暴击率+20%");
1704
+ messages.push("🎵 暴击韵律祈愿:攻击暴击率+20%");
1632
1705
  }
1633
1706
  return {
1634
1707
  value,
@@ -1920,18 +1993,33 @@ async function applyItemEffect(ctx, session, handle, itemConfig2, target) {
1920
1993
  name: target,
1921
1994
  isActive: true
1922
1995
  });
1923
- if (!targetboss || targetboss?.Skillcountpoints === 0 || targetboss?.tags.includes("建筑") || targetboss?.tags.includes("重型")) return {
1996
+ if (!targetboss) return {
1924
1997
  success: false,
1925
- message: "您无法对目标使用(目标已死亡/目标的技能计数为0/目标拥有“建筑”或“重型”标签)。"
1998
+ message: "无法找到指定的目标。"
1926
1999
  };
2000
+ if (targetboss.tags.includes("建筑") || targetboss.tags.includes("重型")) {
2001
+ return {
2002
+ success: false,
2003
+ message: `目标${target}拥有"${targetboss.tags.includes("建筑") ? "建筑" : "重型"}"标签,无法使用此物品。`
2004
+ };
2005
+ }
2006
+ const currentCount = targetboss.Skillcountpoints || 0;
2007
+ if (currentCount <= 0) {
2008
+ return {
2009
+ success: false,
2010
+ message: `目标${target}的技能层数已为0,无需使用此物品。`
2011
+ };
2012
+ }
2013
+ const newCount = Math.max(0, currentCount - 10);
2014
+ const reducedAmount = currentCount - newCount;
1927
2015
  await ctx.database.set(
1928
2016
  "ggcevo_boss",
1929
2017
  { name: target },
1930
- { Skillcountpoints: 0 }
2018
+ { Skillcountpoints: newCount }
1931
2019
  );
1932
2020
  return {
1933
2021
  success: true,
1934
- message: `成功使用${itemName},已重置${target}的技能计数。`
2022
+ message: `成功使用${itemName},使${target}的技能层数减少${reducedAmount}层(当前:${newCount}层)。`
1935
2023
  };
1936
2024
  }
1937
2025
  if (itemConfig2.id === 3 || itemConfig2.id === 5) {
@@ -1951,7 +2039,7 @@ async function applyItemEffect(ctx, session, handle, itemConfig2, target) {
1951
2039
  });
1952
2040
  if (!targetboss || targetboss?.energy === 0) return {
1953
2041
  success: false,
1954
- message: "您无法对目标使用(目标的能量为0)。"
2042
+ message: "您无法对没有能量的目标使用。"
1955
2043
  };
1956
2044
  await ctx.database.set(
1957
2045
  "ggcevo_boss",
@@ -2539,28 +2627,36 @@ var PassiveHandler = {
2539
2627
  messages: [`🛡️ 【结构装甲】生效:${msg}`]
2540
2628
  };
2541
2629
  }, "handleStructuralArmor"),
2542
- // 吸血效果处理(返回综合系数)
2630
+ // 修改 handleBloodEffects 函数
2543
2631
  handleBloodEffects: /* @__PURE__ */ __name(function(targetBoss, currentHP, maxHP) {
2544
2632
  if (!targetBoss.skills.includes("吸血唾液")) return null;
2545
2633
  const bloodStacks = targetBoss.Skillcountpoints || 0;
2546
- let damageMultiplier = 0;
2634
+ let buffAmount = 0;
2635
+ let nerfAmount = 0;
2547
2636
  const messages = [];
2548
- if (targetBoss.skills.includes("吸血唾液")) {
2637
+ if (bloodStacks > 0) {
2549
2638
  const reduction = bloodStacks * 0.05;
2550
- damageMultiplier -= reduction;
2551
- if (bloodStacks > 0) {
2552
- messages.push(`🩸 【吸血唾液】生效:受到的伤害-${bloodStacks * 5}%`);
2553
- }
2639
+ nerfAmount += reduction;
2640
+ messages.push(`🩸 【吸血唾液】生效:受到的伤害-${(reduction * 100).toFixed(0)}%`);
2554
2641
  }
2555
2642
  if (targetBoss.skills.includes("嗜血狂暴") && currentHP / maxHP < 0.5) {
2556
- damageMultiplier -= 0.2;
2643
+ nerfAmount += 0.2;
2557
2644
  messages.push(`🔥 【嗜血狂暴】生效:进入狂暴状态,受到的伤害-20%`);
2558
2645
  }
2559
2646
  if (targetBoss.skills.includes("吐血") && bloodStacks < 1) {
2560
- damageMultiplier += 0.2;
2561
- messages.push(`💔 【吐血】生效:无“吸血”层数,受到的伤害+20%`);
2647
+ buffAmount += 0.2;
2648
+ messages.push(`💔 【吐血】生效:无"吸血"层数,受到的伤害+20%`);
2562
2649
  }
2563
- return { damageMultiplier, messages };
2650
+ if (buffAmount > 0 || nerfAmount > 0) {
2651
+ return {
2652
+ buffAmount,
2653
+ // 正值增伤系数
2654
+ nerfAmount,
2655
+ // 正值减伤系数
2656
+ messages
2657
+ };
2658
+ }
2659
+ return null;
2564
2660
  }, "handleBloodEffects"),
2565
2661
  handleBloodCount: /* @__PURE__ */ __name(async function(ctx, targetBoss, currentHP, maxHP) {
2566
2662
  if (!targetBoss.skills.includes("吸血唾液")) {
@@ -2606,7 +2702,7 @@ var PassiveHandler = {
2606
2702
  { name: targetBoss.name },
2607
2703
  { Vulnerability: newLayers }
2608
2704
  );
2609
- messages.push(`☢️ ${targetBoss.name}获得1层"辐射"`);
2705
+ messages.push(`☢️ ${targetBoss.name}获得1层“辐射”`);
2610
2706
  radiationApplied = true;
2611
2707
  return {
2612
2708
  messages,
@@ -2621,7 +2717,7 @@ var PassiveHandler = {
2621
2717
  const damageIncrease = effectiveLayers * 2.5;
2622
2718
  const maxIncrease = 50;
2623
2719
  const messages = [];
2624
- let statusMsg = `☢️ 【辐射】生效:当前${radiationLayers}层辐射`;
2720
+ let statusMsg = `☢️ 【辐射】生效:当前${radiationLayers}层“辐射”`;
2625
2721
  statusMsg += `,受到的伤害+${damageIncrease}%`;
2626
2722
  if (damageIncrease >= maxIncrease) {
2627
2723
  statusMsg += ``;
@@ -2647,7 +2743,7 @@ var PassiveHandler = {
2647
2743
  { name: targetBoss.name },
2648
2744
  { freezing: newFreezing }
2649
2745
  );
2650
- messages.push(`❄️ ${targetBoss.name} 获得1层"寒冷"`);
2746
+ messages.push(`❄️ ${targetBoss.name} 获得1层“寒冷”`);
2651
2747
  freezing = true;
2652
2748
  return {
2653
2749
  messages,
@@ -2662,7 +2758,7 @@ var PassiveHandler = {
2662
2758
  const damageIncrease = effectiveLayers * 2.5;
2663
2759
  const maxIncrease = 50;
2664
2760
  const messages = [];
2665
- let statusMsg = `❄️ 【寒冷】生效:当前${freezingLayers}层`;
2761
+ let statusMsg = `❄️ 【寒冷】生效:当前${freezingLayers}层“寒冷”`;
2666
2762
  statusMsg += `,受到的伤害+${damageIncrease}%`;
2667
2763
  if (damageIncrease >= maxIncrease) {
2668
2764
  statusMsg += ``;
@@ -2761,7 +2857,7 @@ var PassiveHandler = {
2761
2857
  const currentFreezing = targetBoss.freezing || 0;
2762
2858
  let immuneChance = 55 - currentFreezing * 5;
2763
2859
  immuneChance = Math.max(immuneChance, 5);
2764
- if (currentEnergy < 100) {
2860
+ if (currentEnergy < 300) {
2765
2861
  return null;
2766
2862
  }
2767
2863
  const roll = Math.random() * 100;
@@ -2789,7 +2885,7 @@ var PassiveHandler = {
2789
2885
  const currentEnergy = targetBoss.energy || 0;
2790
2886
  const currentFreezing = targetBoss.freezing || 0;
2791
2887
  const maxEnergy = 1e3;
2792
- if (currentEnergy < maxEnergy * 0.1) {
2888
+ if (currentEnergy < maxEnergy * 0.3) {
2793
2889
  return null;
2794
2890
  }
2795
2891
  let triggerChance = 60 - currentFreezing * 5;
@@ -3288,10 +3384,352 @@ var PassiveHandler = {
3288
3384
  targetBoss.Skillcountpoints = newCount;
3289
3385
  return {
3290
3386
  messages: [
3291
- `⚡ 【脉冲扰乱枪】武器效果:减少${targetBoss.name} 2层技能计数(当前${newCount}层)`
3387
+ `⚡ 【脉冲扰乱枪】武器效果:使${targetBoss.name}的技能层数减少2(当前${newCount}层)`
3292
3388
  ]
3293
3389
  };
3294
3390
  }, "handlePulseDisruptor"),
3391
+ // === 星界之风 ===
3392
+ handleStellarWind: /* @__PURE__ */ __name(async (ctx, targetBoss, initialDamage, maxHP, activeBosses, bossGroup) => {
3393
+ if (!targetBoss.skills.includes("星界之风") || initialDamage === 0) return null;
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) {
3406
+ const groupMembers = activeBosses.filter(
3407
+ (b) => b.groupId === targetBoss.groupId && b.HP > 0
3408
+ );
3409
+ const updates = [];
3410
+ const messages = [`🌠 【星界之风】生效:治疗所有存活异形200点血量`];
3411
+ for (const member of groupMembers) {
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);
3416
+ updates.push(
3417
+ ctx.database.set(
3418
+ "ggcevo_boss",
3419
+ { name: member.name },
3420
+ { HP: newHP }
3421
+ )
3422
+ );
3423
+ messages.push(`${member.name} +${healAmount}HP`);
3424
+ }
3425
+ if (hasPsychicFrenzy && isInFrenzy) {
3426
+ }
3427
+ await Promise.all(updates);
3428
+ return { messages };
3429
+ }
3430
+ return null;
3431
+ }, "handleStellarWind"),
3432
+ // === 心灵狂热 ===
3433
+ handlePsychicFrenzy: /* @__PURE__ */ __name(function(targetBoss, currentHP, maxHP) {
3434
+ if (!targetBoss.skills.includes("心灵狂热")) return null;
3435
+ if (currentHP / maxHP < 0.5) {
3436
+ return {
3437
+ damageMultiplier: -0.2,
3438
+ // 受到的伤害-20%
3439
+ messages: [
3440
+ `🌀 【心灵狂热】生效:进入心灵狂热状态,受到的伤害-20%`
3441
+ ]
3442
+ };
3443
+ }
3444
+ return null;
3445
+ }, "handlePsychicFrenzy"),
3446
+ // === 宇宙能量 ===
3447
+ handleCosmicEnergy: /* @__PURE__ */ __name(async (ctx, targetBoss, initialDamage, bossGroup) => {
3448
+ if (!targetBoss.skills.includes("宇宙能量")) return null;
3449
+ const maxEnergy = 1e3;
3450
+ const currentEnergy = targetBoss.energy || 0;
3451
+ const availableSpace = maxEnergy - currentEnergy;
3452
+ const energyToAdd = Math.min(initialDamage, availableSpace);
3453
+ const newEnergy = currentEnergy + energyToAdd;
3454
+ let healAmount = 0;
3455
+ let messages = [];
3456
+ if (energyToAdd > 0) {
3457
+ messages.push(`🌌 获得${energyToAdd}点能量`);
3458
+ }
3459
+ if (newEnergy >= maxEnergy) {
3460
+ const overflow = initialDamage - energyToAdd;
3461
+ if (overflow > 0) {
3462
+ const maxHP = PassiveHandler.getMemberConfig(targetBoss.name, bossGroup)?.maxHP || 0;
3463
+ if (maxHP > 0) {
3464
+ healAmount = Math.min(overflow, maxHP - targetBoss.HP);
3465
+ messages.push(`💫 能量溢出回复${healAmount}点生命值`);
3466
+ }
3467
+ }
3468
+ }
3469
+ if (energyToAdd === 0 && healAmount === 0) {
3470
+ return null;
3471
+ }
3472
+ await ctx.database.set(
3473
+ "ggcevo_boss",
3474
+ { name: targetBoss.name },
3475
+ { energy: newEnergy }
3476
+ );
3477
+ return {
3478
+ messages: [`🌌 【宇宙能量】生效:${messages.join(",")}`],
3479
+ healAmount
3480
+ };
3481
+ }, "handleCosmicEnergy"),
3482
+ // === 光影之刃 ===
3483
+ handleLightblade: /* @__PURE__ */ __name(async (ctx, targetBoss) => {
3484
+ if (!targetBoss.skills.includes("光影之刃")) return null;
3485
+ const currentStacks = targetBoss.Skillcountpoints || 0;
3486
+ const newStacks = currentStacks + 1;
3487
+ await ctx.database.set(
3488
+ "ggcevo_boss",
3489
+ { name: targetBoss.name },
3490
+ { Skillcountpoints: newStacks }
3491
+ );
3492
+ return {
3493
+ messages: [`✨ 【光影之刃】生效:获得1层“光影之刃”`]
3494
+ };
3495
+ }, "handleLightblade"),
3496
+ // === 远古预兆 ===
3497
+ handleAncientOmen: /* @__PURE__ */ __name(async (ctx, targetBoss) => {
3498
+ if (!targetBoss.skills.includes("远古预兆")) return null;
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) {
3505
+ const maxEnergy = 1e3;
3506
+ const currentEnergy = targetBoss.energy || 0;
3507
+ const newEnergy = Math.min(currentEnergy + 100, maxEnergy);
3508
+ await ctx.database.set(
3509
+ "ggcevo_boss",
3510
+ { name: targetBoss.name },
3511
+ { energy: newEnergy }
3512
+ );
3513
+ return {
3514
+ immune: true,
3515
+ messages: [
3516
+ `🔮 【远古预兆】生效:免疫此次伤害,并且回复100点能量`
3517
+ ]
3518
+ };
3519
+ }
3520
+ return null;
3521
+ }, "handleAncientOmen"),
3522
+ // === 超视距穿梭 ===
3523
+ handleHyperspaceSkip: /* @__PURE__ */ __name(function(targetBoss) {
3524
+ if (!targetBoss.skills.includes("超视距穿梭")) return null;
3525
+ const maxEnergy = 1e3;
3526
+ const currentEnergy = targetBoss.energy || 0;
3527
+ const lightbladeStacks = targetBoss.Skillcountpoints || 0;
3528
+ let reduction = 0;
3529
+ let increase = 0;
3530
+ const effectParts = [];
3531
+ if (currentEnergy >= maxEnergy * 0.3) {
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)}%`);
3539
+ }
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
+ }
3557
+ return null;
3558
+ }, "handleHyperspaceSkip"),
3559
+ // === 复苏 ===
3560
+ handleRevival: /* @__PURE__ */ __name(async function(ctx, targetBoss, currentHP, maxHP) {
3561
+ if (!targetBoss.skills.includes("复苏") || currentHP > 0) return null;
3562
+ const updatedHP = maxHP;
3563
+ const maxEnergy = 1e3;
3564
+ let newSkills = targetBoss.skills;
3565
+ if (!newSkills.includes("灵能构造炉")) {
3566
+ newSkills = [...newSkills, "灵能构造炉"];
3567
+ }
3568
+ newSkills = newSkills.filter((skill) => skill !== "复苏");
3569
+ await ctx.database.set(
3570
+ "ggcevo_boss",
3571
+ { name: targetBoss.name },
3572
+ {
3573
+ HP: updatedHP,
3574
+ energy: maxEnergy,
3575
+ skills: newSkills
3576
+ }
3577
+ );
3578
+ return {
3579
+ updatedHP,
3580
+ messages: [
3581
+ `🔥 【复苏】生效:免于死亡,回复自身100%的最大生命值和100%的“能量”,并且获得新技能【灵能构造炉】`
3582
+ ]
3583
+ };
3584
+ }, "handleRevival"),
3585
+ // === 灵能构造炉 ===
3586
+ handleConstructor: /* @__PURE__ */ __name(async function(ctx, targetBoss) {
3587
+ if (!targetBoss.skills.includes("灵能构造炉")) return null;
3588
+ const allSkills = ["天启超载护盾", "塌缩脉冲", "地毯式轰炸", "轰炸引导"];
3589
+ const hasAllSkills = allSkills.every((skill) => targetBoss.skills.includes(skill));
3590
+ if (hasAllSkills) {
3591
+ const newSkills = targetBoss.skills.filter((skill) => skill !== "灵能构造炉");
3592
+ await ctx.database.set(
3593
+ "ggcevo_boss",
3594
+ { name: targetBoss.name },
3595
+ { skills: newSkills }
3596
+ );
3597
+ return {
3598
+ messages: [
3599
+ `⚙️ 【灵能构造炉】生效:所有技能已获取完毕,此技能已移除`
3600
+ ]
3601
+ };
3602
+ }
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) {
3609
+ const availableSkills = allSkills.filter(
3610
+ (skill) => !targetBoss.skills.includes(skill)
3611
+ );
3612
+ if (availableSkills.length === 0) return null;
3613
+ const randomSkill = availableSkills[Math.floor(Math.random() * availableSkills.length)];
3614
+ const newSkills = [...targetBoss.skills, randomSkill];
3615
+ await ctx.database.set(
3616
+ "ggcevo_boss",
3617
+ { name: targetBoss.name },
3618
+ { skills: newSkills }
3619
+ );
3620
+ return {
3621
+ messages: [
3622
+ `⚙️ 【灵能构造炉】生效:获得新技能【${randomSkill}】`
3623
+ ]
3624
+ };
3625
+ }
3626
+ return null;
3627
+ }, "handleConstructor"),
3628
+ // 修改后 - 移除了层数清零操作
3629
+ handleTyrsShield: /* @__PURE__ */ __name(async function(ctx, targetBoss, activeBosses, bossGroup) {
3630
+ if (!targetBoss.skills.includes("天启超载护盾")) return null;
3631
+ const lightbladeStacks = targetBoss.Skillcountpoints || 0;
3632
+ if (lightbladeStacks === 0) return null;
3633
+ const triggerChance = 10;
3634
+ if (Math.random() * 100 < triggerChance) {
3635
+ const groupMembers = activeBosses.filter(
3636
+ (b) => b.groupId === targetBoss.groupId && b.HP > 0
3637
+ );
3638
+ const healAmount = lightbladeStacks * 50;
3639
+ const updates = [];
3640
+ const messages = [`🛡️ 【天启超载护盾】生效:治疗所有存活异形`];
3641
+ for (const member of groupMembers) {
3642
+ const maxHP = this.getMemberConfig(member.name, bossGroup)?.maxHP;
3643
+ if (!maxHP) continue;
3644
+ const heal = Math.min(healAmount, maxHP - member.HP);
3645
+ if (heal > 0) {
3646
+ const newHP = member.HP + heal;
3647
+ updates.push(
3648
+ ctx.database.set(
3649
+ "ggcevo_boss",
3650
+ { name: member.name },
3651
+ { HP: newHP }
3652
+ )
3653
+ );
3654
+ messages.push(`${member.name} +${heal}HP`);
3655
+ }
3656
+ }
3657
+ await Promise.all(updates);
3658
+ return {
3659
+ messages
3660
+ // 不再清除层数
3661
+ };
3662
+ }
3663
+ return null;
3664
+ }, "handleTyrsShield"),
3665
+ // === 塌缩脉冲 ===
3666
+ handleCollapsePulse: /* @__PURE__ */ __name(async function(ctx, targetBoss) {
3667
+ if (!targetBoss.skills.includes("塌缩脉冲")) return null;
3668
+ const triggerChance = 100;
3669
+ if (Math.random() * 100 < triggerChance) {
3670
+ const currentStacks = targetBoss.Skillcountpoints || 0;
3671
+ const newStacks = currentStacks + 1;
3672
+ await ctx.database.set(
3673
+ "ggcevo_boss",
3674
+ { name: targetBoss.name },
3675
+ { Skillcountpoints: newStacks }
3676
+ );
3677
+ return {
3678
+ messages: [`💥 【塌缩脉冲】生效:额外获得1层光影之刃`]
3679
+ };
3680
+ }
3681
+ return null;
3682
+ }, "handleCollapsePulse"),
3683
+ // === 地毯式轰炸 ===
3684
+ handleCarpetBombing: /* @__PURE__ */ __name(async function(ctx, targetBoss) {
3685
+ if (!targetBoss.skills.includes("地毯式轰炸")) return null;
3686
+ const triggerChance = 100;
3687
+ const messages = [];
3688
+ let damageMultiplier = 0;
3689
+ if (Math.random() * 100 < triggerChance) {
3690
+ const hasLoneWolf = targetBoss.skills.includes("孤立无援");
3691
+ if (hasLoneWolf) {
3692
+ const newSkills = targetBoss.skills.filter((skill) => skill !== "孤立无援");
3693
+ await ctx.database.set(
3694
+ "ggcevo_boss",
3695
+ { name: targetBoss.name },
3696
+ { skills: newSkills }
3697
+ );
3698
+ messages.push(`🔥 【地毯式轰炸】生效:移除“孤立无援”`);
3699
+ } else {
3700
+ }
3701
+ damageMultiplier = -0.5;
3702
+ messages.push(`🔥 【地毯式轰炸】生效:我心中的怒火胜过千万个太阳!受到的伤害-50%`);
3703
+ }
3704
+ return {
3705
+ messages,
3706
+ damageMultiplier
3707
+ };
3708
+ }, "handleCarpetBombing"),
3709
+ // 修改后 - 移除了层数清零操作
3710
+ handleBombardmentGuidance: /* @__PURE__ */ __name(async function(ctx, targetBoss) {
3711
+ if (!targetBoss.skills.includes("轰炸引导")) return null;
3712
+ const lightbladeStacks = targetBoss.Skillcountpoints || 0;
3713
+ if (lightbladeStacks === 0) return null;
3714
+ const triggerChance = 10;
3715
+ if (Math.random() * 100 < triggerChance) {
3716
+ const energyGain = lightbladeStacks * 100;
3717
+ const maxEnergy = 1e3;
3718
+ const currentEnergy = targetBoss.energy || 0;
3719
+ const newEnergy = Math.min(currentEnergy + energyGain, maxEnergy);
3720
+ await ctx.database.set(
3721
+ "ggcevo_boss",
3722
+ { name: targetBoss.name },
3723
+ { energy: newEnergy }
3724
+ );
3725
+ return {
3726
+ messages: [
3727
+ `🎯 【轰炸引导】生效:回复${energyGain}点能量`
3728
+ ]
3729
+ };
3730
+ }
3731
+ return null;
3732
+ }, "handleBombardmentGuidance"),
3295
3733
  // 修改后的伤害处理函数
3296
3734
  handlePassives: /* @__PURE__ */ __name(async function(ctx, handle, targetBoss, initialDamage, currentHP, maxHP, weaponName, weaponData, bossGroup) {
3297
3735
  let messages = [];
@@ -3375,6 +3813,15 @@ var PassiveHandler = {
3375
3813
  initialDamage: 0
3376
3814
  };
3377
3815
  }
3816
+ const ancientOmenResult = await this.handleAncientOmen(ctx, targetBoss);
3817
+ if (ancientOmenResult?.immune) {
3818
+ return {
3819
+ currentHP: targetBoss.HP,
3820
+ messages: ancientOmenResult.messages,
3821
+ skillUpdates: [],
3822
+ initialDamage: 0
3823
+ };
3824
+ }
3378
3825
  targetBoss.skills.forEach((skill) => {
3379
3826
  const config = passiveConfig[skill];
3380
3827
  if (config && config.effect !== void 0 && config.effect !== 0) {
@@ -3410,7 +3857,12 @@ var PassiveHandler = {
3410
3857
  }
3411
3858
  const bloodEffect = this.handleBloodEffects(targetBoss, currentHP, maxHP);
3412
3859
  if (bloodEffect) {
3413
- nerfMultiplier += bloodEffect.damageMultiplier;
3860
+ if (bloodEffect.buffAmount > 0) {
3861
+ buffMultiplier += bloodEffect.buffAmount;
3862
+ }
3863
+ if (bloodEffect.nerfAmount > 0) {
3864
+ nerfMultiplier -= bloodEffect.nerfAmount;
3865
+ }
3414
3866
  messages.push(...bloodEffect.messages);
3415
3867
  }
3416
3868
  const siphonResult = this.handleEnergySiphon(targetBoss, currentHP, maxHP);
@@ -3452,6 +3904,26 @@ var PassiveHandler = {
3452
3904
  nerfMultiplier += rageResult.damageMultiplier;
3453
3905
  messages.push(...rageResult.messages);
3454
3906
  }
3907
+ const hyperspaceResult = this.handleHyperspaceSkip(targetBoss);
3908
+ if (hyperspaceResult) {
3909
+ if (hyperspaceResult.reduction > 0) {
3910
+ nerfMultiplier -= hyperspaceResult.reduction;
3911
+ }
3912
+ if (hyperspaceResult.increase > 0) {
3913
+ buffMultiplier += hyperspaceResult.increase;
3914
+ }
3915
+ messages.push(...hyperspaceResult.messages);
3916
+ }
3917
+ const frenzyResult = this.handlePsychicFrenzy(targetBoss, currentHP, maxHP);
3918
+ if (frenzyResult) {
3919
+ nerfMultiplier += frenzyResult.damageMultiplier;
3920
+ messages.push(...frenzyResult.messages);
3921
+ }
3922
+ const bombingResult = await this.handleCarpetBombing(ctx, targetBoss);
3923
+ if (bombingResult) {
3924
+ nerfMultiplier += bombingResult.damageMultiplier;
3925
+ messages.push(...bombingResult.messages);
3926
+ }
3455
3927
  if (solarFlareResult.messages.length > 0) {
3456
3928
  messages.push(...solarFlareResult.messages);
3457
3929
  }
@@ -3480,13 +3952,16 @@ var PassiveHandler = {
3480
3952
  finalDamage = Math.floor(finalDamage);
3481
3953
  finalDamage = Math.max(finalDamage, 1);
3482
3954
  currentHP = targetBoss.HP - finalDamage;
3955
+ if (currentHP < 0) {
3956
+ currentHP = 0;
3957
+ }
3483
3958
  if (appliedIgnoreMessages.length > 0) {
3484
3959
  messages.push(...appliedIgnoreMessages);
3485
3960
  messages.push(
3486
3961
  `⚡ 减伤效果:${(nerfMultiplier * 100).toFixed(0)}% → ${(effectiveNerf * 100).toFixed(0)}%`
3487
3962
  );
3488
3963
  }
3489
- if (currentHP <= 0 && !targetBoss.skills.includes("求生本能I") && !targetBoss.skills.includes("求生本能II")) {
3964
+ if (currentHP <= 0 && !targetBoss.skills.includes("求生本能I") && !targetBoss.skills.includes("求生本能II") && !targetBoss.skills.includes("复苏")) {
3490
3965
  return {
3491
3966
  currentHP,
3492
3967
  messages,
@@ -3518,12 +3993,6 @@ var PassiveHandler = {
3518
3993
  if (moldResult) {
3519
3994
  messages.push(...moldResult.messages);
3520
3995
  }
3521
- const survivalResult = this.handleSurvivalInstinct(targetBoss, currentHP, maxHP);
3522
- if (survivalResult) {
3523
- currentHP = survivalResult.updatedHP;
3524
- messages.push(...survivalResult.messages);
3525
- skillUpdates.push(...survivalResult.skillUpdates);
3526
- }
3527
3996
  const pulseResult = await this.handlePulse(
3528
3997
  ctx,
3529
3998
  targetBoss,
@@ -3555,6 +4024,25 @@ var PassiveHandler = {
3555
4024
  }
3556
4025
  }
3557
4026
  }
4027
+ const stellarWindResult = await this.handleStellarWind(ctx, targetBoss, initialDamage, maxHP, activeBosses, bossGroup);
4028
+ if (stellarWindResult) {
4029
+ messages.push(...stellarWindResult.messages);
4030
+ }
4031
+ const shieldResult = await this.handleTyrsShield(ctx, targetBoss, activeBosses, bossGroup);
4032
+ if (shieldResult) {
4033
+ messages.push(...shieldResult.messages);
4034
+ }
4035
+ const survivalResult = this.handleSurvivalInstinct(targetBoss, currentHP, maxHP);
4036
+ if (survivalResult) {
4037
+ currentHP = survivalResult.updatedHP;
4038
+ messages.push(...survivalResult.messages);
4039
+ skillUpdates.push(...survivalResult.skillUpdates);
4040
+ }
4041
+ const revivalResult = await this.handleRevival(ctx, targetBoss, currentHP, maxHP);
4042
+ if (revivalResult) {
4043
+ currentHP = revivalResult.updatedHP;
4044
+ messages.push(...revivalResult.messages);
4045
+ }
3558
4046
  const pulseDisruptorResult = await this.handlePulseDisruptor(
3559
4047
  ctx,
3560
4048
  targetBoss,
@@ -3584,28 +4072,51 @@ var PassiveHandler = {
3584
4072
  if (sentryResult) {
3585
4073
  messages.push(...sentryResult.messages);
3586
4074
  }
3587
- const tagChangeResult = await this.handleConductorTagChange(ctx, targetBoss, currentHP, maxHP);
3588
- if (tagChangeResult) {
3589
- messages.push(...tagChangeResult.messages);
4075
+ const lightbladeResult = await this.handleLightblade(ctx, targetBoss);
4076
+ if (lightbladeResult) {
4077
+ messages.push(...lightbladeResult.messages);
4078
+ }
4079
+ const CollapsepulseResult = await this.handleCollapsePulse(ctx, targetBoss);
4080
+ if (CollapsepulseResult) {
4081
+ messages.push(...CollapsepulseResult.messages);
4082
+ }
4083
+ const bileStackResult = await this.handleBileStacking(ctx, targetBoss, skipBileStacking);
4084
+ if (bileStackResult) {
4085
+ messages.push(...bileStackResult.messages);
3590
4086
  }
3591
4087
  const shockwaveResult = await this.handleEnergyShockwave(ctx, targetBoss);
3592
4088
  if (shockwaveResult) {
3593
4089
  messages.push(...shockwaveResult.messages);
3594
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
+ }
4098
+ const guidanceResult = await this.handleBombardmentGuidance(ctx, targetBoss);
4099
+ if (guidanceResult) {
4100
+ messages.push(...guidanceResult.messages);
4101
+ }
3595
4102
  const gammaRadResult = await this.handleGammaRadiation(ctx, targetBoss, weaponName);
3596
4103
  if (gammaRadResult) {
3597
4104
  messages.push(...gammaRadResult.messages);
3598
4105
  radiationApplied = gammaRadResult.radiationApplied;
3599
4106
  }
3600
- const bileStackResult = await this.handleBileStacking(ctx, targetBoss, skipBileStacking);
3601
- if (bileStackResult) {
3602
- messages.push(...bileStackResult.messages);
3603
- }
3604
4107
  const coldEffectResult = await this.handleColdEffect(ctx, targetBoss, weaponName);
3605
4108
  if (coldEffectResult) {
3606
4109
  messages.push(...coldEffectResult.messages);
3607
4110
  freezing = coldEffectResult.freezing;
3608
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
+ }
3609
4120
  return {
3610
4121
  currentHP,
3611
4122
  messages,
@@ -4756,16 +5267,14 @@ ${itemDetails.join("\n")}`;
4756
5267
  }
4757
5268
  const messages = [];
4758
5269
  let totalBonus = 0;
4759
- let tickets = 3;
4760
- if (monthlyDays === 7) {
4761
- tickets = 4;
4762
- } else if (monthlyDays === 14) {
4763
- tickets = 5;
4764
- } else if (monthlyDays === 21) {
4765
- tickets = 6;
4766
- } else if (monthlyDays === 28) {
4767
- tickets = 7;
4768
- }
5270
+ let baseTickets = 0;
5271
+ if (monthlyDays < 7) baseTickets = 3;
5272
+ else if (monthlyDays === 7) baseTickets = 4;
5273
+ else if (monthlyDays === 14) baseTickets = 5;
5274
+ else if (monthlyDays === 21) baseTickets = 6;
5275
+ else if (monthlyDays === 28) baseTickets = 7;
5276
+ else baseTickets = 3;
5277
+ let tickets = baseTickets;
4769
5278
  const [systemFirmwareTech] = await ctx.database.get("ggcevo_tech", { handle, techId: 5 }).catch(() => [{ level: 0 }]);
4770
5279
  const systemFirmwareLevel = Math.min(systemFirmwareTech?.level || 0, 5);
4771
5280
  const [careerData] = await ctx.database.get("ggcevo_careers", { handle });
@@ -4839,9 +5348,9 @@ ${itemDetails.join("\n")}`;
4839
5348
  isused: false
4840
5349
  });
4841
5350
  if (meowEffect) {
4842
- tickets *= 2;
5351
+ tickets = baseTickets * 2;
4843
5352
  totalBonus += 1;
4844
- messages.push("🐾 喵喵财源祈愿:咕咕币+100%,金币+100%");
5353
+ messages.push("🐾 喵喵财源祈愿:金币+100%,咕咕币+100%");
4845
5354
  }
4846
5355
  const finalPoints = Math.round(basePoints * (1 + totalBonus));
4847
5356
  let redCrystal = 0;
@@ -4884,7 +5393,19 @@ ${itemDetails.join("\n")}`;
4884
5393
  ⚡ 加成效果:
4885
5394
  ▸ ${messages.join("\n▸ ")}`;
4886
5395
  }
4887
- return "签到成功!本月累计签到" + monthlyDays + "天,获得:\n💰 金币 x " + finalPoints + (totalBonus > 0 ? " (基础值:" + basePoints + "金币)" : "") + "\n🪙 咕咕币 x " + tickets + effectMessage;
5396
+ let coinMessage = `💰 金币 x ${finalPoints}`;
5397
+ if (totalBonus > 0) {
5398
+ coinMessage += ` (基础值:${basePoints}金币)`;
5399
+ }
5400
+ let ticketMessage;
5401
+ if (meowEffect) {
5402
+ ticketMessage = `🪙 咕咕币 x ${tickets} (基础值:${baseTickets}枚)`;
5403
+ } else {
5404
+ ticketMessage = `🪙 咕咕币 x ${tickets}`;
5405
+ }
5406
+ return `签到成功!本月累计签到${monthlyDays}天,获得:
5407
+ ${coinMessage}
5408
+ ${ticketMessage}${effectMessage}`;
4888
5409
  } catch (error) {
4889
5410
  console.error("签到命令时发生错误:", error);
4890
5411
  return "服务器繁忙,请稍后尝试。";
@@ -6876,7 +7397,7 @@ ${validTypes.join("、")}`;
6876
7397
  } else {
6877
7398
  result.push("➤ 无");
6878
7399
  }
6879
- const countingSkill = mainBoss.skills?.find((s) => ["冷适应", "岗哨机枪", "吸血唾液", "灼烧粘液"].includes(s));
7400
+ const countingSkill = mainBoss.skills?.find((s) => ["冷适应", "岗哨机枪", "吸血唾液", "灼烧粘液", "光影之刃"].includes(s));
6880
7401
  if (countingSkill) {
6881
7402
  result.push(`📈 ${countingSkill}:${mainBoss.Skillcountpoints}层`);
6882
7403
  }
@@ -6909,7 +7430,7 @@ ${validTypes.join("、")}`;
6909
7430
  } else {
6910
7431
  minionInfo.push("➤ 无");
6911
7432
  }
6912
- const minionCountingSkill = minion.skills?.find((s) => ["冷适应", "岗哨机枪", "吸血唾液", "灼烧粘液"].includes(s));
7433
+ const minionCountingSkill = minion.skills?.find((s) => ["冷适应", "岗哨机枪", "吸血唾液", "灼烧粘液", "光影之刃"].includes(s));
6913
7434
  if (minionCountingSkill) {
6914
7435
  minionInfo.push(`📈 ${minionCountingSkill}:${minion.Skillcountpoints}层`);
6915
7436
  }
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.26",
4
+ "version": "1.4.28",
5
5
  "main": "lib/index.js",
6
6
  "typings": "lib/index.d.ts",
7
7
  "files": [