koishi-plugin-ggcevo-game 1.6.33 → 1.6.34

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.
Files changed (2) hide show
  1. package/lib/index.js +41 -18
  2. package/package.json +1 -1
package/lib/index.js CHANGED
@@ -5457,7 +5457,8 @@ var ggcevoUpdates = [
5457
5457
  - 回调了能量武器专家的职业效果
5458
5458
  - 禁用了棱镜水晶,使用拆卸可返还100%金币
5459
5459
  - 新增资源商店,输入“兑换资源”查看
5460
- - 修改“兑换”指令,更改为“兑换赞助物品”
5460
+ - 修改“兑换”指令,更改为“兑换赞助物品”,并且优化了显示信息
5461
+ - 暂时关闭了“兑换金币”和“兑换红晶”
5461
5462
  `.trim()
5462
5463
  }
5463
5464
  ];
@@ -8616,6 +8617,17 @@ ${ticketMessage}${effectMessage}`;
8616
8617
  return `⛔ 您已被列入黑名单。`;
8617
8618
  }
8618
8619
  const currentSeason = config.rankseason;
8620
+ const backpackItems = await ctx.database.get("ggcevo_backpack", { handle });
8621
+ const normalCoupon = backpackItems.find((item) => item.itemId === 2);
8622
+ const petCoupons = backpackItems.filter((item) => item.itemId >= 3 && item.itemId <= 6);
8623
+ const petCouponMap = { 3: "t3", 4: "t2", 5: "t1", 6: "t0" };
8624
+ let petCouponInfo = "";
8625
+ for (const coupon of petCoupons) {
8626
+ const quality = petCouponMap[coupon.itemId];
8627
+ if (petCouponInfo) petCouponInfo += " | ";
8628
+ petCouponInfo += `${quality}级券(${coupon.quantity})`;
8629
+ }
8630
+ if (!petCouponInfo) petCouponInfo = "无";
8619
8631
  const qualityGroups = {};
8620
8632
  for (const [itemName, config2] of Object.entries(itemConfig)) {
8621
8633
  const configname2 = config2;
@@ -8645,7 +8657,13 @@ ${ticketMessage}${effectMessage}`;
8645
8657
  t0: 6
8646
8658
  };
8647
8659
  const order = ["t0", "t1", "t2", "t3"];
8648
- let message = "请在30秒内输入可兑换物品名称(显示格式:物品名 [剩余/总量]):\n";
8660
+ let message = "===== 当前资源 =====\n";
8661
+ message += `普通兑奖券: ${normalCoupon?.quantity || 0}张
8662
+ `;
8663
+ message += `宠物扭蛋券: ${petCouponInfo}
8664
+
8665
+ `;
8666
+ message += "请在30秒内输入可兑换物品名称(显示格式:物品名 [剩余/总量]):\n";
8649
8667
  message += "注意:限量物品将在赛季更新时补货,限定物品[史蒂夫]除外。\n";
8650
8668
  for (const quality of order) {
8651
8669
  const items = qualityGroups[quality] || [];
@@ -8675,52 +8693,48 @@ ${items.join("、")}
8675
8693
  }
8676
8694
  const qualityMap = { "t3": 4, "t2": 5, "t1": 6, "t0": 7 };
8677
8695
  const petItems = new Set(
8678
- // 动态生成宠物集合
8679
8696
  Object.entries(itemConfig).filter(([_, config2]) => config2.type === "宠物").map(([name3]) => name3)
8680
8697
  );
8681
8698
  let cost = configname.cost;
8682
8699
  let itemId = 2;
8683
8700
  let couponName = "兑奖券";
8684
8701
  if (petItems.has(name2)) {
8685
- const [specialCoupon] = await ctx.database.get("ggcevo_backpack", {
8686
- handle,
8687
- itemId: qualityMap[configname.quality]
8688
- });
8702
+ const specialCoupon = backpackItems.find(
8703
+ (item) => item.itemId === qualityMap[configname.quality]
8704
+ );
8689
8705
  if (specialCoupon?.quantity >= 1) {
8690
8706
  itemId = qualityMap[configname.quality];
8691
8707
  cost = 1;
8692
- couponName = `${configname.quality}级宠物扭蛋`;
8708
+ couponName = `${configname.quality}级宠物扭蛋券`;
8693
8709
  }
8694
8710
  }
8695
- const [coupon] = await ctx.database.get("ggcevo_backpack", { handle, itemId });
8696
- if (!coupon || coupon.quantity < cost) {
8697
- const requireMsg = petItems.has(name2) ? `需要1个${configname.quality}级宠物扭蛋或${configname.cost}张兑奖券` : `需要${configname.cost}张兑奖券`;
8711
+ const couponItem = backpackItems.find((item) => item.itemId === itemId);
8712
+ if (!couponItem || couponItem.quantity < cost) {
8713
+ const requireMsg = petItems.has(name2) ? `需要1个${configname.quality}级宠物扭蛋券或${configname.cost}张普通兑奖券` : `需要${configname.cost}张普通兑奖券`;
8698
8714
  return `${requireMsg}
8699
- 您当前持有:${coupon?.quantity || 0}个${couponName}`;
8715
+ 您当前持有:${couponItem?.quantity || 0}个${couponName}`;
8700
8716
  }
