koishi-plugin-ggcevo-game 1.4.87 → 1.4.89

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.
@@ -12,6 +12,7 @@ export interface BattleStatistics {
12
12
  statusLayersChanged: number;
13
13
  radiationLayersChange: number;
14
14
  coldLayersChange: number;
15
+ burnLayersChanged: number;
15
16
  lastWeaponName: string;
16
17
  }
17
18
  export declare const battleStatsMap: Record<string, BattleStatistics>;
@@ -577,6 +578,14 @@ export declare const BattleEffectProcessor: {
577
578
  fusionExplosionTriggered: boolean;
578
579
  messages: string[];
579
580
  };
581
+ handleBurnEffect: (targetBoss: any, weaponName: string) => {
582
+ messages: string[];
583
+ targetUpdates: {
584
+ name: string;
585
+ updates: Partial<BattleStatistics>;
586
+ } | null;
587
+ burnLayerAdded: boolean;
588
+ } | null;
580
589
  };
581
590
  /**
582
591
  * 统一处理所有被动效果(包含伤害修正、免疫检查、状态更新等)
@@ -596,4 +605,5 @@ export declare function applyPassiveEffects(targetBoss: any, activeBosses: any[]
596
605
  bileDetonationTrigger: boolean;
597
606
  spawnNewBossMarks: string[];
598
607
  pulseGrenadeTriggered: boolean;
608
+ burnLayerAdded: boolean;
599
609
  };
@@ -14,6 +14,7 @@ export declare function handlePrimaryAttack(ctx: Context, session: any, handle:
14
14
  pulseApplied: boolean;
15
15
  arcApplied: boolean;
16
16
  pulseGrenadeTriggered: boolean;
17
+ burnLayerAdded: boolean;
17
18
  }>;
18
19
  export declare function handleScatterAttack(ctx: Context, session: any, handle: string, config: Config, equippedWeapon: any, targetBoss: any, weaponName: string, activeBosses: any[], careerData: any): Promise<{
19
20
  scatterEffectMessages: string[];
package/lib/database.d.ts CHANGED
@@ -138,6 +138,7 @@ export interface BossInfo {
138
138
  statusLayers: number;
139
139
  radiationLayers: number;
140
140
  coldLayers: number;
141
+ burnLayers: number;
141
142
  lastWeaponName: string;
142
143
  isActive: boolean;
143
144
  respawnTime: Date;
package/lib/index.js CHANGED
@@ -71,7 +71,7 @@ var weaponConfig = {
71
71
  damage: 23,
72
72
  armorDamageReduction: 0.25,
73
73
  description: "基于热能的强大武器,烧烬一切",
74
- specialeffect: "",
74
+ specialeffect: "攻击时为目标附加[燃烧]效果,每层使目标受到火焰伤害时额外造成5点伤害(至多额外造成100点伤害)",
75
75
  price: 450,
76
76
  redCrystalCost: 4,
77
77
  isantiair: false,
@@ -363,10 +363,10 @@ var weaponConfig = {
363
363
  id: 103,
364
364
  type: "实弹武器",
365
365
  category: "传奇武器",
366
- damage: 80,
366
+ damage: 90,
367
367
  armorDamageReduction: 0,
368
368
  description: "这是传说中的武器",
369
- specialeffect: "",
369
+ specialeffect: "攻击时为目标附加[燃烧]效果,每层使目标受到火焰伤害时额外造成5点伤害(至多额外造成100点伤害)",
370
370
  price: 6400,
371
371
  redCrystalCost: 200,
372
372
  isantiair: false,
@@ -489,7 +489,7 @@ var modConfig = {
489
489
  },
490
490
  "助燃核心": {
491
491
  cost: 2550,
492
- effect: "对[惧热]目标造成300%伤害,对[生物]目标造成200%伤害",
492
+ effect: "对[惧热]目标改为造成300%伤害,对[生物]目标改为造成200%伤害",
493
493
  exclusiveTo: "焚烧枪",
494
494
  isExclusive: true
495
495
  },
@@ -641,7 +641,7 @@ var spaceStationCrewConfig = [
641
641
  {
642
642
  professionName: "警卫长",
643
643
  effect: "攻击伤害+5%,攻击获得的金币+100%",
644
- requirements: "当期伤害榜前二十名",
644
+ requirements: "当期伤害榜前二十名;职业为警卫员下士",
645
645
  Jobtransfer: true,
646
646
  costcoins: 3e3
647
647
  },
@@ -719,7 +719,7 @@ var syndicatePirateConfig = [
719
719
  },
720
720
  {
721
721
  professionName: "猩红杀手",
722
- effect: "“侦察步枪”攻击伤害+15%; 使用“侦察步枪”攻击时每1点护甲减少1点伤害; 购买DSR-55反器材步枪(传奇)享有50%的折扣",
722
+ effect: "“侦察步枪”攻击伤害+15%; 使用“侦察步枪”攻击时每1点护甲改为减少1点伤害; 购买DSR-55反器材步枪(传奇)享有50%的折扣",
723
723
  requirements: "“侦察步枪”武器等级≥3级",
724
724
  Jobtransfer: true,
725
725
  costredcrystal: 30
@@ -740,7 +740,7 @@ var syndicatePirateConfig = [
740
740
  },
741
741
  {
742
742
  professionName: "计算机专家",
743
- effect: "黑市订购设备工具类享有50%折扣; 被动应战的PK对战结果为失败时,不会损失金币;购买DG-3电弧步枪(传奇)享有50%的折扣",
743
+ effect: "黑市订购设备工具类享有50%折扣; 被动应战的PK对战结果为失败时,不会损失金币;每日获得3枚红晶(前日每被PK一次,红晶数量-1,下限为1)",
744
744
  requirements: "仓库中至少拥有一个黑市订购的设备工具类物品",
745
745
  Jobtransfer: true,
746
746
  costredcrystal: 30
@@ -768,7 +768,7 @@ var syndicatePirateConfig = [
768
768
  },
769
769
  {
770
770
  professionName: "征募官",
771
- effect: "",
771
+ effect: "购买DG-3电弧步枪(传奇)享有50%的折扣",
772
772
  requirements: "",
773
773
  Jobtransfer: false,
774
774
  costredcrystal: 10
@@ -1156,9 +1156,17 @@ var Tasklist = {
1156
1156
  id: 6,
1157
1157
  type: "可重复任务",
1158
1158
  target: 1,
1159
- price: 150,
1159
+ price: 200,
1160
1160
  redCrystalCost: 0,
1161
1161
  condition: "使用【M4AE脉冲步枪】攻击目标并成功削减其护甲"
1162
+ },
1163
+ "烈火燎原": {
1164
+ id: 7,
1165
+ type: "可重复任务",
1166
+ target: 1,
1167
+ price: 50,
1168
+ redCrystalCost: 0,
1169
+ condition: "使用【焚烧枪】或【龙息霰弹枪】攻击目标并成功增加其燃烧层数"
1162
1170
  }
1163
1171
  };
1164
1172
 
@@ -1576,6 +1584,7 @@ function updateStatsByName(name2, updates) {
1576
1584
  statusLayersChanged: 0,
1577
1585
  radiationLayersChange: 0,
1578
1586
  coldLayersChange: 0,
1587
+ burnLayersChanged: 0,
1579
1588
  lastWeaponName: ""
1580
1589
  };
1581
1590
  battleStatsMap[name2] = {
@@ -1590,6 +1599,7 @@ function updateStatsByName(name2, updates) {
1590
1599
  radiationLayersChange: existing.radiationLayersChange + (updates.radiationLayersChange ?? 0),
1591
1600
  coldLayersChange: existing.coldLayersChange + (updates.coldLayersChange ?? 0),
1592
1601
  armorChange: existing.armorChange + (updates.armorChange ?? 0),
1602
+ burnLayersChanged: existing.burnLayersChanged + (updates.burnLayersChanged ?? 0),
1593
1603
  // 数组类型:合并(新增内容追加到现有数组)
1594
1604
  tagsAdded: [...existing.tagsAdded, ...updates.tagsAdded ?? []],
1595
1605
  tagsRemoved: [...existing.tagsRemoved, ...updates.tagsRemoved ?? []],
@@ -3657,7 +3667,30 @@ var BattleEffectProcessor = {
3657
3667
  };
3658
3668
  }
3659
3669
  return null;
3660
- }, "handleFusionCannonEffect")
3670
+ }, "handleFusionCannonEffect"),
3671
+ // 在 BattleEffectProcessor 对象中添加以下函数
3672
+ handleBurnEffect: /* @__PURE__ */ __name(function(targetBoss, weaponName) {
3673
+ const messages = [];
3674
+ let burnLayerAdded = false;
3675
+ const isBurnWeapon = weaponName === "焚烧枪" || weaponName === "龙息霰弹枪";
3676
+ if (!isBurnWeapon) {
3677
+ return null;
3678
+ }
3679
+ const targetUpdates = {
3680
+ name: targetBoss.name,
3681
+ updates: {
3682
+ burnLayersChanged: 1
3683
+ // 燃烧层数+1
3684
+ }
3685
+ };
3686
+ burnLayerAdded = true;
3687
+ messages.push(`🔥 【${weaponName}】武器效果:目标获得1层「燃烧」`);
3688
+ return {
3689
+ messages,
3690
+ targetUpdates,
3691
+ burnLayerAdded
3692
+ };
3693
+ }, "handleBurnEffect")
3661
3694
  };
