koishi-plugin-ggcevo-game 1.4.26 → 1.4.27

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,52 @@ 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%的概率回复所有存活异形500点血量";
169
+ };
170
+ readonly 心灵狂热: {
171
+ readonly effect: 0;
172
+ readonly description: "当血量低于50%时,进入心灵狂热状态,受到的伤害-50%";
173
+ };
174
+ readonly 宇宙能量: {
175
+ readonly effect: 0;
176
+ readonly description: "拥有“能量”机制; 受到攻击时回复与该攻击伤害等额的“能量”; 若“能量”已满,则回复与该攻击伤害等额的血量";
177
+ };
178
+ readonly 复苏: {
179
+ readonly effect: 0;
180
+ readonly description: "受到致命伤害时,免于死亡并且快速回复50%的血量和100%的能量,并且获得“灵能构造炉”技能(触发后移除)";
181
+ };
182
+ readonly 光影之刃: {
183
+ readonly effect: 0;
184
+ readonly description: "受到伤害后,获得一层“光影之刃”";
185
+ };
186
+ readonly 远古预兆: {
187
+ readonly effect: 0;
188
+ readonly description: "受到伤害时,有5%的概率免疫此次伤害并且回复100点“能量”,每层“光影之刃”额外提供1%的概率";
189
+ };
190
+ readonly 超视距穿梭: {
191
+ readonly effect: 0;
192
+ readonly description: "当“能量”≥30%时,每层“光影之刃”使受到的伤害-5%";
193
+ };
194
+ readonly 灵能构造炉: {
195
+ readonly effect: 0;
196
+ readonly description: "受到攻击后,有5%的概率会随机获得以下4个技能之一(天启超载护盾,塌缩脉冲,地毯式轰炸,轰炸引导),每层“光影之刃”额外提供1%的概率";
197
+ };
198
+ readonly 天启超载护盾: {
199
+ readonly effect: 0;
200
+ readonly description: "受到伤害后,有10%的概率消耗所有“光影之刃”层数,回复所有存活异形X点血量(X为“光影之刃”层数 x 100)";
201
+ };
202
+ readonly 塌缩脉冲: {
203
+ readonly effect: 0;
204
+ readonly description: "受到伤害后,额外获得一层“光影之刃”";
205
+ };
206
+ readonly 地毯式轰炸: {
207
+ readonly effect: 0;
208
+ readonly description: "我心中的怒火胜过千万个太阳!移除自身的“孤立无援”,并使受到的伤害-50%";
209
+ };
210
+ readonly 轰炸引导: {
211
+ readonly effect: 0;
212
+ readonly description: "受到伤害后,有10%的概率概率消耗所有“光影之刃”层数,回复自身X点“能量”(X为“光影之刃”层数 x 100)";
213
+ };
166
214
  };
