koishi-plugin-ggcevo-game 1.4.27 → 1.4.29

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.
@@ -39,7 +39,7 @@ export declare const bossPool: readonly [{
39
39
  maxHP: number;
40
40
  energy: number;
41
41
  tags: ("重甲" | "生物" | "惧热" | "异形" | "重型")[];
42
- passive: ("冰霜进化" | "冰霜环绕")[];
42
+ passive: ("冰霜环绕" | "冰霜进化")[];
43
43
  };
44
44
  minions: {
45
45
  name: string;
@@ -47,7 +47,7 @@ export declare const bossPool: readonly [{
47
47
  maxHP: number;
48
48
  energy: number;
49
49
  tags: ("生物" | "惧热" | "异形")[];
50
- passive: ("弱化形态" | "冰霜回复" | "冰霜进化")[];
50
+ passive: ("冰霜回复" | "弱化形态" | "冰霜进化")[];
51
51
  }[];
52
52
  }, {
53
53
  main: {
@@ -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;
@@ -129,11 +129,11 @@ export declare const passiveConfig: {
129
129
  };
130
130
  readonly 腐蚀胆汁: {
131
131
  readonly effect: 0;
132
- readonly description: "当“胆汁”达到10层后,下一次受到攻击将治愈所有存活异形1000点血量并清空层数";
132
+ readonly description: "当“胆汁”达到10层后,下一次受到攻击将回复所有存活异形1000点血量并清空层数";
133
133
  };
134
134
  readonly 火焰吐息: {
135
135
  readonly effect: 0;
136
- readonly description: "当“胆汁”达到20层后,下一次攻击将治愈所有存活异形50%的最大生命值并清空层数";
136
+ readonly description: "当“胆汁”达到20层后,下一次攻击将回复所有存活异形50%的最大生命值并清空层数";
137
137
  };
138
138
  readonly 太阳耀斑: {
139
139
  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: "受到致命伤害时,免于死亡,快速回复自身50%的最大生命值和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: "受到攻击后,有1%的概率会随机获得以下4个技能之一(天启超载护盾,塌缩脉冲,地毯式轰炸,轰炸引导)";
197
201
  };
198
202
  readonly 天启超载护盾: {
199
203
  readonly effect: 0;
200
- readonly description: "受到伤害后,有10%的概率消耗所有“光影之刃”层数,回复所有存活异形X点血量(X为“光影之刃”层数 x 100)";
204
+ readonly description: "受到伤害后,有5%的概率回复所有存活异形X点血量(X为“光影之刃”层数 x 10)";
201
205
  };
202
206
  readonly 塌缩脉冲: {
203
207
  readonly effect: 0;
@@ -205,10 +209,10 @@ export declare const passiveConfig: {
205
209
  };
206
210
  readonly 地毯式轰炸: {
207
211
  readonly effect: 0;
208
- readonly description: "我心中的怒火胜过千万个太阳!移除自身的“孤立无援”,并使受到的伤害-50%";
212
+ readonly description: "我心中的怒火胜过千万个太阳!移除自身的“孤立无援”,并使受到的伤害-100%";
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 50)";
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,8 +182,9 @@ 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, currentHP: number, maxHP: number, activeBosses: any[], bossGroup: BossPoolItem) => Promise<{
185
186
  messages: string[];
187
+ updatedHP: number;
186
188
  }>;
187
189
  handlePsychicFrenzy: (targetBoss: any, currentHP: number, maxHP: number) => {
188
190
  damageMultiplier: number;
@@ -200,7 +202,8 @@ export declare const PassiveHandler: {
200
202
  messages: string[];
201
203
  }>;
202
204
  handleHyperspaceSkip: (targetBoss: any) => {
203
- damageMultiplier: number;
205
+ reduction: number;
206
+ increase: number;
204
207
  messages: string[];
205
208
  };
206
209
  handleRevival: (ctx: Context, targetBoss: any, currentHP: number, maxHP: number) => Promise<{
@@ -210,8 +213,9 @@ export declare const PassiveHandler: {
210
213
  handleConstructor: (ctx: Context, targetBoss: any) => Promise<{
211
214
  messages: string[];
212
215
  }>;
213
- handleTyrsShield: (ctx: Context, targetBoss: any, activeBosses: any[], bossGroup: BossPoolItem) => Promise<{
216
+ handleTyrsShield: (ctx: Context, targetBoss: any, currentHP: number, activeBosses: any[], bossGroup: BossPoolItem) => Promise<{
214
217
  messages: string[];
218
+ updatedHP: number;
215
219
  }>;
216
220
  handleCollapsePulse: (ctx: Context, targetBoss: any) => Promise<{
217
221
  messages: string[];
package/lib/index.js CHANGED
@@ -237,7 +237,7 @@ var weaponConfig = {
237
237
  category: "能量武器",
238
238
  damage: 32,
239
239
  description: "一种原型能量武器,能够发射强大的脉冲",
240
- specialeffect: "攻击减少目标2层技能计数",
240
+ specialeffect: "攻击使目标的技能层数减少2",
241
241
  price: 1500,
242
242
  redCrystalCost: 15,
243
243
  isantiair: true,
@@ -250,7 +250,7 @@ var weaponConfig = {
250
250
  damage: 88,
251
251
  description: "一件传奇武器",
252
252
  specialeffect: "",
253
- price: 7500,
253
+ price: 6400,
254
254
  redCrystalCost: 150,
255
255
  isantiair: true,
256
256
  tagEffects: {
@@ -266,7 +266,7 @@ var weaponConfig = {
266
266
  damage: 70,
267
267
  description: "一件传奇武器",
268
268
  specialeffect: "攻击暴击率+80%",
269
- price: 7500,
269
+ price: 6400,
270
270
  redCrystalCost: 150,
271
271
  isantiair: true,
272
272
  tagEffects: {
@@ -280,7 +280,7 @@ var weaponConfig = {
280
280
  damage: 80,
281
281
  description: "这是传说中的武器",
282
282
  specialeffect: "",
283
- price: 7500,
283
+ price: 6400,
284
284
  redCrystalCost: 150,
285
285
  isantiair: false,
286
286
  tagEffects: {
@@ -295,7 +295,7 @@ var weaponConfig = {
295
295
  damage: 120,
296
296
  description: "一件传奇武器",
297
297
  specialeffect: "",
298
- price: 7500,
298
+ price: 6400,
299
299
  redCrystalCost: 150,
300
300
  isantiair: true,
301
301
  tagEffects: {
@@ -309,7 +309,7 @@ var weaponConfig = {
309
309
  damage: 100,
310
310
  description: "优雅而独特的武器",
311
311
  specialeffect: "无视目标100%的减伤效果",
312
- price: 7500,
312
+ price: 6400,
313
313
  redCrystalCost: 150,
314
314
  isantiair: false,
315
315
  tagEffects: {}
@@ -321,7 +321,7 @@ var weaponConfig = {
321
321
  damage: 100,
322
322
  description: "一件传奇武器",
323
323
  specialeffect: "攻击消耗目标500点能量",
324
- price: 7500,
324
+ price: 6400,
325
325
  redCrystalCost: 150,
326
326
  isantiair: true,
327
327
  tagEffects: {
@@ -335,7 +335,7 @@ var weaponConfig = {
335
335
  damage: 60,
336
336
  description: "一件传奇武器",
337
337
  specialeffect: "攻击无视目标80%的减伤效果",
338
- price: 7500,
338
+ price: 6400,
339
339
  redCrystalCost: 150,
340
340
  isantiair: true,
341
341
  tagEffects: {
@@ -349,7 +349,7 @@ var weaponConfig = {
349
349
  damage: 90,
350
350
  description: "一件传奇武器",
351
351
  specialeffect: "",
352
- price: 7500,
352
+ price: 6400,
353
353
  redCrystalCost: 150,
354
354
  isantiair: true,
355
355
  tagEffects: {
@@ -553,10 +553,10 @@ var spaceStationCrewConfig = [
553
553
  },
554
554
  {
555
555
  professionName: "武器中士",
556
- effect: "攻击伤害+15%; 购买武器(非传奇)享有20%的折扣",
556
+ effect: "攻击伤害+15%; 购买武器享有50%的折扣",
557
557
  requirements: "当期伤害榜累计造成100及以上伤害",
558
558
  Jobtransfer: true,
559
- costcoins: 2e3
559
+ costcoins: 3e3
560
560
  },
561
561
  {
562
562
  professionName: "医疗专家",
@@ -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,
@@ -1387,11 +1387,11 @@ var passiveConfig = {
1387
1387
  },
1388
1388
  "腐蚀胆汁": {
1389
1389
  effect: 0,
1390
- description: "当“胆汁”达到10层后,下一次受到攻击将治愈所有存活异形1000点血量并清空层数"
1390
+ description: "当“胆汁”达到10层后,下一次受到攻击将回复所有存活异形1000点血量并清空层数"
1391
1391
  },
1392
1392
  "火焰吐息": {
1393
1393
  effect: 0,
1394
- description: "当“胆汁”达到20层后,下一次攻击将治愈所有存活异形50%的最大生命值并清空层数"
1394
+ description: "当“胆汁”达到20层后,下一次攻击将回复所有存活异形50%的最大生命值并清空层数"
1395
1395
  },
1396
1396
  "太阳耀斑": {
1397
1397
  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: "受到致命伤害时,免于死亡,快速回复自身50%的最大生命值和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: "受到攻击后,有1%的概率会随机获得以下4个技能之一(天启超载护盾,塌缩脉冲,地毯式轰炸,轰炸引导)"
1455
1459
  },
1456
1460
  "天启超载护盾": {
1457
1461
  effect: 0,
1458
- description: "受到伤害后,有10%的概率消耗所有“光影之刃”层数,回复所有存活异形X点血量(X为“光影之刃”层数 x 100)"
1462
+ description: "受到伤害后,有5%的概率回复所有存活异形X点血量(X为“光影之刃”层数 x 10)"
1459
1463
  },
1460
1464
  "塌缩脉冲": {
1461
1465
  effect: 0,
@@ -1463,11 +1467,11 @@ var passiveConfig = {
1463
1467
  },
1464
1468
  "地毯式轰炸": {
1465
1469
  effect: 0,
1466
- description: "我心中的怒火胜过千万个太阳!移除自身的“孤立无援”,并使受到的伤害-50%"
1470
+ description: "我心中的怒火胜过千万个太阳!移除自身的“孤立无援”,并使受到的伤害-100%"
1467
1471
  },
1468
1472
  "轰炸引导": {
1469
1473
  effect: 0,
1470
- description: "受到伤害后,有10%的概率概率消耗所有“光影之刃”层数,回复自身X点“能量”(X为“光影之刃”层数 x 100)"
1474
+ description: "受到伤害后,有10%的概率概率回复自身X点“能量”(X为“光影之刃”层数 x 50)"
1471
1475
  }
1472
1476
  };
1473
1477
 
@@ -2015,13 +2019,7 @@ async function applyItemEffect(ctx, session, handle, itemConfig2, target) {
2015
2019
  );
2016
2020
  return {
2017
2021
  success: true,
2018
- message: `成功使用${itemName},使${target}的技能层数减少${reducedAmount}层(当前:${newCount}层)。`
2019
- };
2020
- }
2021
- if (itemConfig2.id === 3 || itemConfig2.id === 5) {
2022
- return {
2023
- success: false,
2024
- message: `此物品无法使用。`
2022
+ message: `成功使用${itemName},使${target}的技能层数减少10层`
2025
2023
  };
2026
2024
  }
2027
2025
  if (itemConfig2.id === 4) {
@@ -2045,7 +2043,7 @@ async function applyItemEffect(ctx, session, handle, itemConfig2, target) {
2045
2043
  );
2046
2044
  return {
2047
2045
  success: true,
2048
- message: `成功使用${itemName},消耗${target}500点能量。`
2046
+ message: `成功使用${itemName},消耗${target}500点能量`
2049
2047
  };
2050
2048
  }
2051
2049
  return {
@@ -2623,28 +2621,36 @@ var PassiveHandler = {
2623
2621
  messages: [`🛡️ 【结构装甲】生效:${msg}`]
2624
2622
  };
2625
2623
  }, "handleStructuralArmor"),
2626
- // 吸血效果处理(返回综合系数)
2624
+ // 修改 handleBloodEffects 函数
2627
2625
  handleBloodEffects: /* @__PURE__ */ __name(function(targetBoss, currentHP, maxHP) {
2628
2626
  if (!targetBoss.skills.includes("吸血唾液")) return null;
2629
2627
  const bloodStacks = targetBoss.Skillcountpoints || 0;
2630
- let damageMultiplier = 0;
2628
+ let buffAmount = 0;
2629
+ let nerfAmount = 0;
2631
2630
  const messages = [];
2632
- if (targetBoss.skills.includes("吸血唾液")) {
2631
+ if (bloodStacks > 0) {
2633
2632
  const reduction = bloodStacks * 0.05;
2634
- damageMultiplier -= reduction;
2635
- if (bloodStacks > 0) {
2636
- messages.push(`🩸 【吸血唾液】生效:受到的伤害-${bloodStacks * 5}%`);
2637
- }
2633
+ nerfAmount += reduction;
2634
+ messages.push(`🩸 【吸血唾液】生效:受到的伤害-${(reduction * 100).toFixed(0)}%`);
2638
2635
  }
2639
2636
  if (targetBoss.skills.includes("嗜血狂暴") && currentHP / maxHP < 0.5) {
2640
- damageMultiplier -= 0.2;
2637
+ nerfAmount += 0.2;
2641
2638
  messages.push(`🔥 【嗜血狂暴】生效:进入狂暴状态,受到的伤害-20%`);
2642
2639
  }
2643
2640
  if (targetBoss.skills.includes("吐血") && bloodStacks < 1) {
2644
- damageMultiplier += 0.2;
2645
- messages.push(`💔 【吐血】生效:无“吸血”层数,受到的伤害+20%`);
2641
+ buffAmount += 0.2;
2642
+ messages.push(`💔 【吐血】生效:无"吸血"层数,受到的伤害+20%`);
2646
2643
  }
2647
- return { damageMultiplier, messages };
2644
+ if (buffAmount > 0 || nerfAmount > 0) {
2645
+ return {
2646
+ buffAmount,
2647
+ // 正值增伤系数
2648
+ nerfAmount,
2649
+ // 正值减伤系数
2650
+ messages
2651
+ };
2652
+ }
2653
+ return null;
2648
2654
  }, "handleBloodEffects"),
2649
2655
  handleBloodCount: /* @__PURE__ */ __name(async function(ctx, targetBoss, currentHP, maxHP) {
2650
2656
  if (!targetBoss.skills.includes("吸血唾液")) {
@@ -3060,7 +3066,7 @@ var PassiveHandler = {
3060
3066
  { Skillcountpoints: 0 }
3061
3067
  );
3062
3068
  const messages = [
3063
- `🟢 【腐蚀胆汁】生效:消耗10层"胆汁",治愈所有存活异形`
3069
+ `🟢 【腐蚀胆汁】生效:消耗10层"胆汁",治疗所有存活异形`
3064
3070
  ];
3065
3071
  const updates = [];
3066
3072
  let updatedHP = currentHP;
@@ -3101,7 +3107,7 @@ var PassiveHandler = {
3101
3107
  { Skillcountpoints: 0 }
3102
3108
  );
3103
3109
  const messages = [
3104
- `🐲 【火焰吐息】生效:消耗20层"胆汁",治愈所有存活异形50%的最大生命值`
3110
+ `🐲 【火焰吐息】生效:消耗20层"胆汁",治疗所有存活异形50%的最大生命值`
3105
3111
  ];
3106
3112
  const updates = [];
3107
3113
  let updatedHP = currentHP;
@@ -3377,19 +3383,30 @@ var PassiveHandler = {
3377
3383
  };
3378
3384
  }, "handlePulseDisruptor"),
3379
3385
  // === 星界之风 ===
3380
- handleStellarWind: /* @__PURE__ */ __name(async (ctx, targetBoss, initialDamage, activeBosses, bossGroup) => {
3386
+ handleStellarWind: /* @__PURE__ */ __name(async (ctx, targetBoss, initialDamage, currentHP, maxHP, activeBosses, bossGroup) => {
3381
3387
  if (!targetBoss.skills.includes("星界之风") || initialDamage === 0) return null;
3382
- if (Math.random() * 100 < 5) {
3388
+ let baseChance = 5;
3389
+ const hasPsychicFrenzy = targetBoss.skills.includes("心灵狂热");
3390
+ const isInFrenzy = targetBoss.HP / maxHP < 0.5;
3391
+ if (hasPsychicFrenzy && isInFrenzy) {
3392
+ baseChance *= 2;
3393
+ }
3394
+ let lightbladeStacks = 0;
3395
+ if (targetBoss.skills.includes("闪电冲锋")) {
3396
+ lightbladeStacks = targetBoss?.Skillcountpoints || 0;
3397
+ }
3398
+ const triggerChance = baseChance + lightbladeStacks;
3399
+ if (Math.random() * 100 < triggerChance) {
3383
3400
  const groupMembers = activeBosses.filter(
3384
3401
  (b) => b.groupId === targetBoss.groupId && b.HP > 0
3385
3402
  );
3386
3403
  const updates = [];
3387
- const messages = ["🌠 【星界之风】生效:治疗所有存活异形500点血量"];
3404
+ const messages = [`🌠 【星界之风】生效:治疗所有存活异形200点血量`];
3388
3405
  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);
3406
+ const maxHP2 = PassiveHandler.getMemberConfig(member.name, bossGroup)?.maxHP;
3407
+ if (!maxHP2) continue;
3408
+ const healAmount = 200;
3409
+ const newHP = Math.min(member.HP + healAmount, maxHP2);
3393
3410
  updates.push(
3394
3411
  ctx.database.set(
3395
3412
  "ggcevo_boss",
@@ -3399,8 +3416,10 @@ var PassiveHandler = {
3399
3416
  );
3400
3417
  messages.push(`${member.name} +${healAmount}HP`);
3401
3418
  }
3419
+ if (hasPsychicFrenzy && isInFrenzy) {
3420
+ }
3402
3421
  await Promise.all(updates);
3403
- return { messages };
3422
+ return { messages, updatedHP: currentHP + 200 };
3404
3423
  }
3405
3424
  return null;
3406
3425
  }, "handleStellarWind"),
@@ -3409,8 +3428,11 @@ var PassiveHandler = {
3409
3428
  if (!targetBoss.skills.includes("心灵狂热")) return null;
3410
3429
  if (currentHP / maxHP < 0.5) {
3411
3430
  return {
3412
- damageMultiplier: -0.5,
3413
- messages: [`🌀 【心灵狂热】生效:进入心灵狂热状态,受到的伤害-50%`]
3431
+ damageMultiplier: -0.2,
3432
+ // 受到的伤害-20%
3433
+ messages: [
3434
+ `🌀 【心灵狂热】生效:进入心灵狂热状态,受到的伤害-20%`
3435
+ ]
3414
3436
  };
3415
3437
  }
3416
3438
  return null;
@@ -3424,25 +3446,30 @@ var PassiveHandler = {
3424
3446
  const energyToAdd = Math.min(initialDamage, availableSpace);
3425
3447
  const newEnergy = currentEnergy + energyToAdd;
3426
3448
  let healAmount = 0;
3449
+ let messages = [];
3450
+ if (energyToAdd > 0) {
3451
+ messages.push(`获得${energyToAdd}点能量`);
3452
+ }
3427
3453
  if (newEnergy >= maxEnergy) {
3428
3454
  const overflow = initialDamage - energyToAdd;
3429
3455
  if (overflow > 0) {
3430
3456
  const maxHP = PassiveHandler.getMemberConfig(targetBoss.name, bossGroup)?.maxHP || 0;
3431
3457
  if (maxHP > 0) {
3432
3458
  healAmount = Math.min(overflow, maxHP - targetBoss.HP);
3459
+ messages.push(`能量溢出回复${healAmount}点生命值`);
3433
3460
  }
3434
3461
  }
3435
3462
  }
3463
+ if (energyToAdd === 0 && healAmount === 0) {
3464
+ return null;
3465
+ }
3436
3466
  await ctx.database.set(
3437
3467
  "ggcevo_boss",
3438
3468
  { name: targetBoss.name },
3439
3469
  { energy: newEnergy }
3440
3470
  );
3441
3471
  return {
3442
- messages: [
3443
- `🌌 【宇宙能量】生效:获得${energyToAdd}点能量`,
3444
- healAmount > 0 ? `💫 能量溢出,回复${healAmount}点生命值` : ""
3445
- ].filter(Boolean),
3472
+ messages: [`🌌 【宇宙能量】生效:${messages.join(",")}`],
3446
3473
  healAmount
3447
3474
  };
3448
3475
  }, "handleCosmicEnergy"),
@@ -3457,15 +3484,18 @@ var PassiveHandler = {
3457
3484
  { Skillcountpoints: newStacks }
3458
3485
  );
3459
3486
  return {
3460
- messages: [`✨ 【光影之刃】生效:获得1层光影之刃`]
3487
+ messages: [`✨ 【光影之刃】生效:获得1层“光影之刃”`]
3461
3488
  };
3462
3489
  }, "handleLightblade"),
3463
3490
  // === 远古预兆 ===
3464
3491
  handleAncientOmen: /* @__PURE__ */ __name(async (ctx, targetBoss) => {
3465
3492
  if (!targetBoss.skills.includes("远古预兆")) return null;
3466
- const lightbladeStacks = targetBoss.Skillcountpoints || 0;
3467
- const immuneChance = 5 + lightbladeStacks;
3468
- if (Math.random() * 100 < immuneChance) {
3493
+ let lightbladeStacks = 0;
3494
+ if (targetBoss.skills.includes("闪电冲锋")) {
3495
+ lightbladeStacks = targetBoss?.Skillcountpoints || 0;
3496
+ }
3497
+ const totalChance = 1 + lightbladeStacks;
3498
+ if (Math.random() * 100 < totalChance) {
3469
3499
  const maxEnergy = 1e3;
3470
3500
  const currentEnergy = targetBoss.energy || 0;
3471
3501
  const newEnergy = Math.min(currentEnergy + 100, maxEnergy);
@@ -3477,8 +3507,7 @@ var PassiveHandler = {
3477
3507
  return {
3478
3508
  immune: true,
3479
3509
  messages: [
3480
- `🔮 【远古预兆】生效:免疫此次伤害`,
3481
- `⚡ 回复100点能量`
3510
+ `🔮 【远古预兆】生效:免疫此次伤害,并且回复100点能量`
3482
3511
  ]
3483
3512
  };
3484
3513
  }
@@ -3490,25 +3519,34 @@ var PassiveHandler = {
3490
3519
  const maxEnergy = 1e3;
3491
3520
  const currentEnergy = targetBoss.energy || 0;
3492
3521
  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
- }
3522
+ let reduction = 0;
3523
+ let increase = 0;
3524
+ const messages = [];
3525
+ if (currentEnergy <= maxEnergy * 0.1) {
3526
+ increase = lightbladeStacks * 0.05;
3527
+ messages.push(`能量≤10%:受到的伤害+${(increase * 100).toFixed(0)}%`);
3528
+ } else if (currentEnergy >= maxEnergy * 0.6) {
3529
+ reduction = lightbladeStacks * 0.1;
3530
+ messages.push(`能量≥60%:受到的伤害-${(reduction * 100).toFixed(0)}%`);
3531
+ } else if (currentEnergy >= maxEnergy * 0.3) {
3532
+ reduction = lightbladeStacks * 0.05;
3533
+ messages.push(`能量≥30%:受到的伤害-${(reduction * 100).toFixed(0)}%`);
3534
+ }
3535
+ if (reduction > 0 || increase > 0) {
3536
+ return {
3537
+ reduction,
3538
+ increase,
3539
+ messages: [
3540
+ `🚀 【超视距穿梭】生效:${messages.join(" | ")} (当前${lightbladeStacks}层光影之刃)`
3541
+ ]
3542
+ };
3504
3543
  }
3505
3544
  return null;
3506
3545
  }, "handleHyperspaceSkip"),
3507
3546
  // === 复苏 ===
3508
3547
  handleRevival: /* @__PURE__ */ __name(async function(ctx, targetBoss, currentHP, maxHP) {
3509
3548
  if (!targetBoss.skills.includes("复苏") || currentHP > 0) return null;
3510
- const healAmount = Math.floor(maxHP * 0.5);
3511
- const updatedHP = Math.min(currentHP + healAmount, maxHP);
3549
+ const updatedHP = maxHP * 0.5;
3512
3550
  const maxEnergy = 1e3;
3513
3551
  let newSkills = targetBoss.skills;
3514
3552
  if (!newSkills.includes("灵能构造炉")) {
@@ -3527,9 +3565,7 @@ var PassiveHandler = {
3527
3565
  return {
3528
3566
  updatedHP,
3529
3567
  messages: [
3530
- `🔥 【复苏】生效:免于死亡,回复50%最大生命值`,
3531
- `⚡ 能量回复为100%`,
3532
- `获得新技能【灵能构造炉】`
3568
+ `🔥 【复苏】生效:免于死亡,回复自身50%的最大生命值和100%的“能量”,并且获得新技能【灵能构造炉】`
3533
3569
  ]
3534
3570
  };
3535
3571
  }, "handleRevival"),
@@ -3547,13 +3583,16 @@ var PassiveHandler = {
3547
3583
  );
3548
3584
  return {
3549
3585
  messages: [
3550
- `⚙️ 【灵能构造炉】生效:所有技能已获取完毕,该技能已移除`
3586
+ `⚙️ 【灵能构造炉】生效:所有技能已获取完毕,此技能已移除`
3551
3587
  ]
3552
3588
  };
3553
3589
  }
3554
- const lightbladeStacks = targetBoss.Skillcountpoints || 0;
3555
- const triggerChance = 5 + lightbladeStacks;
3556
- if (Math.random() * 100 < triggerChance) {
3590
+ let lightbladeStacks = 0;
3591
+ if (targetBoss.skills.includes("闪电冲锋")) {
3592
+ lightbladeStacks = targetBoss.Skillcountpoints || 0;
3593
+ }
3594
+ const totalChance = 1 + lightbladeStacks;
3595
+ if (Math.random() * 100 < totalChance) {
3557
3596
  const availableSkills = allSkills.filter(
3558
3597
  (skill) => !targetBoss.skills.includes(skill)
3559
3598
  );
@@ -3567,28 +3606,27 @@ var PassiveHandler = {
3567
3606
  );
3568
3607
  return {
3569
3608
  messages: [
3570
- `⚙️ 【灵能构造炉】生效:获得新技能【${randomSkill}】`,
3571
- `剩余可获取技能:${availableSkills.length - 1}/${allSkills.length}`
3609
+ `⚙️ 【灵能构造炉】生效:获得新技能【${randomSkill}】`
3572
3610
  ]
3573
3611
  };
3574
3612
  }
3575
3613
  return null;
3576
3614
  }, "handleConstructor"),
3577
- // === 天启超载护盾 ===
3578
- handleTyrsShield: /* @__PURE__ */ __name(async function(ctx, targetBoss, activeBosses, bossGroup) {
3615
+ // 修改后 - 移除了层数清零操作
3616
+ handleTyrsShield: /* @__PURE__ */ __name(async function(ctx, targetBoss, currentHP, activeBosses, bossGroup) {
3579
3617
  if (!targetBoss.skills.includes("天启超载护盾")) return null;
3580
3618
  const lightbladeStacks = targetBoss.Skillcountpoints || 0;
3581
3619
  if (lightbladeStacks === 0) return null;
3582
- const triggerChance = 10;
3620
+ const triggerChance = 5;
3583
3621
  if (Math.random() * 100 < triggerChance) {
3584
3622
  const groupMembers = activeBosses.filter(
3585
3623
  (b) => b.groupId === targetBoss.groupId && b.HP > 0
3586
3624
  );
3587
- const healAmount = lightbladeStacks * 100;
3625
+ const healAmount = lightbladeStacks * 10;
3588
3626
  const updates = [];
3589
- const messages = [`🛡️ 【天启超载护盾】生效:消耗${lightbladeStacks}层光影之刃,治疗所有存活异形`];
3627
+ const messages = [`🛡️ 【天启超载护盾】生效:治疗所有存活异形`];
3590
3628
  for (const member of groupMembers) {
3591
- const maxHP = (await this.getMemberConfig(member.name, bossGroup))?.maxHP;
3629
+ const maxHP = this.getMemberConfig(member.name, bossGroup)?.maxHP;
3592
3630
  if (!maxHP) continue;
3593
3631
  const heal = Math.min(healAmount, maxHP - member.HP);
3594
3632
  if (heal > 0) {
@@ -3603,15 +3641,12 @@ var PassiveHandler = {
3603
3641
  messages.push(`${member.name} +${heal}HP`);
3604
3642
  }
3605
3643
  }
3606
- updates.push(
3607
- ctx.database.set(
3608
- "ggcevo_boss",
3609
- { name: targetBoss.name },
3610
- { Skillcountpoints: 0 }
3611
- )
3612
- );
3613
3644
  await Promise.all(updates);
3614
- return { messages };
3645
+ return {
3646
+ messages,
3647
+ updatedHP: currentHP + healAmount
3648
+ // 不再清除层数
3649
+ };
3615
3650
  }
3616
3651
  return null;
3617
3652
  }, "handleTyrsShield"),
@@ -3648,41 +3683,36 @@ var PassiveHandler = {
3648
3683
  { name: targetBoss.name },
3649
3684
  { skills: newSkills }
3650
3685
  );
3651
- messages.push(`💣 【地毯式轰炸】生效:移除孤立无援技能`);
3686
+ messages.push(`🔥 【地毯式轰炸】生效:移除“孤立无援”`);
3652
3687
  } else {
3653
- messages.push(`💣 【地毯式轰炸】生效:`);
3654
3688
  }
3655
- damageMultiplier = -0.5;
3656
- messages.push(`🔥 我心中的怒火胜过千万个太阳!受到的伤害-50%`);
3689
+ damageMultiplier = -1;
3690
+ messages.push(`🔥 【地毯式轰炸】生效:我心中的怒火胜过千万个太阳!受到的伤害-100%`);
3657
3691
  }
3658
3692
  return {
3659
3693
  messages,
3660
3694
  damageMultiplier
3661
3695
  };
3662
3696
  }, "handleCarpetBombing"),
3663
- // === 轰炸引导 ===
3697
+ // 修改后 - 移除了层数清零操作
3664
3698
  handleBombardmentGuidance: /* @__PURE__ */ __name(async function(ctx, targetBoss) {
3665
3699
  if (!targetBoss.skills.includes("轰炸引导")) return null;
3666
3700
  const lightbladeStacks = targetBoss.Skillcountpoints || 0;
3667
3701
  if (lightbladeStacks === 0) return null;
3668
3702
  const triggerChance = 10;
3669
3703
  if (Math.random() * 100 < triggerChance) {
3670
- const energyGain = lightbladeStacks * 100;
3704
+ const energyGain = lightbladeStacks * 50;
3671
3705
  const maxEnergy = 1e3;
3672
3706
  const currentEnergy = targetBoss.energy || 0;
3673
3707
  const newEnergy = Math.min(currentEnergy + energyGain, maxEnergy);
3674
3708
  await ctx.database.set(
3675
3709
  "ggcevo_boss",
3676
3710
  { name: targetBoss.name },
3677
- {
3678
- energy: newEnergy,
3679
- Skillcountpoints: 0
3680
- }
3711
+ { energy: newEnergy }
3681
3712
  );
3682
3713
  return {
3683
3714
  messages: [
3684
- `🎯 【轰炸引导】生效:消耗${lightbladeStacks}层光影之刃`,
3685
- `⚡ 回复${energyGain}点能量`
3715
+ `🎯 【轰炸引导】生效:回复${energyGain}点能量`
3686
3716
  ]
3687
3717
  };
3688
3718
  }
@@ -3815,7 +3845,12 @@ var PassiveHandler = {
3815
3845
  }
3816
3846
  const bloodEffect = this.handleBloodEffects(targetBoss, currentHP, maxHP);
3817
3847
  if (bloodEffect) {
3818
- nerfMultiplier += bloodEffect.damageMultiplier;
3848
+ if (bloodEffect.buffAmount > 0) {
3849
+ buffMultiplier += bloodEffect.buffAmount;
3850
+ }
3851
+ if (bloodEffect.nerfAmount > 0) {
3852
+ nerfMultiplier -= bloodEffect.nerfAmount;
3853
+ }
3819
3854
  messages.push(...bloodEffect.messages);
3820
3855
  }
3821
3856
  const siphonResult = this.handleEnergySiphon(targetBoss, currentHP, maxHP);
@@ -3859,7 +3894,12 @@ var PassiveHandler = {
3859
3894
  }
3860
3895
  const hyperspaceResult = this.handleHyperspaceSkip(targetBoss);
3861
3896
  if (hyperspaceResult) {
3862
- nerfMultiplier += hyperspaceResult.damageMultiplier;
3897
+ if (hyperspaceResult.reduction > 0) {
3898
+ nerfMultiplier -= hyperspaceResult.reduction;
3899
+ }
3900
+ if (hyperspaceResult.increase > 0) {
3901
+ buffMultiplier += hyperspaceResult.increase;
3902
+ }
3863
3903
  messages.push(...hyperspaceResult.messages);
3864
3904
  }
3865
3905
  const frenzyResult = this.handlePsychicFrenzy(targetBoss, currentHP, maxHP);
@@ -3972,21 +4012,16 @@ var PassiveHandler = {
3972
4012
  }
3973
4013
  }
3974
4014
  }
3975
- const stellarWindResult = await this.handleStellarWind(ctx, targetBoss, initialDamage, activeBosses, bossGroup);
4015
+ const stellarWindResult = await this.handleStellarWind(ctx, targetBoss, initialDamage, currentHP, maxHP, activeBosses, bossGroup);
3976
4016
  if (stellarWindResult) {
4017
+ currentHP = stellarWindResult.updatedHP;
3977
4018
  messages.push(...stellarWindResult.messages);
3978
4019
  }
3979
- const shieldResult = await this.handleTyrsShield(ctx, targetBoss, activeBosses, bossGroup);
4020
+ const shieldResult = await this.handleTyrsShield(ctx, targetBoss, currentHP, activeBosses, bossGroup);
3980
4021
  if (shieldResult) {
4022
+ currentHP = shieldResult.updatedHP;
3981
4023
  messages.push(...shieldResult.messages);
3982
4024
  }
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
4025
  const survivalResult = this.handleSurvivalInstinct(targetBoss, currentHP, maxHP);
3991
4026
  if (survivalResult) {
3992
4027
  currentHP = survivalResult.updatedHP;
@@ -4014,10 +4049,6 @@ var PassiveHandler = {
4014
4049
  if (arcRifleResult) {
4015
4050
  messages.push(...arcRifleResult.messages);
4016
4051
  }
4017
- const constructorResult = await this.handleConstructor(ctx, targetBoss);
4018
- if (constructorResult) {
4019
- messages.push(...constructorResult.messages);
4020
- }
4021
4052
  const coldAdaptResult = await this.handleColdAdaptation(ctx, targetBoss, weaponName);
4022
4053
  if (coldAdaptResult) {
4023
4054
  messages.push(...coldAdaptResult.messages);
@@ -4039,14 +4070,21 @@ var PassiveHandler = {
4039
4070
  if (CollapsepulseResult) {
4040
4071
  messages.push(...CollapsepulseResult.messages);
4041
4072
  }
4042
- const tagChangeResult = await this.handleConductorTagChange(ctx, targetBoss, currentHP, maxHP);
4043
- if (tagChangeResult) {
4044
- messages.push(...tagChangeResult.messages);
4073
+ const bileStackResult = await this.handleBileStacking(ctx, targetBoss, skipBileStacking);
4074
+ if (bileStackResult) {
4075
+ messages.push(...bileStackResult.messages);
4045
4076
  }
4046
4077
  const shockwaveResult = await this.handleEnergyShockwave(ctx, targetBoss);
4047
4078
  if (shockwaveResult) {
4048
4079
  messages.push(...shockwaveResult.messages);
4049
4080
  }
4081
+ const cosmicResult = await this.handleCosmicEnergy(ctx, targetBoss, finalDamage, bossGroup);
4082
+ if (cosmicResult) {
4083
+ messages.push(...cosmicResult.messages);
4084
+ if (cosmicResult.healAmount > 0) {
4085
+ currentHP = Math.min(targetBoss.HP + cosmicResult.healAmount, maxHP);
4086
+ }
4087
+ }
4050
4088
  const guidanceResult = await this.handleBombardmentGuidance(ctx, targetBoss);
4051
4089
  if (guidanceResult) {
4052
4090
  messages.push(...guidanceResult.messages);
@@ -4056,15 +4094,19 @@ var PassiveHandler = {
4056
4094
  messages.push(...gammaRadResult.messages);
4057
4095
  radiationApplied = gammaRadResult.radiationApplied;
4058
4096
  }
4059
- const bileStackResult = await this.handleBileStacking(ctx, targetBoss, skipBileStacking);
4060
- if (bileStackResult) {
4061
- messages.push(...bileStackResult.messages);
4062
- }
4063
4097
  const coldEffectResult = await this.handleColdEffect(ctx, targetBoss, weaponName);
4064
4098
  if (coldEffectResult) {
4065
4099
  messages.push(...coldEffectResult.messages);
4066
4100
  freezing = coldEffectResult.freezing;
4067
4101
  }
4102
+ const tagChangeResult = await this.handleConductorTagChange(ctx, targetBoss, currentHP, maxHP);
4103
+ if (tagChangeResult) {
4104
+ messages.push(...tagChangeResult.messages);
4105
+ }
4106
+ const constructorResult = await this.handleConstructor(ctx, targetBoss);
4107
+ if (constructorResult) {
4108
+ messages.push(...constructorResult.messages);
4109
+ }
4068
4110
  return {
4069
4111
  currentHP,
4070
4112
  messages,
@@ -6559,11 +6601,8 @@ ${items.join("、")}
6559
6601
  const handle = `${profile.regionId}-S2-${profile.realmId}-${profile.profileId}`;
6560
6602
  const [careerData] = await ctx.database.get("ggcevo_careers", { handle });
6561
6603
  const discountDetails = [];
6562
- let totalDiscount = 0;
6563
6604
  if (careerData?.career === "武器中士") {
6564
- const weaponSpecialistDiscount = 20;
6565
- totalDiscount += weaponSpecialistDiscount;
6566
- discountDetails.push(`▸ 🎖️ 武器中士职业:${weaponSpecialistDiscount}%折扣`);
6605
+ discountDetails.push(`▸ 🎖️ 武器中士职业:50%折扣`);
6567
6606
  }
6568
6607
  const activeWish = await ctx.database.get("ggcevo_Wish_Record", {
6569
6608
  handle,
@@ -6573,11 +6612,8 @@ ${items.join("、")}
6573
6612
  isused: false
6574
6613
  }).then((records) => records[0]);
6575
6614
  if (activeWish) {
6576
- const grasshopperDiscount = 20;
6577
- totalDiscount += grasshopperDiscount;
6578
- discountDetails.push(`▸ 🦗 蚱蜢优购祈愿:${grasshopperDiscount}%折扣`);
6615
+ discountDetails.push(`▸ 🦗 蚱蜢优购祈愿:20%折扣`);
6579
6616
  }
6580
- totalDiscount = Math.min(totalDiscount, 100);
6581
6617
  const categoryStats = Object.values(weaponConfig).filter((weapon) => weapon.price !== 0).reduce((stats, weapon) => {
6582
6618
  stats[weapon.category] = (stats[weapon.category] || 0) + 1;
6583
6619
  return stats;
@@ -6586,8 +6622,8 @@ ${items.join("、")}
6586
6622
  return [
6587
6623
  "🏪 咕咕武器库分类 🏪",
6588
6624
  '使用 "武器库 分类名称" 查看详细列表',
6589
- totalDiscount > 0 && `💰 折扣明细:
6590
- ${discountDetails.length ? `${discountDetails.join("\n")}` : ""}`,
6625
+ discountDetails.length > 0 && `💰 折扣明细:
6626
+ ${discountDetails.join("\n")}`,
6591
6627
  "====================",
6592
6628
  ...Object.entries(categoryStats).map(([catName, count]) => `▸ ${catName} (${count}种)`),
6593
6629
  "===================="
@@ -6597,12 +6633,19 @@ ${discountDetails.length ? `${discountDetails.join("\n")}` : ""}`,
6597
6633
  return `无效武器分类,可用分类:
6598
6634
  ${Object.keys(categoryStats).join("、")}`;
6599
6635
  }
6600
- const isLegendaryCategory = category === "传奇武器";
6601
6636
  const items = Object.entries(weaponConfig).filter(([_, config2]) => config2.category === category && config2.price !== 0).map(([name2, config2]) => {
6602
- const shouldApplyDiscount = !isLegendaryCategory && config2.category !== "传奇武器";
6603
- const displayPrice = shouldApplyDiscount ? Math.floor(config2.price * (100 - totalDiscount) / 100) : config2.price;
6604
- const showOriginalPrice = shouldApplyDiscount && totalDiscount > 0;
6605
- const priceDisplay = showOriginalPrice ? `${displayPrice}金币 (原价${config2.price})` : `${displayPrice}金币`;
6637
+ let applicableDiscount = 0;
6638
+ if (careerData?.career === "武器中士") {
6639
+ applicableDiscount += 50;
6640
+ }
6641
+ if (config2.category !== "传奇武器" && activeWish) {
6642
+ applicableDiscount += 20;
6643
+ }
6644
+ let priceDisplay = `${config2.price}金币`;
6645
+ if (applicableDiscount > 0) {
6646
+ const discountedPrice = Math.floor(config2.price * (100 - applicableDiscount) / 100);
6647
+ priceDisplay = `${discountedPrice}金币 (原价${config2.price})`;
6648
+ }
6606
6649
  let tagEffectsDesc = "▸ 无特殊加成效果";
6607
6650
  if (config2.tagEffects && Object.keys(config2.tagEffects).length > 0) {
6608
6651
  tagEffectsDesc = Object.entries(config2.tagEffects).map(([tag, multiplier]) => `▸ 对${tag}目标造成${(multiplier * 100).toFixed(0)}%伤害`).join("\n");
@@ -6620,16 +6663,13 @@ ${Object.keys(categoryStats).join("、")}`;
6620
6663
  "------------------"
6621
6664
  ].filter(Boolean).join("\n");
6622
6665
  });
6623
- const permissionNotice = isLegendaryCategory ? '⚠️ 注意:购买传奇武器需要"传奇武器购买权限"' : null;
6624
- const discountInfo = totalDiscount > 0 && !isLegendaryCategory ? `💰 折扣明细:
6625
- ${discountDetails.length ? `${discountDetails.join("\n")}` : ""}` : null;
6666
+ const permissionNotice = category === "传奇武器" ? "⚠️ 购买传奇武器要求:人类联盟阵营+武器系统5级+情报副官/武器中士职业+传奇武器购买权限" : null;
6626
6667
  return [
6627
6668
  `🏪 咕咕武器库 - ${category} 🏪`,
6628
6669
  '使用"购买 武器名称"指令进行购买',
6670
+ discountDetails.length > 0 ? `💰 折扣明细:
6671
+ ${discountDetails.join("\n")}` : "",
6629
6672
  permissionNotice,
6630
- // 新增权限提示
6631
- discountInfo,
6632
- // 原有折扣信息
6633
6673
  "====================",
6634
6674
  ...items,
6635
6675
  items.length === 0 ? "⚠️ 该分类下暂无可用武器" : ""
@@ -6725,39 +6765,35 @@ ${validTypes.join("、")}`;
6725
6765
  let totalDiscount = 0;
6726
6766
  let discountDetails = [];
6727
6767
  let activeWish = null;
6728
- if (!isLegendaryWeapon) {
6729
- if (isWeapon) {
6730
- activeWish = await ctx.database.get("ggcevo_Wish_Record", {
6731
- handle,
6732
- wishname: "蚱蜢优购",
6733
- startTime: { $lte: /* @__PURE__ */ new Date() },
6734
- endTime: { $gte: /* @__PURE__ */ new Date() },
6735
- isused: false
6736
- }).then((records) => records[0] || null);
6737
- if (activeWish) {
6738
- const wishDiscount = 20;
6739
- totalDiscount += wishDiscount;
6740
- discountDetails.push(`🦗 蚱蜢优购祈愿:${wishDiscount}%折扣`);
6741
- }
6742
- }
6743
- if (isWeapon && careerData?.career === "武器中士") {
6744
- const specialistDiscount = 20;
6745
- totalDiscount += specialistDiscount;
6746
- discountDetails.push(`🎖️ 武器中士职业:${specialistDiscount}%折扣`);
6768
+ if (isWeapon && careerData?.career === "武器中士") {
6769
+ const specialistDiscount = 50;
6770
+ totalDiscount += specialistDiscount;
6771
+ discountDetails.push(`🎖️ 武器中士职业:${specialistDiscount}%折扣`);
6772
+ }
6773
+ if (!isLegendaryWeapon && isWeapon) {
6774
+ activeWish = await ctx.database.get("ggcevo_Wish_Record", {
6775
+ handle,
6776
+ wishname: "蚱蜢优购",
6777
+ startTime: { $lte: /* @__PURE__ */ new Date() },
6778
+ endTime: { $gte: /* @__PURE__ */ new Date() },
6779
+ isused: false
6780
+ }).then((records) => records[0] || null);
6781
+ if (activeWish) {
6782
+ const wishDiscount = 20;
6783
+ totalDiscount += wishDiscount;
6784
+ discountDetails.push(`🦗 蚱蜢优购祈愿:${wishDiscount}%折扣`);
6747
6785
  }
6748
- totalDiscount = Math.min(totalDiscount, 100);
6749
6786
  }
6787
+ totalDiscount = Math.min(totalDiscount, 100);
6750
6788
  let actualPrice = config2.price;
6751
- if (!isLegendaryWeapon && totalDiscount > 0) {
6789
+ if (totalDiscount > 0) {
6752
6790
  actualPrice = Math.floor(config2.price * (100 - totalDiscount) / 100);
6753
6791
  actualPrice = Math.max(actualPrice, 1);
6754
6792
  }
6755
6793
  if ((signInfo?.totalRewards || 0) < actualPrice) {
6756
6794
  let priceInfo = `需要 ${actualPrice} 金币`;
6757
6795
  if (discountDetails.length > 0) {
6758
- priceInfo += `(原价${config2.price})`;
6759
- } else if (isLegendaryWeapon) {
6760
- priceInfo = `需要 ${actualPrice} 金币 (传奇武器无折扣)`;
6796
+ priceInfo += ` (原价${config2.price})`;
6761
6797
  }
6762
6798
  return `❌ 金币不足,${priceInfo}`;
6763
6799
  }
@@ -6812,20 +6848,18 @@ ${validTypes.join("、")}`;
6812
6848
  });
6813
6849
  let message = `✅ 成功购买${isWeapon ? "武器" : "物品"}「${item}」
6814
6850
  `;
6815
- if (isLegendaryWeapon) {
6851
+ if (discountDetails.length > 0) {
6852
+ message += `花费 ${actualPrice} 金币 (原价${config2.price} 金币)`;
6853
+ message += `
6854
+ 💰 折扣明细:
6855
+ ▸ ${discountDetails.join("\n▸ ")}`;
6856
+ } else {
6816
6857
  message += `花费 ${actualPrice} 金币`;
6858
+ }
6859
+ if (isLegendaryWeapon) {
6817
6860
  const [permissions] = await ctx.database.get("ggcevo_purchasepermissions", { handle });
6818
6861
  message += `
6819
6862
  扣除 1 次传奇武器购买权限,剩余次数:${permissions?.legendarypermissions || 0}`;
6820
- } else {
6821
- if (discountDetails.length > 0) {
6822
- message += `花费 ${actualPrice} 金币 (原价${config2.price} 金币)`;
6823
- message += `
6824
- 💰 折扣明细:
6825
- ▸ ${discountDetails.join("\n▸ ")}`;
6826
- } else {
6827
- message += `花费 ${actualPrice} 金币`;
6828
- }
6829
6863
  }
6830
6864
  if (isWeapon) {
6831
6865
  if (isAutoEquipped) {
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.29",
5
5
  "main": "lib/index.js",
6
6
  "typings": "lib/index.d.ts",
7
7
  "files": [