3662
3695
  function applyPassiveEffects(targetBoss, activeBosses, weaponName, damage, hasCrit, ignoreRate, careerData, equippedWeapon) {
3663
3696
  const messages = [];
@@ -3672,6 +3705,7 @@ function applyPassiveEffects(targetBoss, activeBosses, weaponName, damage, hasCr
3672
3705
  let spawnNewBossMarks = [];
3673
3706
  let armor = 0;
3674
3707
  let pulseGrenadeTriggered = false;
3708
+ let burnLayerAdded = false;
3675
3709
  const weaponData = weaponConfig[weaponName] || { type: "" };
3676
3710
  let doubleAstralWind = false;
3677
3711
  let isolatedImmunityMark = false;
@@ -3754,6 +3788,14 @@ function applyPassiveEffects(targetBoss, activeBosses, weaponName, damage, hasCr
3754
3788
  if (fusionEffect) {
3755
3789
  messages.push(...fusionEffect.messages);
3756
3790
  }
3791
+ const burnEffectResult = BattleEffectProcessor.handleBurnEffect(targetBoss, weaponName);
3792
+ if (burnEffectResult) {
3793
+ messages.push(...burnEffectResult.messages);
3794
+ if (burnEffectResult.targetUpdates) {
3795
+ updateStatsByName(burnEffectResult.targetUpdates.name, burnEffectResult.targetUpdates.updates);
3796
+ }
3797
+ burnLayerAdded = burnEffectResult.burnLayerAdded;
3798
+ }
3757
3799
  const carpetBombResult = BattleEffectProcessor.handleCarpetBombing(targetBoss);
3758
3800
  if (carpetBombResult) {
3759
3801
  isolatedImmunityMark = carpetBombResult.tempMark || false;
@@ -3957,6 +3999,13 @@ function applyPassiveEffects(targetBoss, activeBosses, weaponName, damage, hasCr
3957
3999
  if (hasCrit) {
3958
4000
  finalDamage *= 2;
3959
4001
  }
4002
+ if (weaponName === "焚烧枪" || weaponName === "龙息霰弹枪") {
4003
+ const burnDamage = (targetBoss?.burnLayers || 0) * 5;
4004
+ if (burnDamage > 0) {
4005
+ messages.push(`🔥 【燃烧】效果造成额外${burnDamage}点伤害`);
4006
+ }
4007
+ finalDamage += burnDamage;
4008
+ }
3960
4009
  let armorDamageReduction = weaponData.armorDamageReduction || 0;
3961
4010
  if (careerData?.career === "猩红杀手" && weaponName === "侦察步枪") {
3962
4011
  armorDamageReduction = 1;
@@ -4046,7 +4095,9 @@ function applyPassiveEffects(targetBoss, activeBosses, weaponName, damage, hasCr
4046
4095
  bileDetonationTrigger,
4047
4096
  spawnNewBossMarks,
4048
4097
  // +++ 新增生成标记 +++
4049
- pulseGrenadeTriggered
4098
+ pulseGrenadeTriggered,
4099
+ burnLayerAdded
4100
+ // 新增燃烧叠加标记
4050
4101
  };
4051
4102
  }
4052
4103
  __name(applyPassiveEffects, "applyPassiveEffects");
@@ -5033,7 +5084,7 @@ var legendaryDiscounts = {
5033
5084
  "M4AE脉冲步枪": ["枪手"],
5034
5085
  "DSR-55反器材步枪": ["猩红杀手"],
5035
5086
  "龙息霰弹枪": ["纵火狂"],
5036
- "DG-3电弧步枪": ["计算机专家"],
5087
+ "DG-3电弧步枪": ["征募官"],
5037
5088
  "光剑": ["指挥官"],
5038
5089
  "外星电浆": ["装甲兵"],
5039
5090
  "核聚变重炮": ["破坏者"]
@@ -5434,7 +5485,8 @@ async function handlePrimaryAttack(ctx, session, handle, config, equippedWeapon,
5434
5485
  bileStacks: EffectProcessor.bileDetonationTrigger,
5435
5486
  pulseApplied: EffectProcessor.layerReduced,
5436
5487
  arcApplied: EffectProcessor.energyDrained,
5437
- pulseGrenadeTriggered: EffectProcessor.pulseGrenadeTriggered
5488
+ pulseGrenadeTriggered: EffectProcessor.pulseGrenadeTriggered,
5489
+ burnLayerAdded: EffectProcessor.burnLayerAdded
5438
5490
  };
5439
5491
  }
5440
5492
  __name(handlePrimaryAttack, "handlePrimaryAttack");
@@ -5493,6 +5545,9 @@ async function handleScatterAttack(ctx, session, handle, config, equippedWeapon,
5493
5545
  if (EffectProcessor.pulseGrenadeTriggered) {
5494
5546
  taskUpdates.push({ taskId: 6, count: 1 });
5495
5547
  }
5548
+ if (EffectProcessor.burnLayerAdded) {
5549
+ taskUpdates.push({ taskId: 7, count: 1 });
5550
+ }
5496
5551
  const isDead = currentHP <= 0;
5497
5552
  scatterEffectMessages.push(...EffectProcessor.messages.map((m) => ` 对 ${secondaryTarget.name} ${m}`));
5498
5553
  if (isDead) {
@@ -5739,6 +5794,9 @@ async function updateDatabaseWithStats(ctx, stats) {
5739
5794
  if (stats.coldLayersChange !== 0) {
5740
5795
  updateData.coldLayers = Math.max(0, boss.coldLayers + stats.coldLayersChange);
5741
5796
  }
5797
+ if (stats.burnLayersChanged !== 0) {
5798
+ updateData.burnLayers = Math.max(0, boss.burnLayers + stats.burnLayersChanged);
5799
+ }
5742
5800
  if (stats.tagsAdded.length > 0 || stats.tagsRemoved.length > 0) {
5743
5801
  updateData.tags = [
5744
5802
  ...boss.tags.filter((tag) => !stats.tagsRemoved.includes(tag)),
@@ -6078,10 +6136,10 @@ function apply(ctx, config) {
6078
6136
  skills: "list",
6079
6137
  skillStacks: "unsigned",
6080
6138
  skillStatus: "unsigned",
6081
- // 新增:表示技能当前的状态值
6082
6139
  statusLayers: "unsigned",
6083
6140
  radiationLayers: "unsigned",
6084
6141
  coldLayers: "unsigned",
6142
+ burnLayers: "unsigned",
6085
6143
  lastWeaponName: "string",
6086
6144
  isActive: "boolean",
6087
6145
  respawnTime: "timestamp"
@@ -8558,6 +8616,9 @@ ${validTypes.join("、")}`;
8558
8616
  if (primaryAttackResult.pulseGrenadeTriggered) {
8559
8617
  taskUpdates.push({ taskId: 6, count: 1 });
8560
8618
  }
8619
+ if (primaryAttackResult.burnLayerAdded) {
8620
+ taskUpdates.push({ taskId: 7, count: 1 });
8621
+ }
8561
8622
  if (scatterResult && scatterResult.taskUpdates) {
8562
8623
  scatterResult.taskUpdates.forEach((update) => {
8563
8624
  taskUpdates.push(update);
@@ -10071,7 +10132,6 @@ ${Spacestationtechnology.map((t) => t.techname).join("、")}`;
10071
10132
  `✨ 您获得了传奇武器:${awardedWeapon.name}`,
10072
10133
  `🔧 武器类型:${awardedWeapon.type}`,
10073
10134
  `⚔️ 基础伤害:${awardedWeapon.damage}`,
10074
- `🔮 特殊效果:${awardedWeapon.specialeffect || "无"}`,
10075
10135
  `📖 描述:${awardedWeapon.description}`
10076
10136
  ].join("\n");
10077
10137
  });
package/lib/tasks.d.ts CHANGED
@@ -43,8 +43,16 @@ export declare const Tasklist: {
43
43
  readonly id: 6;
44
44
  readonly type: "可重复任务";
45
45
  readonly target: 1;
46
- readonly price: 150;
46
+ readonly price: 200;
47
47
  readonly redCrystalCost: 0;
48
48
  readonly condition: "使用【M4AE脉冲步枪】攻击目标并成功削减其护甲";
49
49
  };
50
+ readonly 烈火燎原: {
51
+ readonly id: 7;
52
+ readonly type: "可重复任务";
53
+ readonly target: 1;
54
+ readonly price: 50;
55
+ readonly redCrystalCost: 0;
56
+ readonly condition: "使用【焚烧枪】或【龙息霰弹枪】攻击目标并成功增加其燃烧层数";
57
+ };
50
58
  };
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.87",
4
+ "version": "1.4.89",
5
5
  "main": "lib/index.js",
6
6
  "typings": "lib/index.d.ts",
7
7
  "files": [