koishi-plugin-ggcevo-game 1.4.80 → 1.4.82

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.
@@ -573,6 +573,10 @@ export declare const BattleEffectProcessor: {
573
573
  } | null;
574
574
  messages: string[];
575
575
  };
576
+ handleFusionCannonEffect: (weaponName: string, equippedWeapon: any) => {
577
+ fusionExplosionTriggered: boolean;
578
+ messages: string[];
579
+ };
576
580
  };
577
581
  /**
578
582
  * 统一处理所有被动效果(包含伤害修正、免疫检查、状态更新等)
@@ -582,7 +586,7 @@ export declare const BattleEffectProcessor: {
582
586
  * @param activeBosses 当前所有活跃Boss列表
583
587
  * @returns 包含最终伤害值和所有效果消息的对象
584
588
  */
585
- export declare function applyPassiveEffects(targetBoss: any, activeBosses: any[], weaponName: string, damage: number, hasCrit: boolean, ignoreRate: number, careerData: any): {
589
+ export declare function applyPassiveEffects(targetBoss: any, activeBosses: any[], weaponName: string, damage: number, hasCrit: boolean, ignoreRate: number, careerData: any, equippedWeapon: any): {
586
590
  finalDamage: number;
587
591
  messages: string[];
588
592
  radiationLayerAdded: boolean;
package/lib/index.js CHANGED
@@ -426,7 +426,7 @@ var weaponConfig = {
426
426
  damage: 80,
427
427
  armorDamageReduction: 0,
428
428
  description: "一件传奇武器",
429
- specialeffect: "无法暴击;无视50%伤害减免;33%几率发射脉冲榴弹,额外造成50%伤害并降低目标0.5护甲值",
429
+ specialeffect: "无法暴击;无视50%伤害减免;每次攻击时有33%的概率发射脉冲榴弹,额外造成50%伤害并降低目标0.5护甲值",
430
430
  price: 6400,
431
431
  redCrystalCost: 200,
432
432
  isantiair: true,
@@ -441,7 +441,7 @@ var weaponConfig = {
441
441
  damage: 90,
442
442
  armorDamageReduction: 0,
443
443
  description: "一件传奇武器",
444
- specialeffect: "",
444
+ specialeffect: "无法暴击;每次攻击时有20%的概率造成核爆,额外造成50%的伤害,连续攻击每次提升5%概率",
445
445
  price: 6400,
446
446
  redCrystalCost: 200,
447
447
  isantiair: true,
@@ -1161,11 +1161,11 @@ var bossPool = [
1161
1161
  main: {
1162
1162
  name: "异齿猛兽首领",
1163
1163
  type: "主宰",
1164
- maxHP: 15e3,
1165
- maxShield: 5e3,
1164
+ maxHP: 25e3,
1165
+ maxShield: 0,
1166
1166
  maxEnergy: 0,
1167
- armor: 9,
1168
- shieldArmor: 25,
1167
+ armor: 25,
1168
+ shieldArmor: 0,
1169
1169
  maxStacks: 0,
1170
1170
  tags: ["重甲", "生物", "异形"],
1171
1171
  passive: ["异形甲壳"]
@@ -1174,11 +1174,11 @@ var bossPool = [
1174
1174
  {
1175
1175
  name: "异齿猛兽",
1176
1176
  type: "子代",
1177
- maxHP: 5e3,
1178
- maxShield: 1e3,
1177
+ maxHP: 7500,
1178
+ maxShield: 0,
1179
1179
  maxEnergy: 0,
1180
- armor: 6,
1181
- shieldArmor: 20,
1180
+ armor: 20,
1181
+ shieldArmor: 0,
1182
1182
  maxStacks: 0,
1183
1183
  tags: ["重甲", "生物", "重型", "异形"],
1184
1184
  passive: ["弱化形态", "异形甲壳"]
@@ -3632,9 +3632,26 @@ var BattleEffectProcessor = {
3632
3632
  targetUpdates,
3633
3633
  messages
3634
3634
  };
3635
- }, "handlePulseRifleEffect")
3635
+ }, "handlePulseRifleEffect"),
3636
+ // 核聚变重炮特殊效果处理
3637
+ handleFusionCannonEffect: /* @__PURE__ */ __name(function(weaponName, equippedWeapon) {
3638
+ const messages = [];
3639
+ let fusionExplosionTriggered = false;
3640
+ if (weaponName !== "核聚变重炮") return null;
3641
+ const currentCombo = equippedWeapon?.comboCount || 0;
3642
+ const fusionTriggerProbability = 0.2 + currentCombo * 0.05;
3643
+ if (Math.random() < fusionTriggerProbability) {
3644
+ fusionExplosionTriggered = true;
3645
+ messages.push(`💥 【核聚变爆炸】触发:额外造成50%伤害`);
3646
+ return {
3647
+ fusionExplosionTriggered,
3648
+ messages
3649
+ };
3650
+ }
3651
+ return null;
3652
+ }, "handleFusionCannonEffect")
3636
3653
  };
3637
- function applyPassiveEffects(targetBoss, activeBosses, weaponName, damage, hasCrit, ignoreRate, careerData) {
3654
+ function applyPassiveEffects(targetBoss, activeBosses, weaponName, damage, hasCrit, ignoreRate, careerData, equippedWeapon) {
3638
3655
  const messages = [];
3639
3656
  let immune = false;
3640
3657
  let totalBuffMultiplier = 0;
@@ -3723,6 +3740,10 @@ function applyPassiveEffects(targetBoss, activeBosses, weaponName, damage, hasCr
3723
3740
  updateStatsByName(pulseEffect.targetUpdates.name, pulseEffect.targetUpdates.updates);
3724
3741
  }
3725
3742
  }
3743
+ const fusionEffect = BattleEffectProcessor.handleFusionCannonEffect(weaponName, equippedWeapon);
3744
+ if (fusionEffect) {
3745
+ messages.push(...fusionEffect.messages);
3746
+ }
3726
3747
  const carpetBombResult = BattleEffectProcessor.handleCarpetBombing(targetBoss);
3727
3748
  if (carpetBombResult) {
3728
3749
  isolatedImmunityMark = carpetBombResult.tempMark || false;
@@ -3920,7 +3941,7 @@ function applyPassiveEffects(targetBoss, activeBosses, weaponName, damage, hasCr
3920
3941
  let adjustedNerfMultiplier = totalNerfMultiplier * (1 - ignoreRate);
3921
3942
  const damageMultiplier = 1 + totalBuffMultiplier - adjustedNerfMultiplier;
3922
3943
  finalDamage = damage * damageMultiplier;
3923
- if (pulseEffect?.pulseGrenadeTriggered) {
3944
+ if (pulseEffect?.pulseGrenadeTriggered || fusionEffect?.fusionExplosionTriggered) {
3924
3945
  finalDamage *= 1.5;
3925
3946
  }
3926
3947
  if (hasCrit) {
@@ -4027,7 +4048,7 @@ var passiveConfig = {
4027
4048
  },
4028
4049
  "异形甲壳": {
4029
4050
  type: "伤害减免",
4030
- description: "受到的伤害降低20%"
4051
+ description: "拥有厚重的甲壳,受到的伤害降低20%"
4031
4052
  },
4032
4053
  "冰霜回复": {
4033
4054
  type: "濒死治疗(移除)",
@@ -5051,7 +5072,7 @@ async function calculateCrit(ctx, handle, equippedWeapon, weaponName) {
5051
5072
  let critRate = 0;
5052
5073
  const pityCounter = equippedWeapon?.pityCounter || 0;
5053
5074
  const critSources = [];
5054
- if (weaponName === "M4AE脉冲步枪") {
5075
+ if (weaponName === "M4AE脉冲步枪" || weaponName === "核聚变重炮") {
5055
5076
  return {
5056
5077
  hasCrit: false,
5057
5078
  critSources: []
@@ -5372,7 +5393,7 @@ __name(handleBossDefeatRewards, "handleBossDefeatRewards");
5372
5393
  async function handlePrimaryAttack(ctx, session, handle, config, equippedWeapon, targetBoss, activeBosses, weaponName, careerData) {
5373
5394
  const damageResult = await calculateTotalDamage(ctx, session, config, equippedWeapon, targetBoss, careerData);
5374
5395
  const ignoreReduction = await handleIgnoreReductionEffects(ctx, handle, weaponName, targetBoss);
5375
- const EffectProcessor = applyPassiveEffects(targetBoss, activeBosses, weaponName, damageResult.damage, damageResult.hasCrit, ignoreReduction.ignoreRate, careerData);
5396
+ const EffectProcessor = applyPassiveEffects(targetBoss, activeBosses, weaponName, damageResult.damage, damageResult.hasCrit, ignoreReduction.ignoreRate, careerData, equippedWeapon);
5376
5397
  const initialDamage = EffectProcessor.finalDamage;
5377
5398
  await saveAndClearStats(ctx);
5378
5399
  if (EffectProcessor.spawnNewBossMarks?.length) {
@@ -5427,7 +5448,7 @@ async function handleScatterAttack(ctx, session, handle, config, equippedWeapon,
5427
5448
  );
5428
5449
  const secondaryDamage = Math.round(damageResult.baseDamage * scatterRatio);
5429
5450
  const ignoreReduction = await handleIgnoreReductionEffects(ctx, handle, weaponName, secondaryTarget);
5430
- const EffectProcessor = applyPassiveEffects(secondaryTarget, activeBosses, weaponName, secondaryDamage, damageResult.hasCrit, ignoreReduction.ignoreRate, careerData);
5451
+ const EffectProcessor = applyPassiveEffects(secondaryTarget, activeBosses, weaponName, secondaryDamage, damageResult.hasCrit, ignoreReduction.ignoreRate, careerData, equippedWeapon);
5431
5452
  const actualDamage = EffectProcessor.finalDamage;
5432
5453
  await saveAndClearStats(ctx);
5433
5454
  const [currentboss] = await ctx.database.get("ggcevo_boss", { name: secondaryTarget.name });
@@ -5791,7 +5812,7 @@ __name(handleIgnoreReductionEffects, "handleIgnoreReductionEffects");
5791
5812
  async function testAttackFunction(ctx, session, handle, config, equippedWeapon, targetBoss, activeBosses, weaponName, careerData) {
5792
5813
  const damageResult = await calculateTotalDamage(ctx, session, config, equippedWeapon, targetBoss, careerData);
5793
5814
  const ignoreReduction = await handleIgnoreReductionEffects(ctx, handle, weaponName, targetBoss);
5794
- const EffectProcessor = applyPassiveEffects(targetBoss, activeBosses, weaponName, damageResult.damage, damageResult.hasCrit, ignoreReduction.ignoreRate, careerData);
5815
+ const EffectProcessor = applyPassiveEffects(targetBoss, activeBosses, weaponName, damageResult.damage, damageResult.hasCrit, ignoreReduction.ignoreRate, careerData, equippedWeapon);
5795
5816
  const initialDamage = EffectProcessor.finalDamage;
5796
5817
  return {
5797
5818
  initialDamage,
@@ -8460,7 +8481,7 @@ ${validTypes.join("、")}`;
8460
8481
  }
8461
8482
  let scatterResult = null;
8462
8483
  const hasOtherBosses = activeBosses.some((b) => b.name !== targetBoss.name);
8463
- const isScatterAttack = (equippedWeapon.installedMods?.includes("光束曲射晶片") && weaponName === "碎骨步枪" || weaponName === "中子步枪") && hasOtherBosses;
8484
+ const isScatterAttack = (equippedWeapon.installedMods?.includes("光束曲射晶片") && weaponName === "碎骨步枪" || weaponName === "中子步枪" || weaponName === "DG-3电弧步枪") && hasOtherBosses;
8464
8485
  if (isScatterAttack) {
8465
8486
  scatterResult = await handleScatterAttack(
8466
8487
  ctx,
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.80",
4
+ "version": "1.4.82",
5
5
  "main": "lib/index.js",
6
6
  "typings": "lib/index.d.ts",
7
7
  "files": [