@@ -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<{
@@ -181,6 +181,48 @@ export declare const PassiveHandler: {
181
181
  handlePulseDisruptor: (ctx: Context, targetBoss: any, weaponName: string) => Promise<{
182
182
  messages: string[];
183
183
  }>;
184
+ handleStellarWind: (ctx: Context, targetBoss: any, initialDamage: number, activeBosses: any[], bossGroup: BossPoolItem) => Promise<{
185
+ messages: string[];
186
+ }>;
187
+ handlePsychicFrenzy: (targetBoss: any, currentHP: number, maxHP: number) => {
188
+ damageMultiplier: number;
189
+ messages: string[];
190
+ };
191
+ handleCosmicEnergy: (ctx: Context, targetBoss: any, initialDamage: number, bossGroup: any) => Promise<{
192
+ messages: string[];
193
+ healAmount: number;
194
+ }>;
195
+ handleLightblade: (ctx: Context, targetBoss: any) => Promise<{
196
+ messages: string[];
197
+ }>;
198
+ handleAncientOmen: (ctx: Context, targetBoss: any) => Promise<{
199
+ immune: boolean;
200
+ messages: string[];
201
+ }>;
202
+ handleHyperspaceSkip: (targetBoss: any) => {
203
+ damageMultiplier: number;
204
+ messages: string[];
205
+ };
206
+ handleRevival: (ctx: Context, targetBoss: any, currentHP: number, maxHP: number) => Promise<{
207
+ updatedHP: number;
208
+ messages: string[];
209
+ }>;
210
+ handleConstructor: (ctx: Context, targetBoss: any) => Promise<{
211
+ messages: string[];
212
+ }>;
213
+ handleTyrsShield: (ctx: Context, targetBoss: any, activeBosses: any[], bossGroup: BossPoolItem) => Promise<{
214
+ messages: string[];
215
+ }>;
216
+ handleCollapsePulse: (ctx: Context, targetBoss: any) => Promise<{
217
+ messages: string[];
218
+ }>;
219
+ handleCarpetBombing: (ctx: Context, targetBoss: any) => Promise<{
220
+ messages: string[];
221
+ damageMultiplier: number;
222
+ }>;
223
+ handleBombardmentGuidance: (ctx: Context, targetBoss: any) => Promise<{
224
+ messages: string[];
225
+ }>;
184
226
  handlePassives: (ctx: Context, handle: string, targetBoss: any, initialDamage: number, currentHP: number, maxHP: number, weaponName: string, weaponData: any, bossGroup: any) => Promise<{
185
227
  currentHP: any;
186
228
  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: 25e3,
1241
+ energy: 1e3,
1242
+ tags: asBossTags(["重甲", "护盾", "生物", "灵能", "异形"]),
1243
+ passive: asPassives(["宇宙能量", "复苏", "光影之刃", "远古预兆", "星界之风", "超视距穿梭"])
1244
+ },
1245
+ minions: [
1246
+ {
1247
+ name: "宇宙战将",
1248
+ type: "子代",
1249
+ maxHP: 7500,
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,54 @@ var passiveConfig = {
1399
1420
  "致命一击": {
1400
1421
  effect: 0,
1401
1422
  description: "受到伤害时,有5%的概率免疫此次伤害"
1423
+ },
1424
+ "星界之风": {
1425
+ effect: 0,
1426
+ description: "受到伤害时,有5%的概率回复所有存活异形500点血量"
1427
+ },
1428
+ "心灵狂热": {
1429
+ effect: 0,
1430
+ description: "当血量低于50%时,进入心灵狂热状态,受到的伤害-50%"
1431
+ },
1432
+ "宇宙能量": {
1433
+ effect: 0,
1434
+ description: "拥有“能量”机制; 受到攻击时回复与该攻击伤害等额的“能量”; 若“能量”已满,则回复与该攻击伤害等额的血量"
1435
+ },
1436
+ "复苏": {
1437
+ effect: 0,
1438
+ description: "受到致命伤害时,免于死亡并且快速回复50%的血量和100%的能量,并且获得“灵能构造炉”技能(触发后移除)"
1439
+ },
1440
+ "光影之刃": {
1441
+ effect: 0,
1442
+ description: "受到伤害后,获得一层“光影之刃”"
1443
+ },
1444
+ "远古预兆": {
1445
+ effect: 0,
1446
+ description: "受到伤害时,有5%的概率免疫此次伤害并且回复100点“能量”,每层“光影之刃”额外提供1%的概率"
1447
+ },
1448
+ "超视距穿梭": {
1449
+ effect: 0,
1450
+ description: "当“能量”≥30%时,每层“光影之刃”使受到的伤害-5%"
1451
+ },
1452
+ "灵能构造炉": {
1453
+ effect: 0,
1454
+ description: "受到攻击后,有5%的概率会随机获得以下4个技能之一(天启超载护盾,塌缩脉冲,地毯式轰炸,轰炸引导),每层“光影之刃”额外提供1%的概率"
1455
+ },
1456
+ "天启超载护盾": {
1457
+ effect: 0,
1458
+ description: "受到伤害后,有10%的概率消耗所有“光影之刃”层数,回复所有存活异形X点血量(X为“光影之刃”层数 x 100)"
1459
+ },
1460
+ "塌缩脉冲": {
1461
+ effect: 0,
1462
+ description: "受到伤害后,额外获得一层“光影之刃”"
1463
+ },
1464
+ "地毯式轰炸": {
1465
+ effect: 0,
1466
+ description: "我心中的怒火胜过千万个太阳!移除自身的“孤立无援”,并使受到的伤害-50%"
1467
+ },
1468
+ "轰炸引导": {
1469
+ effect: 0,
1470
+ description: "受到伤害后,有10%的概率概率消耗所有“光影之刃”层数,回复自身X点“能量”(X为“光影之刃”层数 x 100)"
1402
1471
  }
1403
1472
  };
1404
1473
 
@@ -1570,28 +1639,28 @@ async function calculateCareerAdditive(ctx, handle, weaponType, weaponId) {
1570
1639
  let message = "";
1571
1640
  if (careerData?.career === "警卫长") {
1572
1641
  value += 0.05;
1573
- message = "⚔️ 警卫长:攻击伤害+5%";
1642
+ message = "⚔️ 警卫长职业:攻击伤害+5%";
1574
1643
  }
1575
1644
  if (careerData?.career === "武器中士") {
1576
1645
  value += 0.15;
1577
- message = "⚔️ 武器中士:攻击伤害+15%";
1646
+ message = "⚔️ 武器中士职业:攻击伤害+15%";
1578
1647
  }
1579
1648
  if (careerData?.career === "能量武器专家") {
1580
1649
  if (weaponType === "能量武器") {
1581
1650
  value += 0.2;
1582
- message = "⚔️ 能量武器专家:能量武器攻击伤害+20%";
1651
+ message = "⚔️ 能量武器专家职业:能量武器攻击伤害+20%";
1583
1652
  }
1584
1653
  }
1585
1654
  if (careerData?.career === "纵火狂") {
1586
1655
  if (weaponType === "热能武器") {
1587
1656
  value += 0.2;
1588
- message = "⚔️ 纵火狂:热能武器攻击伤害+20%";
1657
+ message = "⚔️ 纵火狂职业:热能武器攻击伤害+20%";
1589
1658
  }
1590
1659
  }
1591
1660
  if (careerData?.career === "猩红杀手") {
1592
1661
  if (weaponId === 7) {
1593
1662
  value += 0.15;
1594
- message = "⚔️ 猩红杀手:侦察步枪攻击伤害+15%";
1663
+ message = "⚔️ 猩红杀手职业:侦察步枪攻击伤害+15%";
1595
1664
  }
1596
1665
  }
1597
1666
  return { value, message };
@@ -1608,7 +1677,7 @@ async function calculateWishAdditive(ctx, handle, weapon) {
1608
1677
  });
1609
1678
  if (sovereign) {
1610
1679
  value += 0.1;
1611
- messages.push("👑 王权增幅:攻击伤害+10%");
1680
+ messages.push("👑 王权增幅祈愿:攻击伤害+10%");
1612
1681
  }
1613
1682
  const [lament] = await ctx.database.get("ggcevo_Wish_Record", {
1614
1683
  handle,
@@ -1619,7 +1688,7 @@ async function calculateWishAdditive(ctx, handle, weapon) {
1619
1688
  if (lament) {
1620
1689
  const levelBonus = 0.1 * (weapon.level + 1);
1621
1690
  value += levelBonus;
1622
- messages.push(`🗡️ 悲鸣之锋:攻击伤害+${Math.round(levelBonus * 100)}%`);
1691
+ messages.push(`🗡️ 悲鸣之锋祈愿:攻击伤害+${Math.round(levelBonus * 100)}%`);
1623
1692
  }
1624
1693
  const [critRhythm] = await ctx.database.get("ggcevo_Wish_Record", {
1625
1694
  handle,
@@ -1628,7 +1697,7 @@ async function calculateWishAdditive(ctx, handle, weapon) {
1628
1697
  endTime: { $gte: /* @__PURE__ */ new Date() }
1629
1698
  });
1630
1699
  if (critRhythm) {
1631
- messages.push("🎵 暴击韵律:攻击暴击率+20%");
1700
+ messages.push("🎵 暴击韵律祈愿:攻击暴击率+20%");
1632
1701
  }
1633
1702
  return {
1634
1703
  value,
@@ -1920,18 +1989,33 @@ async function applyItemEffect(ctx, session, handle, itemConfig2, target) {
1920
1989
  name: target,
1921
1990
  isActive: true
1922
1991
  });
1923
- if (!targetboss || targetboss?.Skillcountpoints === 0 || targetboss?.tags.includes("建筑") || targetboss?.tags.includes("重型")) return {
1992
+ if (!targetboss) return {
1924
1993
  success: false,
1925
- message: "您无法对目标使用(目标已死亡/目标的技能计数为0/目标拥有“建筑”或“重型”标签)。"
1994
+ message: "无法找到指定的目标。"
1926
1995
  };
1996
+ if (targetboss.tags.includes("建筑") || targetboss.tags.includes("重型")) {
1997
+ return {
1998
+ success: false,
1999
+ message: `目标${target}拥有"${targetboss.tags.includes("建筑") ? "建筑" : "重型"}"标签,无法使用此物品。`
2000
+ };
2001
+ }
2002
+ const currentCount = targetboss.Skillcountpoints || 0;
2003
+ if (currentCount <= 0) {
2004
+ return {
2005
+ success: false,
2006
+ message: `目标${target}的技能层数已为0,无需使用此物品。`
2007
+ };
2008
+ }
2009
+ const newCount = Math.max(0, currentCount - 10);
2010
+ const reducedAmount = currentCount - newCount;
1927
2011
  await ctx.database.set(
1928
2012
  "ggcevo_boss",
1929
2013
  { name: target },
1930
- { Skillcountpoints: 0 }
2014
+ { Skillcountpoints: newCount }
1931
2015
  );
1932
2016
  return {
1933
2017
  success: true,
1934
- message: `成功使用${itemName},已重置${target}的技能计数。`
2018
+ message: `成功使用${itemName},使${target}的技能层数减少${reducedAmount}层(当前:${newCount}层)。`
1935
2019
  };
1936
2020
  }
1937
2021
  if (itemConfig2.id === 3 || itemConfig2.id === 5) {
@@ -1951,7 +2035,7 @@ async function applyItemEffect(ctx, session, handle, itemConfig2, target) {
1951
2035
  });
1952
2036
  if (!targetboss || targetboss?.energy === 0) return {
1953
2037
  success: false,
1954
- message: "您无法对目标使用(目标的能量为0)。"
2038
+ message: "您无法对没有能量的目标使用。"
1955
2039
  };
1956
2040
  await ctx.database.set(
1957
2041
  "ggcevo_boss",
@@ -2606,7 +2690,7 @@ var PassiveHandler = {
2606
2690
  { name: targetBoss.name },
2607
2691
  { Vulnerability: newLayers }
2608
2692
  );
2609
- messages.push(`☢️ ${targetBoss.name}获得1层"辐射"`);
2693
+ messages.push(`☢️ ${targetBoss.name}获得1层“辐射”`);
2610
2694
  radiationApplied = true;
2611
2695
  return {
2612
2696
  messages,
@@ -2621,7 +2705,7 @@ var PassiveHandler = {
2621
2705
  const damageIncrease = effectiveLayers * 2.5;
2622
2706
  const maxIncrease = 50;
2623
2707
  const messages = [];
2624
- let statusMsg = `☢️ 【辐射】生效:当前${radiationLayers}层辐射`;
2708
+ let statusMsg = `☢️ 【辐射】生效:当前${radiationLayers}层“辐射”`;
2625
2709
  statusMsg += `,受到的伤害+${damageIncrease}%`;
2626
2710
  if (damageIncrease >= maxIncrease) {
2627
2711
  statusMsg += ``;
@@ -2647,7 +2731,7 @@ var PassiveHandler = {
2647
2731
  { name: targetBoss.name },
2648
2732
  { freezing: newFreezing }
2649
2733
  );
2650
- messages.push(`❄️ ${targetBoss.name} 获得1层"寒冷"`);
2734
+ messages.push(`❄️ ${targetBoss.name} 获得1层“寒冷”`);
2651
2735
  freezing = true;
2652
2736
  return {
2653
2737
  messages,
@@ -2662,7 +2746,7 @@ var PassiveHandler = {
2662
2746
  const damageIncrease = effectiveLayers * 2.5;
2663
2747
  const maxIncrease = 50;
2664
2748
  const messages = [];
2665
- let statusMsg = `❄️ 【寒冷】生效:当前${freezingLayers}层`;
2749
+ let statusMsg = `❄️ 【寒冷】生效:当前${freezingLayers}层“寒冷”`;
2666
2750
  statusMsg += `,受到的伤害+${damageIncrease}%`;
2667
2751
  if (damageIncrease >= maxIncrease) {
2668
2752
  statusMsg += ``;
@@ -2761,7 +2845,7 @@ var PassiveHandler = {
2761
2845
  const currentFreezing = targetBoss.freezing || 0;
2762
2846
  let immuneChance = 55 - currentFreezing * 5;
2763
2847
  immuneChance = Math.max(immuneChance, 5);
2764
- if (currentEnergy < 100) {
2848
+ if (currentEnergy < 300) {
2765
2849
  return null;
2766
2850
  }
2767
2851
  const roll = Math.random() * 100;
@@ -2789,7 +2873,7 @@ var PassiveHandler = {
2789
2873
  const currentEnergy = targetBoss.energy || 0;
2790
2874
  const currentFreezing = targetBoss.freezing || 0;
2791
2875
  const maxEnergy = 1e3;
2792
- if (currentEnergy < maxEnergy * 0.1) {
2876
+ if (currentEnergy < maxEnergy * 0.3) {
2793
2877
  return null;
2794
2878
  }
2795
2879
  let triggerChance = 60 - currentFreezing * 5;
@@ -3288,10 +3372,322 @@ var PassiveHandler = {
3288
3372
  targetBoss.Skillcountpoints = newCount;
3289
3373
  return {
3290
3374
  messages: [
3291
- `⚡ 【脉冲扰乱枪】武器效果:减少${targetBoss.name} 2层技能计数(当前${newCount}层)`
3375
+ `⚡ 【脉冲扰乱枪】武器效果:使${targetBoss.name}的技能层数减少2(当前${newCount}层)`
3292
3376
  ]
3293
3377
  };
3294
3378
  }, "handlePulseDisruptor"),
3379
+ // === 星界之风 ===
3380
+ handleStellarWind: /* @__PURE__ */ __name(async (ctx, targetBoss, initialDamage, activeBosses, bossGroup) => {
3381
+ if (!targetBoss.skills.includes("星界之风") || initialDamage === 0) return null;
3382
+ if (Math.random() * 100 < 5) {
3383
+ const groupMembers = activeBosses.filter(
3384
+ (b) => b.groupId === targetBoss.groupId && b.HP > 0
3385
+ );
3386
+ const updates = [];
3387
+ const messages = ["🌠 【星界之风】生效:治疗所有存活异形500点血量"];
3388
+ 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);
3393
+ updates.push(
3394
+ ctx.database.set(
3395
+ "ggcevo_boss",
3396
+ { name: member.name },
3397
+ { HP: newHP }
3398
+ )
3399
+ );
3400
+ messages.push(`${member.name} +${healAmount}HP`);
3401
+ }
3402
+ await Promise.all(updates);
3403
+ return { messages };
3404
+ }
3405
+ return null;
3406
+ }, "handleStellarWind"),
3407
+ // === 心灵狂热 ===
3408
+ handlePsychicFrenzy: /* @__PURE__ */ __name(function(targetBoss, currentHP, maxHP) {
3409
+ if (!targetBoss.skills.includes("心灵狂热")) return null;
3410
+ if (currentHP / maxHP < 0.5) {
3411
+ return {
3412
+ damageMultiplier: -0.5,
3413
+ messages: [`🌀 【心灵狂热】生效:进入心灵狂热状态,受到的伤害-50%`]
3414
+ };
3415
+ }
3416
+ return null;
3417
+ }, "handlePsychicFrenzy"),
3418
+ // === 宇宙能量 ===
3419
+ handleCosmicEnergy: /* @__PURE__ */ __name(async (ctx, targetBoss, initialDamage, bossGroup) => {
3420
+ if (!targetBoss.skills.includes("宇宙能量")) return null;
3421
+ const maxEnergy = 1e3;
3422
+ const currentEnergy = targetBoss.energy || 0;
3423
+ const availableSpace = maxEnergy - currentEnergy;
3424
+ const energyToAdd = Math.min(initialDamage, availableSpace);
3425
+ const newEnergy = currentEnergy + energyToAdd;
3426
+ let healAmount = 0;
3427
+ if (newEnergy >= maxEnergy) {
3428
+ const overflow = initialDamage - energyToAdd;
3429
+ if (overflow > 0) {
3430
+ const maxHP = PassiveHandler.getMemberConfig(targetBoss.name, bossGroup)?.maxHP || 0;
3431
+ if (maxHP > 0) {
3432
+ healAmount = Math.min(overflow, maxHP - targetBoss.HP);
3433
+ }
3434
+ }
3435
+ }
3436
+ await ctx.database.set(
3437
+ "ggcevo_boss",
3438
+ { name: targetBoss.name },
3439
+ { energy: newEnergy }
3440
+ );
3441
+ return {
3442
+ messages: [
3443
+ `🌌 【宇宙能量】生效:获得${energyToAdd}点能量`,
3444
+ healAmount > 0 ? `💫 能量溢出,回复${healAmount}点生命值` : ""
3445
+ ].filter(Boolean),
3446
+ healAmount
3447
+ };
3448
+ }, "handleCosmicEnergy"),
3449
+ // === 光影之刃 ===
3450
+ handleLightblade: /* @__PURE__ */ __name(async (ctx, targetBoss) => {
3451
+ if (!targetBoss.skills.includes("光影之刃")) return null;
3452
+ const currentStacks = targetBoss.Skillcountpoints || 0;
3453
+ const newStacks = currentStacks + 1;
3454
+ await ctx.database.set(
3455
+ "ggcevo_boss",
3456
+ { name: targetBoss.name },
3457
+ { Skillcountpoints: newStacks }
3458
+ );
3459
+ return {
3460
+ messages: [`✨ 【光影之刃】生效:获得1层光影之刃`]
3461
+ };
3462
+ }, "handleLightblade"),
3463
+ // === 远古预兆 ===
3464
+ handleAncientOmen: /* @__PURE__ */ __name(async (ctx, targetBoss) => {
3465
+ if (!targetBoss.skills.includes("远古预兆")) return null;
3466
+ const lightbladeStacks = targetBoss.Skillcountpoints || 0;
3467
+ const immuneChance = 5 + lightbladeStacks;
3468
+ if (Math.random() * 100 < immuneChance) {
3469
+ const maxEnergy = 1e3;
3470
+ const currentEnergy = targetBoss.energy || 0;
3471
+ const newEnergy = Math.min(currentEnergy + 100, maxEnergy);
3472
+ await ctx.database.set(
3473
+ "ggcevo_boss",
3474
+ { name: targetBoss.name },
3475
+ { energy: newEnergy }
3476
+ );
3477
+ return {
3478
+ immune: true,
3479
+ messages: [
3480
+ `🔮 【远古预兆】生效:免疫此次伤害`,
3481
+ `⚡ 回复100点能量`
3482
+ ]
3483
+ };
3484
+ }
3485
+ return null;
3486
+ }, "handleAncientOmen"),
3487
+ // === 超视距穿梭 ===
3488
+ handleHyperspaceSkip: /* @__PURE__ */ __name(function(targetBoss) {
3489
+ if (!targetBoss.skills.includes("超视距穿梭")) return null;
3490
+ const maxEnergy = 1e3;
3491
+ const currentEnergy = targetBoss.energy || 0;
3492
+ const lightbladeStacks = targetBoss.Skillcountpoints || 0;
3493
+ 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
+ };
3503
+ }
3504
+ }
3505
+ return null;
3506
+ }, "handleHyperspaceSkip"),
3507
+ // === 复苏 ===
3508
+ handleRevival: /* @__PURE__ */ __name(async function(ctx, targetBoss, currentHP, maxHP) {
3509
+ if (!targetBoss.skills.includes("复苏") || currentHP > 0) return null;
3510
+ const healAmount = Math.floor(maxHP * 0.5);
3511
+ const updatedHP = Math.min(currentHP + healAmount, maxHP);
3512
+ const maxEnergy = 1e3;
3513
+ let newSkills = targetBoss.skills;
3514
+ if (!newSkills.includes("灵能构造炉")) {
3515
+ newSkills = [...newSkills, "灵能构造炉"];
3516
+ }
3517
+ newSkills = newSkills.filter((skill) => skill !== "复苏");
3518
+ await ctx.database.set(
3519
+ "ggcevo_boss",
3520
+ { name: targetBoss.name },
3521
+ {
3522
+ HP: updatedHP,
3523
+ energy: maxEnergy,
3524
+ skills: newSkills
3525
+ }
3526
+ );
3527
+ return {
3528
+ updatedHP,
3529
+ messages: [
3530
+ `🔥 【复苏】生效:免于死亡,回复50%最大生命值`,
3531
+ `⚡ 能量回复为100%`,
3532
+ `获得新技能【灵能构造炉】`
3533
+ ]
3534
+ };
3535
+ }, "handleRevival"),
3536
+ // === 灵能构造炉 ===
3537
+ handleConstructor: /* @__PURE__ */ __name(async function(ctx, targetBoss) {
3538
+ if (!targetBoss.skills.includes("灵能构造炉")) return null;
3539
+ const allSkills = ["天启超载护盾", "塌缩脉冲", "地毯式轰炸", "轰炸引导"];
3540
+ const hasAllSkills = allSkills.every((skill) => targetBoss.skills.includes(skill));
3541
+ if (hasAllSkills) {
3542
+ const newSkills = targetBoss.skills.filter((skill) => skill !== "灵能构造炉");
3543
+ await ctx.database.set(
3544
+ "ggcevo_boss",
3545
+ { name: targetBoss.name },
3546
+ { skills: newSkills }
3547
+ );
3548
+ return {
3549
+ messages: [
3550
+ `⚙️ 【灵能构造炉】生效:所有技能已获取完毕,该技能已移除`
3551
+ ]
3552
+ };
3553
+ }
3554
+ const lightbladeStacks = targetBoss.Skillcountpoints || 0;
3555
+ const triggerChance = 5 + lightbladeStacks;
3556
+ if (Math.random() * 100 < triggerChance) {
3557
+ const availableSkills = allSkills.filter(
3558
+ (skill) => !targetBoss.skills.includes(skill)
3559
+ );
3560
+ if (availableSkills.length === 0) return null;
3561
+ const randomSkill = availableSkills[Math.floor(Math.random() * availableSkills.length)];
3562
+ const newSkills = [...targetBoss.skills, randomSkill];
3563
+ await ctx.database.set(
3564
+ "ggcevo_boss",
3565
+ { name: targetBoss.name },
3566
+ { skills: newSkills }
3567
+ );
3568
+ return {
3569
+ messages: [
3570
+ `⚙️ 【灵能构造炉】生效:获得新技能【${randomSkill}】`,
3571
+ `剩余可获取技能:${availableSkills.length - 1}/${allSkills.length}`
3572
+ ]
3573
+ };
3574
+ }
3575
+ return null;
3576
+ }, "handleConstructor"),
3577
+ // === 天启超载护盾 ===
3578
+ handleTyrsShield: /* @__PURE__ */ __name(async function(ctx, targetBoss, activeBosses, bossGroup) {
3579
+ if (!targetBoss.skills.includes("天启超载护盾")) return null;
3580
+ const lightbladeStacks = targetBoss.Skillcountpoints || 0;
3581
+ if (lightbladeStacks === 0) return null;
3582
+ const triggerChance = 10;
3583
+ if (Math.random() * 100 < triggerChance) {
3584
+ const groupMembers = activeBosses.filter(
3585
+ (b) => b.groupId === targetBoss.groupId && b.HP > 0
3586
+ );
3587
+ const healAmount = lightbladeStacks * 100;
3588
+ const updates = [];
3589
+ const messages = [`🛡️ 【天启超载护盾】生效:消耗${lightbladeStacks}层光影之刃,治疗所有存活异形`];
3590
+ for (const member of groupMembers) {
3591
+ const maxHP = (await this.getMemberConfig(member.name, bossGroup))?.maxHP;
3592
+ if (!maxHP) continue;
3593
+ const heal = Math.min(healAmount, maxHP - member.HP);
3594
+ if (heal > 0) {
3595
+ const newHP = member.HP + heal;
3596
+ updates.push(
3597
+ ctx.database.set(
3598
+ "ggcevo_boss",
3599
+ { name: member.name },
3600
+ { HP: newHP }
3601
+ )
3602
+ );
3603
+ messages.push(`${member.name} +${heal}HP`);
3604
+ }
3605
+ }
3606
+ updates.push(
3607
+ ctx.database.set(
3608
+ "ggcevo_boss",
3609
+ { name: targetBoss.name },
3610
+ { Skillcountpoints: 0 }
3611
+ )
3612
+ );
3613
+ await Promise.all(updates);
3614
+ return { messages };
3615
+ }
3616
+ return null;
3617
+ }, "handleTyrsShield"),
3618
+ // === 塌缩脉冲 ===
3619
+ handleCollapsePulse: /* @__PURE__ */ __name(async function(ctx, targetBoss) {
3620
+ if (!targetBoss.skills.includes("塌缩脉冲")) return null;
3621
+ const triggerChance = 100;
3622
+ if (Math.random() * 100 < triggerChance) {
3623
+ const currentStacks = targetBoss.Skillcountpoints || 0;
3624
+ const newStacks = currentStacks + 1;
3625
+ await ctx.database.set(
3626
+ "ggcevo_boss",
3627
+ { name: targetBoss.name },
3628
+ { Skillcountpoints: newStacks }
3629
+ );
3630
+ return {
3631
+ messages: [`💥 【塌缩脉冲】生效:额外获得1层光影之刃`]
3632
+ };
3633
+ }
3634
+ return null;
3635
+ }, "handleCollapsePulse"),
3636
+ // === 地毯式轰炸 ===
3637
+ handleCarpetBombing: /* @__PURE__ */ __name(async function(ctx, targetBoss) {
3638
+ if (!targetBoss.skills.includes("地毯式轰炸")) return null;
3639
+ const triggerChance = 100;
3640
+ const messages = [];
3641
+ let damageMultiplier = 0;
3642
+ if (Math.random() * 100 < triggerChance) {
3643
+ const hasLoneWolf = targetBoss.skills.includes("孤立无援");
3644
+ if (hasLoneWolf) {
3645
+ const newSkills = targetBoss.skills.filter((skill) => skill !== "孤立无援");
3646
+ await ctx.database.set(
3647
+ "ggcevo_boss",
3648
+ { name: targetBoss.name },
3649
+ { skills: newSkills }
3650
+ );
3651
+ messages.push(`💣 【地毯式轰炸】生效:移除孤立无援技能`);
3652
+ } else {
3653
+ messages.push(`💣 【地毯式轰炸】生效:`);
3654
+ }
3655
+ damageMultiplier = -0.5;
3656
+ messages.push(`🔥 我心中的怒火胜过千万个太阳!受到的伤害-50%`);
3657
+ }
3658
+ return {
3659
+ messages,
3660
+ damageMultiplier
3661
+ };
3662
+ }, "handleCarpetBombing"),
3663
+ // === 轰炸引导 ===
3664
+ handleBombardmentGuidance: /* @__PURE__ */ __name(async function(ctx, targetBoss) {
3665
+ if (!targetBoss.skills.includes("轰炸引导")) return null;
3666
+ const lightbladeStacks = targetBoss.Skillcountpoints || 0;
3667
+ if (lightbladeStacks === 0) return null;
3668
+ const triggerChance = 10;
3669
+ if (Math.random() * 100 < triggerChance) {
3670
+ const energyGain = lightbladeStacks * 100;
3671
+ const maxEnergy = 1e3;
3672
+ const currentEnergy = targetBoss.energy || 0;
3673
+ const newEnergy = Math.min(currentEnergy + energyGain, maxEnergy);
3674
+ await ctx.database.set(
3675
+ "ggcevo_boss",
3676
+ { name: targetBoss.name },
3677
+ {
3678
+ energy: newEnergy,
3679
+ Skillcountpoints: 0
3680
+ }
3681
+ );
3682
+ return {
3683
+ messages: [
3684
+ `🎯 【轰炸引导】生效:消耗${lightbladeStacks}层光影之刃`,
3685
+ `⚡ 回复${energyGain}点能量`
3686
+ ]
3687
+ };
3688
+ }
3689
+ return null;
3690
+ }, "handleBombardmentGuidance"),
3295
3691
  // 修改后的伤害处理函数
3296
3692
  handlePassives: /* @__PURE__ */ __name(async function(ctx, handle, targetBoss, initialDamage, currentHP, maxHP, weaponName, weaponData, bossGroup) {
3297
3693
  let messages = [];
@@ -3375,6 +3771,15 @@ var PassiveHandler = {
3375
3771
  initialDamage: 0
3376
3772
  };
3377
3773
  }
3774
+ const ancientOmenResult = await this.handleAncientOmen(ctx, targetBoss);
3775
+ if (ancientOmenResult?.immune) {
3776
+ return {
3777
+ currentHP: targetBoss.HP,
3778
+ messages: ancientOmenResult.messages,
3779
+ skillUpdates: [],
3780
+ initialDamage: 0
3781
+ };
3782
+ }
3378
3783
  targetBoss.skills.forEach((skill) => {
3379
3784
  const config = passiveConfig[skill];
3380
3785
  if (config && config.effect !== void 0 && config.effect !== 0) {
@@ -3452,6 +3857,21 @@ var PassiveHandler = {
3452
3857
  nerfMultiplier += rageResult.damageMultiplier;
3453
3858
  messages.push(...rageResult.messages);
3454
3859
  }
3860
+ const hyperspaceResult = this.handleHyperspaceSkip(targetBoss);
3861
+ if (hyperspaceResult) {
3862
+ nerfMultiplier += hyperspaceResult.damageMultiplier;
3863
+ messages.push(...hyperspaceResult.messages);
3864
+ }
3865
+ const frenzyResult = this.handlePsychicFrenzy(targetBoss, currentHP, maxHP);
3866
+ if (frenzyResult) {
3867
+ nerfMultiplier += frenzyResult.damageMultiplier;
3868
+ messages.push(...frenzyResult.messages);
3869
+ }
3870
+ const bombingResult = await this.handleCarpetBombing(ctx, targetBoss);
3871
+ if (bombingResult) {
3872
+ nerfMultiplier += bombingResult.damageMultiplier;
3873
+ messages.push(...bombingResult.messages);
3874
+ }
3455
3875
  if (solarFlareResult.messages.length > 0) {
3456
3876
  messages.push(...solarFlareResult.messages);
3457
3877
  }
@@ -3480,13 +3900,16 @@ var PassiveHandler = {
3480
3900
  finalDamage = Math.floor(finalDamage);
3481
3901
  finalDamage = Math.max(finalDamage, 1);
3482
3902
  currentHP = targetBoss.HP - finalDamage;
3903
+ if (currentHP < 0) {
3904
+ currentHP = 0;
3905
+ }
3483
3906
  if (appliedIgnoreMessages.length > 0) {
3484
3907
  messages.push(...appliedIgnoreMessages);
3485
3908
  messages.push(
3486
3909
  `⚡ 减伤效果:${(nerfMultiplier * 100).toFixed(0)}% → ${(effectiveNerf * 100).toFixed(0)}%`
3487
3910
  );
3488
3911
  }
3489
- if (currentHP <= 0 && !targetBoss.skills.includes("求生本能I") && !targetBoss.skills.includes("求生本能II")) {
3912
+ if (currentHP <= 0 && !targetBoss.skills.includes("求生本能I") && !targetBoss.skills.includes("求生本能II") && !targetBoss.skills.includes("复苏")) {
3490
3913
  return {
3491
3914
  currentHP,
3492
3915
  messages,
@@ -3518,12 +3941,6 @@ var PassiveHandler = {
3518
3941
  if (moldResult) {
3519
3942
  messages.push(...moldResult.messages);
3520
3943
  }
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
3944
  const pulseResult = await this.handlePulse(
3528
3945
  ctx,
3529
3946
  targetBoss,
@@ -3555,6 +3972,32 @@ var PassiveHandler = {
3555
3972
  }
3556
3973
  }
3557
3974
  }
3975
+ const stellarWindResult = await this.handleStellarWind(ctx, targetBoss, initialDamage, activeBosses, bossGroup);
3976
+ if (stellarWindResult) {
3977
+ messages.push(...stellarWindResult.messages);
3978
+ }
3979
+ const shieldResult = await this.handleTyrsShield(ctx, targetBoss, activeBosses, bossGroup);
3980
+ if (shieldResult) {
3981
+ messages.push(...shieldResult.messages);
3982
+ }
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
+ const survivalResult = this.handleSurvivalInstinct(targetBoss, currentHP, maxHP);
3991
+ if (survivalResult) {
3992
+ currentHP = survivalResult.updatedHP;
3993
+ messages.push(...survivalResult.messages);
3994
+ skillUpdates.push(...survivalResult.skillUpdates);
3995
+ }
3996
+ const revivalResult = await this.handleRevival(ctx, targetBoss, currentHP, maxHP);
3997
+ if (revivalResult) {
3998
+ currentHP = revivalResult.updatedHP;
3999
+ messages.push(...revivalResult.messages);
4000
+ }
3558
4001
  const pulseDisruptorResult = await this.handlePulseDisruptor(
3559
4002
  ctx,
3560
4003
  targetBoss,
@@ -3571,6 +4014,10 @@ var PassiveHandler = {
3571
4014
  if (arcRifleResult) {
3572
4015
  messages.push(...arcRifleResult.messages);
3573
4016
  }
4017
+ const constructorResult = await this.handleConstructor(ctx, targetBoss);
4018
+ if (constructorResult) {
4019
+ messages.push(...constructorResult.messages);
4020
+ }
3574
4021
  const coldAdaptResult = await this.handleColdAdaptation(ctx, targetBoss, weaponName);
3575
4022
  if (coldAdaptResult) {
3576
4023
  messages.push(...coldAdaptResult.messages);
@@ -3584,6 +4031,14 @@ var PassiveHandler = {
3584
4031
  if (sentryResult) {
3585
4032
  messages.push(...sentryResult.messages);
3586
4033
  }
4034
+ const lightbladeResult = await this.handleLightblade(ctx, targetBoss);
4035
+ if (lightbladeResult) {
4036
+ messages.push(...lightbladeResult.messages);
4037
+ }
4038
+ const CollapsepulseResult = await this.handleCollapsePulse(ctx, targetBoss);
4039
+ if (CollapsepulseResult) {
4040
+ messages.push(...CollapsepulseResult.messages);
4041
+ }
3587
4042
  const tagChangeResult = await this.handleConductorTagChange(ctx, targetBoss, currentHP, maxHP);
3588
4043
  if (tagChangeResult) {
3589
4044
  messages.push(...tagChangeResult.messages);
@@ -3592,6 +4047,10 @@ var PassiveHandler = {
3592
4047
  if (shockwaveResult) {
3593
4048
  messages.push(...shockwaveResult.messages);
3594
4049
  }
4050
+ const guidanceResult = await this.handleBombardmentGuidance(ctx, targetBoss);
4051
+ if (guidanceResult) {
4052
+ messages.push(...guidanceResult.messages);
4053
+ }
3595
4054
  const gammaRadResult = await this.handleGammaRadiation(ctx, targetBoss, weaponName);
3596
4055
  if (gammaRadResult) {
3597
4056
  messages.push(...gammaRadResult.messages);
@@ -4756,16 +5215,14 @@ ${itemDetails.join("\n")}`;
4756
5215
  }
4757
5216
  const messages = [];
4758
5217
  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
- }
5218
+ let baseTickets = 0;
5219
+ if (monthlyDays < 7) baseTickets = 3;
5220
+ else if (monthlyDays === 7) baseTickets = 4;
5221
+ else if (monthlyDays === 14) baseTickets = 5;
5222
+ else if (monthlyDays === 21) baseTickets = 6;
5223
+ else if (monthlyDays === 28) baseTickets = 7;
5224
+ else baseTickets = 3;
5225
+ let tickets = baseTickets;
4769
5226
  const [systemFirmwareTech] = await ctx.database.get("ggcevo_tech", { handle, techId: 5 }).catch(() => [{ level: 0 }]);
4770
5227
  const systemFirmwareLevel = Math.min(systemFirmwareTech?.level || 0, 5);
4771
5228
  const [careerData] = await ctx.database.get("ggcevo_careers", { handle });
@@ -4839,9 +5296,9 @@ ${itemDetails.join("\n")}`;
4839
5296
  isused: false
4840
5297
  });
4841
5298
  if (meowEffect) {
4842
- tickets *= 2;
5299
+ tickets = baseTickets * 2;
4843
5300
  totalBonus += 1;
4844
- messages.push("🐾 喵喵财源祈愿:咕咕币+100%,金币+100%");
5301
+ messages.push("🐾 喵喵财源祈愿:金币+100%,咕咕币+100%");
4845
5302
  }
4846
5303
  const finalPoints = Math.round(basePoints * (1 + totalBonus));
4847
5304
  let redCrystal = 0;
@@ -4884,7 +5341,19 @@ ${itemDetails.join("\n")}`;
4884
5341
  ⚡ 加成效果:
4885
5342
  ▸ ${messages.join("\n▸ ")}`;
4886
5343
  }
4887
- return "签到成功!本月累计签到" + monthlyDays + "天,获得:\n💰 金币 x " + finalPoints + (totalBonus > 0 ? " (基础值:" + basePoints + "金币)" : "") + "\n🪙 咕咕币 x " + tickets + effectMessage;
5344
+ let coinMessage = `💰 金币 x ${finalPoints}`;
5345
+ if (totalBonus > 0) {
5346
+ coinMessage += ` (基础值:${basePoints}金币)`;
5347
+ }
5348
+ let ticketMessage;
5349
+ if (meowEffect) {
5350
+ ticketMessage = `🪙 咕咕币 x ${tickets} (基础值:${baseTickets}枚)`;
5351
+ } else {
5352
+ ticketMessage = `🪙 咕咕币 x ${tickets}`;
5353
+ }
5354
+ return `签到成功!本月累计签到${monthlyDays}天,获得:
5355
+ ${coinMessage}
5356
+ ${ticketMessage}${effectMessage}`;
4888
5357
  } catch (error) {
4889
5358
  console.error("签到命令时发生错误:", error);
4890
5359
  return "服务器繁忙,请稍后尝试。";
@@ -6876,7 +7345,7 @@ ${validTypes.join("、")}`;
6876
7345
  } else {
6877
7346
  result.push("➤ 无");
6878
7347
  }
6879
- const countingSkill = mainBoss.skills?.find((s) => ["冷适应", "岗哨机枪", "吸血唾液", "灼烧粘液"].includes(s));
7348
+ const countingSkill = mainBoss.skills?.find((s) => ["冷适应", "岗哨机枪", "吸血唾液", "灼烧粘液", "光影之刃"].includes(s));
6880
7349
  if (countingSkill) {
6881
7350
  result.push(`📈 ${countingSkill}:${mainBoss.Skillcountpoints}层`);
6882
7351
  }
@@ -6909,7 +7378,7 @@ ${validTypes.join("、")}`;
6909
7378
  } else {
6910
7379
  minionInfo.push("➤ 无");
6911
7380
  }
6912
- const minionCountingSkill = minion.skills?.find((s) => ["冷适应", "岗哨机枪", "吸血唾液", "灼烧粘液"].includes(s));
7381
+ const minionCountingSkill = minion.skills?.find((s) => ["冷适应", "岗哨机枪", "吸血唾液", "灼烧粘液", "光影之刃"].includes(s));
6913
7382
  if (minionCountingSkill) {
6914
7383
  minionInfo.push(`📈 ${minionCountingSkill}:${minion.Skillcountpoints}层`);
6915
7384
  }
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.27",
5
5
  "main": "lib/index.js",
6
6
  "typings": "lib/index.d.ts",
7
7
  "files": [