8701
8717
  const isGlobal = configname.isLimited || config.ignoreGlobalLimit === false;
8702
8718
  await ctx.database.withTransaction(async () => {
8703
8719
  await ctx.database.set(
8704
8720
  "ggcevo_backpack",
8705
8721
  { handle, itemId },
8706
- { quantity: coupon.quantity - cost }
8722
+ { quantity: couponItem.quantity - cost }
8707
8723
  );
8708
8724
  await ctx.database.create("ggcevo_exchange", {
8709
8725
  userId: session.userId,
8710
8726
  handle,
8711
8727
  item: name2,
8712
8728
  type: configname.type,
8713
- // 从配置中获取类型
8714
8729
  date: /* @__PURE__ */ new Date(),
8715
8730
  GlobalLimit: isGlobal,
8716
- // 关键字段设置
8717
8731
  season: currentSeason
8718
8732
  });
8719
8733
  });
8720
8734
  return `🎉 恭喜!您使用${cost}个${couponName}兑换了【${name2}】`;
8721
8735
  } catch (error) {
8722
8736
  console.error("兑换失败:", error);
8723
- return "兑换失败";
8737
+ return "兑换失败,请稍后再试";
8724
8738
  }
8725
8739
  });
8726
8740
  ctx.command("ggcevo/兑换扭蛋币").action(async ({ session }) => {
@@ -12173,7 +12187,7 @@ ${Spacestationtechnology.map((t) => t.techname).join("、")}`;
12173
12187
  return "⛔ 您已被列入黑名单。";
12174
12188
  }
12175
12189
  const [signRecord] = await ctx.database.get("ggcevo_sign", { handle });
12176
- if (!signRecord) return "请先进行至少一次签到获得金币后购买飞船";
12190
+ if (!signRecord) return "请先进行至少一次签到获得金币后购买飞船";
12177
12191
  const coins = signRecord.totalRewards;
12178
12192
  if (!shipName) {
12179
12193
  const shipList = Object.keys(spaceship).map((name2) => {
@@ -12244,7 +12258,7 @@ ${Spacestationtechnology.map((t) => t.techname).join("、")}`;
12244
12258
  return "⛔ 您已被列入黑名单。";
12245
12259
  }
12246
12260
  const [career] = await ctx.database.get("ggcevo_careers", { handle });
12247
- if (!career) return "🚫 未查询到您的阵营信息";
12261
+ if (!career) return "🚫 仅限辛迪加海盗阵营使用";
12248
12262
  if (career.group !== "辛迪加海盗") {
12249
12263
  return `🚫 仅限辛迪加海盗阵营使用`;
12250
12264
  }
@@ -12472,6 +12486,9 @@ ${validBossNames.join("、")}`;
12472
12486
  const [profile] = await ctx.database.get("sc2arcade_player", { userId: session.userId });
12473
12487
  if (!profile) return "🔒 需要先绑定游戏句柄";
12474
12488
  const handle = `${profile.regionId}-S2-${profile.realmId}-${profile.profileId}`;
12489
+ if ((await ctx.database.get("ggcevo_blacklist", { handle })).length) {
12490
+ return "⛔ 您已被列入黑名单。";
12491
+ }
12475
12492
  const resourceItems = {
12476
12493
  "金币": { valuePerCoupon: 100, currencyField: "totalRewards", table: "ggcevo_sign" },
12477
12494
  "红晶": { valuePerCoupon: 1, currencyField: "redcrystal", table: "ggcevo_careers" }
@@ -12493,6 +12510,12 @@ ${validBossNames.join("、")}`;
12493
12510
  }
12494
12511
  const config2 = resourceItems[name2];
12495
12512
  if (!config2) return `⚠️ 无效物品名称,可用选项:${Object.keys(resourceItems).join("、")}`;
12513
+ if (name2 === "红晶") {
12514
+ const [career] = await ctx.database.get("ggcevo_careers", { handle });
12515
+ if (!career || career.group !== "辛迪加海盗") {
12516
+ return `⚠️ 兑换红晶失败:仅限【辛迪加海盗】组织成员兑换,您当前属于【${career?.group || "无"}】`;
12517
+ }
12518
+ }
12496
12519
  const exchangeAmount = parseInt(amount) || 1;
12497
12520
  if (exchangeAmount <= 0 || exchangeAmount > 100) return "⚠️ 兑换数量需在1-100之间";
12498
12521
  const [couponItem] = await ctx.database.get("ggcevo_backpack", {
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.6.33",
4
+ "version": "1.6.34",
5
5
  "main": "lib/index.js",
6
6
  "typings": "lib/index.d.ts",
7
7
  "files": [