koishi-plugin-ggcevo-game 1.5.17 → 1.5.19

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.
@@ -84,6 +84,7 @@ export declare const BattleEffectProcessor: {
84
84
  } | null;
85
85
  handleFrostEvolution: (targetBoss: any, weaponName: string, damage: number) => {
86
86
  isImmune: boolean;
87
+ immuneCold: boolean;
87
88
  messages: string[];
88
89
  targetUpdates: {
89
90
  name: string;
@@ -118,6 +119,7 @@ export declare const BattleEffectProcessor: {
118
119
  } | null;
119
120
  handleColdAdaptation: (targetBoss: any, weaponName: string) => {
120
121
  isImmune: boolean;
122
+ immuneCold: boolean;
121
123
  messages: string[];
122
124
  targetUpdates: {
123
125
  name: string;
@@ -262,6 +264,7 @@ export declare const BattleEffectProcessor: {
262
264
  } | null;
263
265
  handleSolarFlare: (targetBoss: any, weaponName: string, activeBosses: any[]) => {
264
266
  isImmune: boolean;
267
+ immuneCold: boolean;
265
268
  messages: string[];
266
269
  targetUpdates: {
267
270
  name: string;
@@ -284,6 +287,8 @@ export declare const BattleEffectProcessor: {
284
287
  buffMultiplier: number;
285
288
  nerfMultiplier: number;
286
289
  isImmune: boolean;
290
+ immuneCold: boolean;
291
+ immuneFire: boolean;
287
292
  messages: string[];
288
293
  };
289
294
  handleRampage: (targetBoss: any) => {
@@ -403,7 +408,7 @@ export declare const BattleEffectProcessor: {
403
408
  armorReduction: number;
404
409
  layerAdded: boolean;
405
410
  } | null;
406
- handleColdEffect: (targetBoss: any, weaponName: string, equippedWeapon: any) => {
411
+ handleColdEffect: (targetBoss: any, weaponName: string, equippedWeapon: any, isImmuneCold: boolean) => {
407
412
  messages: string[];
408
413
  targetUpdates: {
409
414
  name: string;
@@ -606,6 +611,8 @@ export declare const BattleEffectProcessor: {
606
611
  } | null;
607
612
  handleEnvironmentalAdaptation: (targetBoss: any, weaponName: string) => {
608
613
  isImmune: boolean;
614
+ immuneCold: boolean;
615
+ immuneFire: boolean;
609
616
  messages: string[];
610
617
  targetUpdates: {
611
618
  name: string;
@@ -638,6 +645,10 @@ export declare const BattleEffectProcessor: {
638
645
  isImmune: boolean;
639
646
  messages: string[];
640
647
  } | null;
648
+ handleShiveringHowl: (targetBoss: any) => {
649
+ nerfMultiplier: number;
650
+ messages: string[];
651
+ } | null;
641
652
  };
642
653
  /**
643
654
  * 统一处理所有被动效果(包含伤害修正、免疫检查、状态更新等)
@@ -374,4 +374,9 @@ export declare const passiveConfig: {
374
374
  belong: any[];
375
375
  derivedSkills: any[];
376
376
  };
377
+ 冰悚嚎叫: {
378
+ description: string;
379
+ belong: string[];
380
+ derivedSkills: any[];
381
+ };
377
382
  };
package/lib/index.js CHANGED
@@ -1274,7 +1274,7 @@ var bossPool = [
1274
1274
  shieldArmor: 0,
1275
1275
  maxStacks: 0,
1276
1276
  tags: ["重甲", "生物", "惧热", "重型", "异形"],
1277
- passive: ["冰霜环绕", "冰霜进化"]
1277
+ passive: ["冰霜环绕", "冰霜进化", "冰悚嚎叫"]
1278
1278
  },
1279
1279
  minions: [
1280
1280
  {
@@ -1922,6 +1922,7 @@ var BattleEffectProcessor = {
1922
1922
  return null;
1923
1923
  }
1924
1924
  isImmune = true;
1925
+ const immuneCold = true;
1925
1926
  const healAmount = damage;
1926
1927
  const targetUpdates = {
1927
1928
  name: targetBoss.name,
@@ -1933,6 +1934,8 @@ var BattleEffectProcessor = {
1933
1934
  messages.push(`❄️ 【冰霜进化】生效:免疫寒冷伤害并回复${healAmount}点生命值`);
1934
1935
  return {
1935
1936
  isImmune,
1937
+ immuneCold,
1938
+ // 新增的免疫寒冷标记
1936
1939
  messages,
1937
1940
  targetUpdates
1938
1941
  };
@@ -2029,21 +2032,36 @@ var BattleEffectProcessor = {
2029
2032
  }
2030
2033
  };
2031
2034
  }, "handleSurvivalInstinctII"),
2032
- // PassiveHandler 对象中添加冷适应技能的处理函数
2035
+ // 冷适应处理 - 新增immuneCold标记,并在免疫时清除寒冷层数
2033
2036
  handleColdAdaptation: /* @__PURE__ */ __name(function(targetBoss, weaponName) {
2034
2037
  const messages = [];
2035
2038
  let isImmune = false;
2039
+ let immuneCold = false;
2036
2040
  let targetUpdates = null;
2037
2041
  if (!targetBoss.skills.includes("冷适应")) {
2038
2042
  return null;
2039
2043
  }
2040
2044
  const currentLayers = targetBoss.statusLayers || 0;
2041
2045
  const hasFearHeatTag = targetBoss.tags.includes("惧热") || false;
2046
+ const currentColdLayers = targetBoss.coldLayers || 0;
2042
2047
  if (hasFearHeatTag && weaponName === "零度之下") {
2043
2048
  isImmune = true;
2044
- messages.push(`🧊 【冷适应】生效:免疫寒冷伤害`);
2049
+ immuneCold = true;
2050
+ if (currentColdLayers > 0) {
2051
+ if (!targetUpdates) {
2052
+ targetUpdates = {
2053
+ name: targetBoss.name,
2054
+ updates: {}
2055
+ };
2056
+ }
2057
+ targetUpdates.updates.coldLayersChange = -(currentColdLayers + 2);
2058
+ messages.push(`🌬️ 【冷适应】生效:清除全部寒冷效果`);
2059
+ }
2060
+ messages.push(`🌬️ 【冷适应】生效:免疫寒冷伤害`);
2045
2061
  return {
2046
2062
  isImmune,
2063
+ immuneCold,
2064
+ // 返回新增的免疫标记
2047
2065
  messages,
2048
2066
  targetUpdates
2049
2067
  };
@@ -2057,14 +2075,16 @@ var BattleEffectProcessor = {
2057
2075
  // 层数+1
2058
2076
  }
2059
2077
  };
2060
- messages.push(`❄️ 【冷适应】叠层:当前${newLayers}/10次寒冷伤害`);
2078
+ messages.push(`🌬️ 【冷适应】叠层:当前${newLayers}/10次寒冷伤害`);
2061
2079
  if (newLayers >= 10) {
2062
2080
  targetUpdates.updates.tagsAdded = ["惧热"];
2063
- messages.push(`🧊 【冷适应】生效:获得「惧热」标签并免疫寒冷伤害`);
2081
+ messages.push(`🔥 【冷适应】生效:获得「惧热」标签并免疫寒冷伤害`);
2064
2082
  }
2065
2083
  }
2066
2084
  return {
2067
2085
  isImmune,
2086
+ immuneCold,
2087
+ // 返回新增的免疫标记
2068
2088
  messages,
2069
2089
  targetUpdates
2070
2090
  };
@@ -2621,6 +2641,7 @@ var BattleEffectProcessor = {
2621
2641
  handleSolarFlare: /* @__PURE__ */ __name(function(targetBoss, weaponName, activeBosses) {
2622
2642
  const messages = [];
2623
2643
  let isImmune = false;
2644
+ let immuneCold = false;
2624
2645
  let targetUpdates = null;
2625
2646
  if (!targetBoss.skills.includes("太阳耀斑")) {
2626
2647
  return null;
@@ -2632,22 +2653,32 @@ var BattleEffectProcessor = {
2632
2653
  if (hasLivingOffspring) {
2633
2654
  return null;
2634
2655
  }
2656
+ const currentColdLayers = targetBoss.coldLayers || 0;
2657
+ let updates = {};
2635
2658
  if (hasFearColdTag) {
2636
- targetUpdates = {
2637
- name: targetBoss.name,
2638
- updates: {
2639
- tagsRemoved: ["惧寒"]
2640
- }
2641
- };
2659
+ updates.tagsRemoved = ["惧寒"];
2642
2660
  messages.push(`☀️ 【太阳耀斑】触发:移除「惧寒」标签`);
2643
2661
  }
2644
2662
  const isColdWeapon = weaponName === "零度之下";
2645
2663
  if (isColdWeapon) {
2646
2664
  isImmune = true;
2665
+ immuneCold = true;
2647
2666
  messages.push(`☀️ 【太阳耀斑】生效:免疫寒冷伤害`);
2667
+ if (currentColdLayers > 0) {
2668
+ updates.coldLayersChange = -(currentColdLayers + 2);
2669
+ messages.push(`☀️ 【太阳耀斑】生效:清除全部寒冷效果`);
2670
+ }
2671
+ }
2672
+ if (Object.keys(updates).length > 0) {
2673
+ targetUpdates = {
2674
+ name: targetBoss.name,
2675
+ updates
2676
+ };
2648
2677
  }
2649
2678
  return {
2650
2679
  isImmune,
2680
+ immuneCold,
2681
+ // 返回新增的免疫标记
2651
2682
  messages,
2652
2683
  targetUpdates,
2653
2684
  tempMark: true
@@ -2714,6 +2745,8 @@ var BattleEffectProcessor = {
2714
2745
  let buffMultiplier = 0;
2715
2746
  let nerfMultiplier = 0;
2716
2747
  let isImmune = false;
2748
+ let immuneCold = false;
2749
+ let immuneFire = false;
2717
2750
  if (!targetBoss.skills.includes("猎手异形")) {
2718
2751
  return null;
2719
2752
  }
@@ -2721,6 +2754,11 @@ var BattleEffectProcessor = {
2721
2754
  const isColdDamage = weaponName === "零度之下";
2722
2755
  if (isFireDamage || isColdDamage) {
2723
2756
  isImmune = true;
2757
+ if (isFireDamage) {
2758
+ immuneFire = true;
2759
+ } else if (isColdDamage) {
2760
+ immuneCold = true;
2761
+ }
2724
2762
  messages.push(`🦖 【猎手异形】生效:免疫${isFireDamage ? "火焰" : "寒冷"}伤害`);
2725
2763
  }
2726
2764
  const otherLivingAliens = activeBosses.filter(
@@ -2737,6 +2775,10 @@ var BattleEffectProcessor = {
2737
2775
  buffMultiplier,
2738
2776
  nerfMultiplier,
2739
2777
  isImmune,
2778
+ immuneCold,
2779
+ // 新增返回标记
2780
+ immuneFire,
2781
+ // 新增返回标记
2740
2782
  messages
2741
2783
  };
2742
2784
  }, "handleHunterAlien"),
@@ -3176,7 +3218,13 @@ var BattleEffectProcessor = {
3176
3218
  };
3177
3219
  }, "handleRadiationEffect"),
3178
3220
  // 统一的寒冷效果处理函数
3179
- handleColdEffect: /* @__PURE__ */ __name(function(targetBoss, weaponName, equippedWeapon) {
3221
+ handleColdEffect: /* @__PURE__ */ __name(function(targetBoss, weaponName, equippedWeapon, isImmuneCold) {
3222
+ if (isImmuneCold) {
3223
+ return null;
3224
+ }
3225
+ if (targetBoss.skills.includes("冰霜进化") || targetBoss.skills.includes("猎手异形")) {
3226
+ return null;
3227
+ }
3180
3228
  const messages = [];
3181
3229
  let layerAdded = false;
3182
3230
  const currentLayers = targetBoss.coldLayers || 0;
@@ -3900,41 +3948,50 @@ var BattleEffectProcessor = {
3900
3948
  // 环境适应处理(免疫火焰和寒冷伤害,任意攻击都会清空寒冷/燃烧层数)
3901
3949
  handleEnvironmentalAdaptation: /* @__PURE__ */ __name(function(targetBoss, weaponName) {
3902
3950
  const messages = [];
3951
+ let immuneCold = false;
3952
+ let immuneFire = false;
3903
3953
  if (!targetBoss.skills.includes("环境适应")) {
3904
3954
  return null;
3905
3955
  }
3906
3956
  const isFireDamage = weaponName === "焚烧枪";
3907
3957
  const isColdDamage = weaponName === "零度之下";
3908
3958
  const updates = {};
3909
- let clearMessage = "";
3959
+ let clearMessageParts = [];
3910
3960
  if (targetBoss.burnLayers > 0) {
3911
- updates.burnLayersChanged = -(targetBoss.burnLayers + 1);
3912
- clearMessage += `清空所有燃烧层数`;
3961
+ updates.burnLayersChanged = -(targetBoss.burnLayers + 2);
3962
+ clearMessageParts.push(`清空全部燃烧效果`);
3913
3963
  }
3914
3964
  if (targetBoss.coldLayers > 0) {
3915
- updates.coldLayersChange = -(targetBoss.coldLayers + 1);
3916
- if (clearMessage) clearMessage += "和";
3917
- clearMessage += `清空所有寒冷层数`;
3965
+ updates.coldLayersChange = -(targetBoss.coldLayers + 2);
3966
+ clearMessageParts.push(`清空全部寒冷效果`);
3918
3967
  }
3919
3968
  let isImmune = false;
3920
- let immuneMessage = "";
3921
- if (isFireDamage || isColdDamage) {
3969
+ if (isFireDamage) {
3970
+ isImmune = true;
3971
+ immuneFire = true;
3972
+ }
3973
+ if (isColdDamage) {
3922
3974
  isImmune = true;
3923
- immuneMessage = `免疫${isFireDamage ? "火焰" : "寒冷"}伤害`;
3975
+ immuneCold = true;
3924
3976
  }
3925
3977
  let fullMessage = `🧬 【环境适应】生效:`;
3926
- if (immuneMessage && clearMessage) {
3927
- fullMessage += `${immuneMessage}并${clearMessage}`;
3978
+ let immuneMessage = "";
3979
+ if (isImmune) {
3980
+ immuneMessage = `免疫${isFireDamage ? "火焰" : isColdDamage ? "寒冷" : ""}伤害`;
3981
+ }
3982
+ if (clearMessageParts.length > 0) {
3983
+ fullMessage += `${immuneMessage ? immuneMessage + "并" : ""}${clearMessageParts.join("和")}`;
3928
3984
  } else if (immuneMessage) {
3929
3985
  fullMessage += immuneMessage;
3930
- } else if (clearMessage) {
3931
- fullMessage += clearMessage;
3932
3986
  } else {
3933
3987
  return null;
3934
3988
  }
3989
+ messages.push(fullMessage);
3935
3990
  return {
3936
3991
  isImmune,
3937
- messages: [fullMessage],
3992
+ immuneCold,
3993
+ immuneFire,
3994
+ messages,
3938
3995
  targetUpdates: Object.keys(updates).length > 0 ? {
3939
3996
  name: targetBoss.name,
3940
3997
  updates
@@ -4050,7 +4107,26 @@ var BattleEffectProcessor = {
4050
4107
  };
4051
4108
  }
4052
4109
  return null;
4053
- }, "handleBiologicalSignatureImitation")
4110
+ }, "handleBiologicalSignatureImitation"),
4111
+ // 冰悚嚎叫处理(50%血量以下减伤30%)
4112
+ handleShiveringHowl: /* @__PURE__ */ __name(function(targetBoss) {
4113
+ const messages = [];
4114
+ if (!targetBoss.skills.includes("冰悚嚎叫")) {
4115
+ return null;
4116
+ }
4117
+ const maxHP = getMaxHPByName(targetBoss.name);
4118
+ if (typeof maxHP !== "number") return null;
4119
+ const hpPercent = targetBoss.HP / maxHP;
4120
+ if (hpPercent > 0.5) {
4121
+ return null;
4122
+ }
4123
+ const nerfMultiplier = 0.3;
4124
+ messages.push(`❄️ 【冰悚嚎叫】生效:生命值≤50%,受到的伤害-30%`);
4125
+ return {
4126
+ nerfMultiplier,
4127
+ messages
4128
+ };
4129
+ }, "handleShiveringHowl")
4054
4130
  };
4055
4131
  function applyPassiveEffects(targetBoss, activeBosses, weaponName, damage, hasCrit, ignoreRate, careerData, equippedWeapon) {
4056
4132
  const messages = [];
@@ -4068,6 +4144,8 @@ function applyPassiveEffects(targetBoss, activeBosses, weaponName, damage, hasCr
4068
4144
  let burnLayerAdded = false;
4069
4145
  let drainFactor = 0;
4070
4146
  let reductionAmount = 0;
4147
+ let isImmuneCold = false;
4148
+ let isImmuneFire = false;
4071
4149
  const weaponData = weaponConfig[weaponName] || { type: "" };
4072
4150
  let doubleAstralWind = false;
4073
4151
  let isolatedImmunityMark = false;
@@ -4141,11 +4219,16 @@ function applyPassiveEffects(targetBoss, activeBosses, weaponName, damage, hasCr
4141
4219
  const allImmuneEffects = [...coldImmuneEffects, ...fireImmuneEffects, ...chanceImmuneEffects, ...conditionImmuneEffects];
4142
4220
  for (const immuneEffect of allImmuneEffects) {
4143
4221
  const result = processEffect(immuneEffect.effect, ...immuneEffect.args);
4144
- if (result?.isImmune) immune = true;
4222
+ if (result) {
4223
+ isImmuneCold = isImmuneCold || result.immuneCold === true;
4224
+ isImmuneFire = isImmuneFire || result.immuneFire === true;
4225
+ if (result.isImmune) immune = true;
4226
+ }
4145
4227
  }
4146
4228
  const solarFlareResult = BattleEffectProcessor.handleSolarFlare(targetBoss, weaponName, activeBosses);
4147
4229
  if (solarFlareResult) {
4148
4230
  isolatedImmunityMark = solarFlareResult.tempMark || false;
4231
+ isImmuneCold = isImmuneCold || solarFlareResult.immuneCold === true;
4149
4232
  if (solarFlareResult.isImmune) immune = true;
4150
4233
  messages.push(...solarFlareResult.messages);
4151
4234
  if (solarFlareResult.targetUpdates) {
@@ -4201,6 +4284,8 @@ function applyPassiveEffects(targetBoss, activeBosses, weaponName, damage, hasCr
4201
4284
  { effect: BattleEffectProcessor.handleVomit, args: [targetBoss] },
4202
4285
  { effect: BattleEffectProcessor.handleRampage, args: [targetBoss] },
4203
4286
  { effect: BattleEffectProcessor.handleHyperRangeShift, args: [targetBoss] },
4287
+ // +++ 新增:冰悚嚎叫技能处理 +++
4288
+ { effect: BattleEffectProcessor.handleShiveringHowl, args: [targetBoss] },
4204
4289
  // 1. 毒性唾液
4205
4290
  { effect: BattleEffectProcessor.handleToxicSaliva, args: [targetBoss] },
4206
4291
  // 2. 剧毒狂暴
@@ -4330,7 +4415,7 @@ function applyPassiveEffects(targetBoss, activeBosses, weaponName, damage, hasCr
4330
4415
  }
4331
4416
  radiationLayerAdded = radiationResult.layerAdded;
4332
4417
  }
4333
- const coldResult = BattleEffectProcessor.handleColdEffect(targetBoss, weaponName, equippedWeapon);
4418
+ const coldResult = BattleEffectProcessor.handleColdEffect(targetBoss, weaponName, equippedWeapon, isImmuneCold);
4334
4419
  if (coldResult) {
4335
4420
  messages.push(...coldResult.messages);
4336
4421
  if (coldResult.buffMultiplier) {
@@ -4395,6 +4480,9 @@ function applyPassiveEffects(targetBoss, activeBosses, weaponName, damage, hasCr
4395
4480
  if (equippedWeapon.installedMods?.includes("轻型电源节点")) {
4396
4481
  armorDamageReduction = 0;
4397
4482
  }
4483
+ if (equippedWeapon.installedMods?.includes("助燃核心")) {
4484
+ armorDamageReduction = -0.5;
4485
+ }
4398
4486
  armor += targetBoss.armor - targetBoss.radiationLayers * 0.05;
4399
4487
  const armorReduction = armorDamageReduction * armor;
4400
4488
  if (armorReduction !== 0) {
@@ -4559,7 +4647,7 @@ var passiveConfig = {
4559
4647
  derivedSkills: []
4560
4648
  },
4561
4649
  "冷适应": {
4562
- description: "累计承受10次寒冷伤害后,获得「惧热」标签并永久免疫寒冷伤害",
4650
+ description: "累计承受10次寒冷伤害后,获得「惧热」标签,免疫寒冷伤害并清空自身寒冷层数",
4563
4651
  belong: ["莽兽", "狂暴畸变体", "剧毒畸变体"],
4564
4652
  derivedSkills: []
4565
4653
  },
@@ -4669,7 +4757,7 @@ var passiveConfig = {
4669
4757
  derivedSkills: []
4670
4758
  },
4671
4759
  "太阳耀斑": {
4672
- description: "所有子代阵亡后,移除惧寒标签和孤立无援状态,并永久免疫寒冷伤害",
4760
+ description: "所有子代阵亡后,移除惧寒标签和孤立无援状态,免疫寒冷伤害并清空自身寒冷层数",
4673
4761
  belong: ["烈焰庞兽"],
4674
4762
  derivedSkills: []
4675
4763
  },
@@ -4684,7 +4772,7 @@ var passiveConfig = {
4684
4772
  derivedSkills: []
4685
4773
  },
4686
4774
  "猎手异形": {
4687
- description: "存在其他存活异形时伤害降低20%,无其他存活异形时伤害提高20%;免疫火焰及寒冷伤害",
4775
+ description: "存在其他存活异形时伤害降低20%,无其他存活异形时伤害提高20%;免疫火焰伤害及寒冷伤害",
4688
4776
  belong: ["狂猎猛禽首领", "狂猎猛禽1", "狂猎猛禽2"],
4689
4777
  derivedSkills: []
4690
4778
  },
@@ -4856,7 +4944,7 @@ var passiveConfig = {
4856
4944
  derivedSkills: []
4857
4945
  },
4858
4946
  "环境适应": {
4859
- description: "免疫火焰伤害和寒冷伤害;清空自身的寒冷层数和燃烧层数",
4947
+ description: "免疫火焰伤害和寒冷伤害;清空自身寒冷层数和燃烧层数",
4860
4948
  belong: [],
4861
4949
  derivedSkills: []
4862
4950
  },
@@ -4899,6 +4987,11 @@ var passiveConfig = {
4899
4987
  description: "受击时1%概率免疫该次伤害,每层「基因变异」提高1%的概率",
4900
4988
  belong: [],
4901
4989
  derivedSkills: []
4990
+ },
4991
+ "冰悚嚎叫": {
4992
+ description: "血量低于50%后,受到的伤害降低30%",
4993
+ belong: ["寒冰王蛇"],
4994
+ derivedSkills: []
4902
4995
  }
4903
4996
  };
4904
4997
 
@@ -5032,11 +5125,19 @@ var ggcevoUpdates = [
5032
5125
  `.trim()
5033
5126
  },
5034
5127
  {
5035
- version: "1.5.16",
5128
+ version: "1.5.17",
5036
5129
  time: "2025-07-03",
5037
5130
  content: `
5038
5131
  - 删除计算机能力:被动PK失败时有50%的概率不损失金币
5039
5132
  `.trim()
5133
+ },
5134
+ {
5135
+ version: "1.5.18",
5136
+ time: "2025-07-03",
5137
+ content: `
5138
+ - 修改了寒冷机制,现在拥有免疫寒冷伤害的技能可以免疫获得寒冷层数
5139
+ - 增强了部分免疫寒冷伤害的技能,使其可以清空自身寒冷层数
5140
+ `.trim()
5040
5141
  }
5041
5142
  ];
5042
5143
  function compareVersions(a, b) {
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.17",
4
+ "version": "1.5.19",
5
5
  "main": "lib/index.js",
6
6
  "typings": "lib/index.d.ts",
7
7
  "files": [