koishi-plugin-ggcevo-game 1.5.4 → 1.5.6

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.
@@ -419,6 +419,7 @@ export declare const BattleEffectProcessor: {
419
419
  updates: Partial<BattleStatistics>;
420
420
  } | null;
421
421
  success: boolean;
422
+ drainFactor: number;
422
423
  } | null;
423
424
  handleWeaponLayerReduction: (targetBoss: any, weaponName: string, maxStatsForTarget: any) => {
424
425
  messages: string[];
@@ -427,6 +428,7 @@ export declare const BattleEffectProcessor: {
427
428
  updates: Partial<BattleStatistics>;
428
429
  } | null;
429
430
  reductionSuccess: boolean;
431
+ reductionAmount: number;
430
432
  } | null;
431
433
  handleToxicSaliva: (targetBoss: any) => {
432
434
  nerfMultiplier: number;
@@ -656,4 +658,6 @@ export declare function applyPassiveEffects(targetBoss: any, activeBosses: any[]
656
658
  spawnNewBossMarks: string[];
657
659
  pulseGrenadeTriggered: boolean;
658
660
  burnLayerAdded: boolean;
661
+ drainFactor: number;
662
+ reductionAmount: number;
659
663
  };
@@ -15,6 +15,8 @@ export declare function handlePrimaryAttack(ctx: Context, session: any, handle:
15
15
  arcApplied: boolean;
16
16
  pulseGrenadeTriggered: boolean;
17
17
  burnLayerAdded: boolean;
18
+ drainFactor: number;
19
+ reductionAmount: number;
18
20
  }>;
19
21
  export declare function handleScatterAttack(ctx: Context, session: any, handle: string, config: Config, equippedWeapon: any, targetBoss: any, weaponName: string, activeBosses: any[], careerData: any): Promise<{
20
22
  scatterEffectMessages: string[];
package/lib/index.js CHANGED
@@ -148,7 +148,7 @@ var weaponConfig = {
148
148
  damage: 25,
149
149
  armorDamageReduction: 1,
150
150
  description: "喷射稳定的液氮恒流,对长时间接触者造成致命的损伤",
151
- specialeffect: "攻击时为目标附加[寒冷]效果,每层使目标受到的伤害提高2.5%(最多提高50%)",
151
+ specialeffect: "攻击时为目标附加[寒冷]效果,每层使目标受到的伤害提高1%(最多提高100%)",
152
152
  price: 775,
153
153
  redCrystalCost: 7,
154
154
  isantiair: false,
@@ -351,7 +351,7 @@ var weaponConfig = {
351
351
  damage: 80,
352
352
  armorDamageReduction: -1,
353
353
  description: "一件传奇武器",
354
- specialeffect: "暴击率提高25%;连续3次未暴击时,下次攻击必定暴击",
354
+ specialeffect: "暴击率提高25%;连续2次未暴击时,下次攻击必定暴击",
355
355
  price: 6400,
356
356
  redCrystalCost: 200,
357
357
  isantiair: true,
@@ -745,10 +745,10 @@ var syndicatePirateConfig = [
745
745
  },
746
746
  {
747
747
  professionName: "辛迪加财务经理",
748
- effect: "每日签到能额外获得红晶; 主动发起的PK对战结果为胜利时,额外奖励1红晶",
748
+ effect: "每日签到能额外获得红晶; 仓库中每拥有20个红晶,每日签到能额外获得1个红晶(至多额外获得5个)",
749
749
  requirements: "当月累计签到14天及以上",
750
750
  Jobtransfer: true,
751
- costredcrystal: 25
751
+ costredcrystal: 40
752
752
  },
753
753
  {
754
754
  professionName: "计算机专家",
@@ -1172,17 +1172,17 @@ var Tasklist = {
1172
1172
  id: 4,
1173
1173
  type: "可重复任务",
1174
1174
  target: 1,
1175
- price: 100,
1175
+ price: 40,
1176
1176
  redCrystalCost: 0,
1177
- condition: "使用【脉冲扰乱枪】攻击目标并成功减少其技能层数"
1177
+ condition: "使用【脉冲扰乱枪】攻击目标并成功减少其1层技能层数"
1178
1178
  },
1179
1179
  "能量消耗": {
1180
1180
  id: 5,
1181
1181
  type: "可重复任务",
1182
1182
  target: 1,
1183
- price: 100,
1183
+ price: 40,
1184
1184
  redCrystalCost: 0,
1185
- condition: "使用【弧焊枪】或【DG-3电弧步枪】攻击目标并成功消耗其能量"
1185
+ condition: "使用【弧焊枪】或【DG-3电弧步枪】攻击目标并成功消耗其100能量"
1186
1186
  },
1187
1187
  "破甲先锋": {
1188
1188
  id: 6,
@@ -1190,7 +1190,7 @@ var Tasklist = {
1190
1190
  target: 1,
1191
1191
  price: 200,
1192
1192
  redCrystalCost: 0,
1193
- condition: "使用【M4AE脉冲步枪】攻击目标并成功削减其护甲"
1193
+ condition: "使用【M4AE脉冲步枪】攻击目标并成功削减其0.5护甲"
1194
1194
  },
1195
1195
  "烈火燎原": {
1196
1196
  id: 7,
@@ -3148,11 +3148,11 @@ var BattleEffectProcessor = {
3148
3148
  const messages = [];
3149
3149
  let layerAdded = false;
3150
3150
  const currentLayers = targetBoss.coldLayers || 0;
3151
- const effectiveLayers = Math.min(currentLayers, 20);
3152
- const buffMultiplier = effectiveLayers * 0.025;
3151
+ const effectiveLayers = Math.min(currentLayers, 100);
3152
+ const buffMultiplier = effectiveLayers * 0.01;
3153
3153
  if (effectiveLayers > 0) {
3154
- messages.push(`❄️ 【寒冷】:当前${currentLayers}层,受到的伤害+${(effectiveLayers * 2.5).toFixed(1)}%`);
3155
- if (currentLayers > 20) {
3154
+ messages.push(`❄️ 【寒冷】:当前${currentLayers}层,受到的伤害+${(effectiveLayers * 1).toFixed(1)}%`);
3155
+ if (currentLayers > 100) {
3156
3156
  }
3157
3157
  }
3158
3158
  let targetUpdates = null;
@@ -3199,6 +3199,7 @@ var BattleEffectProcessor = {
3199
3199
  }
3200
3200
  };
3201
3201
  }
3202
+ const drainFactor = drainValue / 100;
3202
3203
  const weaponDisplayName = weaponName === "弧焊枪" ? "弧焊枪" : "DG-3电弧步枪";
3203
3204
  if (success) {
3204
3205
  messages.push(`⚡ 【${weaponDisplayName}】武器效果:消耗${drainValue}点能量`);
@@ -3206,7 +3207,8 @@ var BattleEffectProcessor = {
3206
3207
  return {
3207
3208
  messages,
3208
3209
  targetUpdates,
3209
- success
3210
+ success,
3211
+ drainFactor
3210
3212
  };
3211
3213
  }, "handleWeaponEnergyDrain"),
3212
3214
  // 统一的武器层数减少处理函数
@@ -3238,7 +3240,8 @@ var BattleEffectProcessor = {
3238
3240
  return {
3239
3241
  messages,
3240
3242
  targetUpdates,
3241
- reductionSuccess
3243
+ reductionSuccess,
3244
+ reductionAmount
3242
3245
  };
3243
3246
  }, "handleWeaponLayerReduction"),
3244
3247
  handleToxicSaliva: /* @__PURE__ */ __name(function(targetBoss) {
@@ -3889,19 +3892,18 @@ var BattleEffectProcessor = {
3889
3892
  return null;
3890
3893
  }
3891
3894
  const currentStacks = targetBoss.skillStacks || 0;
3892
- const consumedStacks = Math.floor(currentStacks / 2);
3893
- if (consumedStacks <= 0) {
3895
+ const halfStacks = Math.floor(currentStacks / 2);
3896
+ if (halfStacks <= 0) {
3894
3897
  return null;
3895
3898
  }
3896
- const healAmount = consumedStacks * 10;
3899
+ const healAmount = halfStacks * 5;
3897
3900
  return {
3898
- messages: [`🧬 【加快分化】生效:消耗${consumedStacks}层「基因变异」回复${healAmount}点生命值`],
3901
+ messages: [`🧬 【加快分化】生效:回复${healAmount}点生命值`],
3899
3902
  targetUpdates: {
3900
3903
  name: targetBoss.name,
3901
3904
  updates: {
3902
- hpChange: healAmount,
3903
- skillStacksChanged: -consumedStacks
3904
- // 消耗层数
3905
+ hpChange: healAmount
3906
+ // 不再消耗层数
3905
3907
  }
3906
3908
  }
3907
3909
  };
@@ -4009,6 +4011,8 @@ function applyPassiveEffects(targetBoss, activeBosses, weaponName, damage, hasCr
4009
4011
  let armor = 0;
4010
4012
  let pulseGrenadeTriggered = false;
4011
4013
  let burnLayerAdded = false;
4014
+ let drainFactor = 0;
4015
+ let reductionAmount = 0;
4012
4016
  const weaponData = weaponConfig[weaponName] || { type: "" };
4013
4017
  let doubleAstralWind = false;
4014
4018
  let isolatedImmunityMark = false;
@@ -4309,6 +4313,7 @@ function applyPassiveEffects(targetBoss, activeBosses, weaponName, damage, hasCr
4309
4313
  updateStatsByName(energyDrainResult.targetUpdates.name, energyDrainResult.targetUpdates.updates);
4310
4314
  }
4311
4315
  energyDrained = energyDrainResult.success || false;
4316
+ drainFactor = energyDrainResult.drainFactor;
4312
4317
  }
4313
4318
  const layerReduceResult = BattleEffectProcessor.handleWeaponLayerReduction(targetBoss, weaponName, maxStatsForTarget);
4314
4319
  if (layerReduceResult) {
@@ -4317,6 +4322,7 @@ function applyPassiveEffects(targetBoss, activeBosses, weaponName, damage, hasCr
4317
4322
  updateStatsByName(layerReduceResult.targetUpdates.name, layerReduceResult.targetUpdates.updates);
4318
4323
  }
4319
4324
  layerReduced = layerReduceResult.reductionSuccess || false;
4325
+ reductionAmount = layerReduceResult.reductionAmount;
4320
4326
  }
4321
4327
  let finalDamage = damage;
4322
4328
  let adjustedNerfMultiplier = totalNerfMultiplier * (1 - ignoreRate);
@@ -4340,7 +4346,7 @@ function applyPassiveEffects(targetBoss, activeBosses, weaponName, damage, hasCr
4340
4346
  const armorBonus = geneMutationStacks * 0.1;
4341
4347
  armor += armorBonus;
4342
4348
  if (armorBonus > 0) {
4343
- messages.push(`【组织增生】生效:临时增加${armorBonus}点护甲`);
4349
+ messages.push(`【组织增生】生效:临时增加${armorBonus.toFixed(1)}点护甲`);
4344
4350
  }
4345
4351
  }
4346
4352
  let armorDamageReduction = weaponData.armorDamageReduction || 0;
@@ -4433,8 +4439,10 @@ function applyPassiveEffects(targetBoss, activeBosses, weaponName, damage, hasCr
4433
4439
  spawnNewBossMarks,
4434
4440
  // +++ 新增生成标记 +++
4435
4441
  pulseGrenadeTriggered,
4436
- burnLayerAdded
4442
+ burnLayerAdded,
4437
4443
  // 新增燃烧叠加标记
4444
+ drainFactor,
4445
+ reductionAmount
4438
4446
  };
4439
4447
  }
4440
4448
  __name(applyPassiveEffects, "applyPassiveEffects");
@@ -4789,7 +4797,7 @@ var passiveConfig = {
4789
4797
  derivedSkills: []
4790
4798
  },
4791
4799
  "加快分化": {
4792
- description: "每次受击消耗一半层数回复X点血量(X为消耗的「基因变异」层数 x 10)",
4800
+ description: "每次受击回复X点血量(X为「基因变异」层数的一半并向下取整 x 5)",
4793
4801
  belong: [],
4794
4802
  derivedSkills: []
4795
4803
  },
@@ -4902,10 +4910,20 @@ var ggcevoUpdates = [
4902
4910
  `.trim()
4903
4911
  },
4904
4912
  {
4905
- version: "1.5.4",
4913
+ version: "1.5.5",
4906
4914
  time: "2025-06-28",
4907
4915
  content: `
4908
4916
  - 削弱了坏兄弟的加快分化基因技能
4917
+ - 雷达面罩价格下调至20红晶
4918
+ `.trim()
4919
+ },
4920
+ {
4921
+ version: "1.5.6",
4922
+ time: "2025-06-29",
4923
+ content: `
4924
+ - 重制了坏兄弟的分化基因技能
4925
+ - 重制了辛迪加海盗阵营的辛迪加财务经理职业,并提高其转职门槛
4926
+ - 增强了MK-4激光步枪暴击保底机制
4909
4927
  `.trim()
4910
4928
  }
4911
4929
  ];
@@ -5675,7 +5693,7 @@ async function calculateCrit(ctx, handle, equippedWeapon, weaponName) {
5675
5693
  critSources: []
5676
5694
  };
5677
5695
  }
5678
- if (weaponName === "MK-4激光步枪" && pityCounter >= 3) {
5696
+ if (weaponName === "MK-4激光步枪" && pityCounter >= 2) {
5679
5697
  return {
5680
5698
  hasCrit: true,
5681
5699
  critSources: ["🔫 MK-4激光步枪:保底暴击"]
@@ -6065,7 +6083,9 @@ async function handlePrimaryAttack(ctx, session, handle, config, equippedWeapon,
6065
6083
  pulseApplied: EffectProcessor.layerReduced,
6066
6084
  arcApplied: EffectProcessor.energyDrained,
6067
6085
  pulseGrenadeTriggered: EffectProcessor.pulseGrenadeTriggered,
6068
- burnLayerAdded: EffectProcessor.burnLayerAdded
6086
+ burnLayerAdded: EffectProcessor.burnLayerAdded,
6087
+ drainFactor: EffectProcessor.drainFactor,
6088
+ reductionAmount: EffectProcessor.reductionAmount
6069
6089
  };
6070
6090
  }
6071
6091
  __name(handlePrimaryAttack, "handlePrimaryAttack");
@@ -6118,10 +6138,10 @@ async function handleScatterAttack(ctx, session, handle, config, equippedWeapon,
6118
6138
  taskUpdates.push({ taskId: 3, count: 1 });
6119
6139
  }
6120
6140
  if (EffectProcessor.layerReduced) {
6121
- taskUpdates.push({ taskId: 4, count: 1 });
6141
+ taskUpdates.push({ taskId: 4, count: EffectProcessor.reductionAmount });
6122
6142
  }
6123
6143
  if (EffectProcessor.energyDrained) {
6124
- taskUpdates.push({ taskId: 5, count: 1 });
6144
+ taskUpdates.push({ taskId: 5, count: EffectProcessor.drainFactor });
6125
6145
  }
6126
6146
  if (EffectProcessor.pulseGrenadeTriggered) {
6127
6147
  taskUpdates.push({ taskId: 6, count: 1 });
@@ -7227,18 +7247,22 @@ ${itemDetails.join("\n")}`;
7227
7247
  const finalPoints = Math.round(basePoints * (1 + totalBonus));
7228
7248
  let redCrystal = 0;
7229
7249
  if (careerData?.group === "辛迪加海盗" && careerData.career === "辛迪加财务经理") {
7230
- if (monthlyDays < 7) {
7231
- redCrystal = 1;
7232
- } else if (monthlyDays < 14) {
7233
- redCrystal = 2;
7234
- } else if (monthlyDays < 21) {
7235
- redCrystal = 3;
7236
- } else if (monthlyDays < 28) {
7237
- redCrystal = 4;
7250
+ if (monthlyDays < 7) redCrystal = 1;
7251
+ else if (monthlyDays < 14) redCrystal = 2;
7252
+ else if (monthlyDays < 21) redCrystal = 3;
7253
+ else if (monthlyDays < 28) redCrystal = 4;
7254
+ else redCrystal = 5;
7255
+ const crystalStock = careerData.redcrystal || 0;
7256
+ const extraBonus = Math.min(Math.floor(crystalStock / 20), 5);
7257
+ if (extraBonus > 0) {
7258
+ redCrystal += extraBonus;
7259
+ messages.push(
7260
+ `🎖️ 辛迪加财务经理职业:+${redCrystal - extraBonus}枚红晶(基础)
7261
+ ▸ 红晶储量加成:+${extraBonus}枚`
7262
+ );
7238
7263
  } else {
7239
- redCrystal = 5;
7264
+ messages.push(`🎖️ 辛迪加财务经理职业:+${redCrystal}枚红晶`);
7240
7265
  }
7241
- messages.push(`🎖️ 辛迪加财务经理职业:+${redCrystal}枚红晶`);
7242
7266
  }
7243
7267
  await ctx.database.withTransaction(async () => {
7244
7268
  await ctx.database.upsert("ggcevo_sign", [{
@@ -9214,10 +9238,10 @@ ${validTypes.join("、")}`;
9214
9238
  taskUpdates.push({ taskId: 3, count: 1 });
9215
9239
  }
9216
9240
  if (primaryAttackResult.pulseApplied) {
9217
- taskUpdates.push({ taskId: 4, count: 1 });
9241
+ taskUpdates.push({ taskId: 4, count: primaryAttackResult.reductionAmount });
9218
9242
  }
9219
9243
  if (primaryAttackResult.arcApplied) {
9220
- taskUpdates.push({ taskId: 5, count: 1 });
9244
+ taskUpdates.push({ taskId: 5, count: primaryAttackResult.drainFactor });
9221
9245
  }
9222
9246
  if (primaryAttackResult.pulseGrenadeTriggered) {
9223
9247
  taskUpdates.push({ taskId: 6, count: 1 });
package/lib/tasks.d.ts CHANGED
@@ -27,17 +27,17 @@ export declare const Tasklist: {
27
27
  readonly id: 4;
28
28
  readonly type: "可重复任务";
29
29
  readonly target: 1;
30
- readonly price: 100;
30
+ readonly price: 40;
31
31
  readonly redCrystalCost: 0;
32
- readonly condition: "使用【脉冲扰乱枪】攻击目标并成功减少其技能层数";
32
+ readonly condition: "使用【脉冲扰乱枪】攻击目标并成功减少其1层技能层数";
33
33
  };
34
34
  readonly 能量消耗: {
35
35
  readonly id: 5;
36
36
  readonly type: "可重复任务";
37
37
  readonly target: 1;
38
- readonly price: 100;
38
+ readonly price: 40;
39
39
  readonly redCrystalCost: 0;
40
- readonly condition: "使用【弧焊枪】或【DG-3电弧步枪】攻击目标并成功消耗其能量";
40
+ readonly condition: "使用【弧焊枪】或【DG-3电弧步枪】攻击目标并成功消耗其100能量";
41
41
  };
42
42
  readonly 破甲先锋: {
43
43
  readonly id: 6;
@@ -45,7 +45,7 @@ export declare const Tasklist: {
45
45
  readonly target: 1;
46
46
  readonly price: 200;
47
47
  readonly redCrystalCost: 0;
48
- readonly condition: "使用【M4AE脉冲步枪】攻击目标并成功削减其护甲";
48
+ readonly condition: "使用【M4AE脉冲步枪】攻击目标并成功削减其0.5护甲";
49
49
  };
50
50
  readonly 烈火燎原: {
51
51
  readonly id: 7;
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.5.4",
4
+ "version": "1.5.6",
5
5
  "main": "lib/index.js",
6
6
  "typings": "lib/index.d.ts",
7
7
  "files": [