koishi-plugin-ggcevo-game 1.4.20 → 1.4.22

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.
package/lib/index.js CHANGED
@@ -137,6 +137,7 @@ var weaponConfig = {
137
137
  redCrystalCost: 10,
138
138
  isantiair: true,
139
139
  tagEffects: {
140
+ "轻甲": 0.5,
140
141
  "重甲": 0.2
141
142
  }
142
143
  },
@@ -144,9 +145,9 @@ var weaponConfig = {
144
145
  id: 8,
145
146
  type: "热能武器",
146
147
  category: "热能武器",
147
- damage: 20,
148
+ damage: 22,
148
149
  description: "喷射稳定的液氮恒流,对长时间接触者造成致命的损伤",
149
- specialeffect: "攻击使目标叠加“寒冷”层数,每层使其受到的伤害+5%(至多叠加10层)",
150
+ specialeffect: "攻击使目标叠加“寒冷”层数,每层使其受到的伤害+2.5%(至多+50%)",
150
151
  price: 775,
151
152
  redCrystalCost: 10,
152
153
  isantiair: false,
@@ -174,9 +175,9 @@ var weaponConfig = {
174
175
  id: 10,
175
176
  type: "热能武器",
176
177
  category: "热能武器",
177
- damage: 25,
178
+ damage: 24,
178
179
  description: "一种高度危险性的武器,设计用辐射照射并伤害敌人",
179
- specialeffect: "攻击使生物目标(无机械标签)叠加“辐射”层数,每层使其受到的伤害+5%(至多叠加10层)",
180
+ specialeffect: "攻击使生物目标(无机械标签)叠加“辐射”层数,每层使其受到的伤害+2.5%(至多+50%)",
180
181
  price: 825,
181
182
  redCrystalCost: 10,
182
183
  isantiair: true,
@@ -1434,7 +1435,7 @@ var wishConfig = {
1434
1435
  },
1435
1436
  {
1436
1437
  name: "精灵双倍",
1437
- effect: "下一次击败首领时可获得双倍的金币和咕咕币奖励"
1438
+ effect: "下一次击败主宰时可获得双倍的金币和咕咕币奖励"
1438
1439
  },
1439
1440
  {
1440
1441
  name: "喵喵财源",
@@ -2059,8 +2060,8 @@ async function handleTechUpgrade(ctx, handle, target) {
2059
2060
  costInfo,
2060
2061
  ...discountInfo,
2061
2062
  // 折扣信息
2062
- `📝 ${levelData.description}`,
2063
- `💼 ${levelData.careerBonus}`,
2063
+ `📝 基础效果:${levelData.description}`,
2064
+ `💼 职业效果:${levelData.careerBonus}`,
2064
2065
  ...permissionMessage
2065
2066
  // 权限解锁信息
2066
2067
  ].filter(Boolean).join("\n");
@@ -6267,13 +6268,13 @@ ${validTypes.join("、")}`;
6267
6268
  if (activeWish) {
6268
6269
  const wishDiscount = 20;
6269
6270
  totalDiscount += wishDiscount;
6270
- discountDetails.push(`▸ 🦗 蚱蜢优购祈愿:${wishDiscount}%折扣`);
6271
+ discountDetails.push(`🦗 蚱蜢优购祈愿:${wishDiscount}%折扣`);
6271
6272
  }
6272
6273
  }
6273
6274
  if (isWeapon && careerData?.career === "武器中士") {
6274
6275
  const specialistDiscount = 20;
6275
6276
  totalDiscount += specialistDiscount;
6276
- discountDetails.push(`▸ 🎖️ 武器中士职业:${specialistDiscount}%折扣`);
6277
+ discountDetails.push(`🎖️ 武器中士职业:${specialistDiscount}%折扣`);
6277
6278
  }
6278
6279
  totalDiscount = Math.min(totalDiscount, 100);
6279
6280
  }
@@ -7878,67 +7879,63 @@ ${Spacestationtechnology.map((t) => t.techname).join("、")}`;
7878
7879
  handle,
7879
7880
  taskId: taskConfig.id
7880
7881
  });
7881
- if (!taskData) return `⚠️ ⚠️ 任务进度不足!无法完成"${taskName}"任务`;
7882
+ if (!taskData) return `⚠️ 任务进度不足!无法完成"${taskName}"任务`;
7882
7883
  if (taskData.progress < taskConfig.target) {
7883
7884
  return `⚠️ 任务进度不足!当前进度:${taskData.progress}/${taskConfig.target}`;
7884
7885
  }
7885
- const newProgress = taskData.progress - taskConfig.target;
7886
- const newCompletions = taskData.Completions + 1;
7887
7886
  const [careerData] = await ctx.database.get("ggcevo_careers", { handle });
7888
7887
  const [systemFirmwareTech] = await ctx.database.get("ggcevo_tech", { handle, techId: 5 }).catch(() => [{ level: 0 }]);
7889
7888
  const techLevel = Math.min(systemFirmwareTech?.level || 0, 5);
7890
- let baseReward = taskConfig.price;
7891
- let actualReward = baseReward;
7892
- let bonusPercent = 0;
7889
+ const completableTimes = Math.floor(taskData.progress / taskConfig.target);
7890
+ const remainingProgress = taskData.progress % taskConfig.target;
7891
+ const newCompletions = taskData.Completions + completableTimes;
7892
+ const baseTotal = taskConfig.price * completableTimes;
7893
+ let baseBonus = 0;
7893
7894
  if (techLevel > 0) {
7894
- const normalBonus = [0, 5, 10, 15, 20, 25][techLevel];
7895
- const careerBonus = careerData?.group === "人类联盟" && ["舰长", "情报副官"].includes(careerData?.career) ? [0, 10, 20, 30, 40, 50][techLevel] : 0;
7896
- bonusPercent = Math.max(normalBonus, careerBonus);
7897
- }
7898
- if (careerData?.group === "人类联盟" && careerData.career === "舰长") {
7899
- bonusPercent += 50;
7900
- }
7901
- if (bonusPercent > 0) {
7902
- actualReward = Math.round(baseReward * (1 + bonusPercent / 100));
7895
+ baseBonus = careerData?.group === "人类联盟" && ["舰长", "情报副官"].includes(careerData?.career) ? [0, 10, 20, 30, 40, 50][techLevel] : [0, 5, 10, 15, 20, 25][techLevel];
7903
7896
  }
7897
+ const captainBonus = careerData?.group === "人类联盟" && careerData.career === "舰长" ? 50 : 0;
7898
+ const totalBonus = baseBonus + captainBonus;
7899
+ const totalReward = totalBonus > 0 ? Math.round(baseTotal * (1 + totalBonus / 100)) : baseTotal;
7904
7900
  await ctx.database.set("ggcevo_task", {
7905
7901
  handle,
7906
7902
  taskId: taskConfig.id
7907
7903
  }, {
7908
- progress: newProgress,
7904
+ progress: remainingProgress,
7909
7905
  Completions: newCompletions
7910
7906
  });
7911
7907
  const [signData] = await ctx.database.get("ggcevo_sign", { handle });
7908
+ const newTotalRewards = (signData?.totalRewards || 0) + totalReward;
7912
7909
  await ctx.database.upsert("ggcevo_sign", [{
7913
7910
  handle,
7914
- totalRewards: (signData?.totalRewards || 0) + actualReward
7911
+ totalRewards: newTotalRewards
7915
7912
  }], ["handle"]);
7916
- const [updatedSignData] = await ctx.database.get("ggcevo_sign", { handle });
7917
7913
  const response = [
7918
- `🎉 恭喜您成功完成【${taskName}】任务!`
7914
+ `🎉 成功完成【${taskName}】任务!`
7919
7915
  ];
7920
- if (bonusPercent > 0) {
7921
- response.push(`任务奖励:${actualReward}金币 (基础值:${baseReward}金币)`);
7916
+ if (totalBonus > 0) {
7917
+ response.push(`💰 获得总奖励:${totalReward}金币 (基础值: ${baseTotal}金币)`);
7922
7918
  } else {
7923
- response.push(`任务奖励:${actualReward}金币`);
7919
+ response.push(`💰 获得总奖励:${totalReward}金币`);
7924
7920
  }
7925
- if (bonusPercent > 0) {
7926
- let bonusType = "";
7927
- if (careerData?.group === "人类联盟" && ["舰长", "情报副官"].includes(careerData.career)) {
7928
- bonusType = "(职业专属加成)";
7929
- } else {
7930
- bonusType = "(普通加成)";
7931
- }
7921
+ if (totalBonus > 0) {
7932
7922
  response.push(`⚡ 加成效果:`);
7933
- response.push(`▸ ⚙️ 关键系统固件Lv.${techLevel}:+${bonusPercent}%金币`);
7923
+ if (baseBonus > 0) {
7924
+ response.push(`▸ ⚙️ 关键系统固件Lv.${techLevel}: +${baseBonus}%金币`);
7925
+ }
7926
+ if (captainBonus > 0) {
7927
+ response.push(`▸ 🚀 舰长职业: +${captainBonus}%金币`);
7928
+ }
7934
7929
  }
7935
7930
  response.push(
7936
- `累计完成次数:${newCompletions}次`,
7937
- `剩余进度点数:${newProgress}`,
7938
- `当前拥有金币:${updatedSignData.totalRewards}`
7931
+ `📊 累计完成次数: ${newCompletions}次`,
7932
+ `⚙️ 剩余进度点数: ${remainingProgress}/${taskConfig.target}`
7939
7933
  );
7940
- if (newProgress >= taskConfig.target) {
7941
- response.push(`💡 当前剩余进度可再完成${Math.floor(newProgress / taskConfig.target)}次任务`);
7934
+ if (remainingProgress > 0) {
7935
+ response.push(`💡 剩余进度可完成 ${Math.floor(remainingProgress / taskConfig.target)} 次`);
7936
+ }
7937
+ if (completableTimes > 1) {
7938
+ response.push(`💡 成功完成${completableTimes}次任务,已发放全部奖励`);
7942
7939
  }
7943
7940
  return response.join("\n");
7944
7941
  } catch (error) {
package/lib/weapons.d.ts CHANGED
@@ -102,6 +102,7 @@ export declare const weaponConfig: {
102
102
  redCrystalCost: number;
103
103
  isantiair: boolean;
104
104
  tagEffects: {
105
+ 轻甲: number;
105
106
  重甲: number;
106
107
  };
107
108
  };
package/lib/wish.d.ts CHANGED
@@ -20,7 +20,7 @@ export declare const wishConfig: {
20
20
  readonly effect: "获得基于武器等级的伤害加成(0级为10%,每等级增加10%)";
21
21
  }, {
22
22
  readonly name: "精灵双倍";
23
- readonly effect: "下一次击败首领时可获得双倍的金币和咕咕币奖励";
23
+ readonly effect: "下一次击败主宰时可获得双倍的金币和咕咕币奖励";
24
24
  }, {
25
25
  readonly name: "喵喵财源";
26
26
  readonly effect: "签到获得双倍的金币和咕咕币";
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.20",
4
+ "version": "1.4.22",
5
5
  "main": "lib/index.js",
6
6
  "typings": "lib/index.d.ts",
7
7
  "files": [