koishi-plugin-ggcevo-game 1.6.36 → 1.6.38

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.
@@ -59,4 +59,5 @@ export declare function createNestlingBosses(ctx: any, nestlingNames: string | s
59
59
  export declare function verifyFinalBlow(ctx: any, session: any, bossName: string, targetBoss: any): Promise<{
60
60
  success: boolean;
61
61
  updatedBoss?: any;
62
+ verificationPassed?: boolean;
62
63
  }>;
package/lib/index.js CHANGED
@@ -717,27 +717,27 @@ var initDefaultItems = {
717
717
  "🎖S2赛季前二十勋章": { id: 115, type: "勋章", description: "" }
718
718
  };
719
719
  var itemConfig = {
720
- "拾荒者": { quality: "t3", type: "皮肤", cost: 3, isLimited: false },
721
- "劳工": { quality: "t3", type: "皮肤", cost: 3, isLimited: false },
722
- "老兵": { quality: "t2", type: "皮肤", cost: 4, isLimited: false },
723
- "合成人": { quality: "t2", type: "皮肤", cost: 4, isLimited: false },
724
- "阿斯塔特": { quality: "t1", type: "皮肤", cost: 5, isLimited: false },
725
- "皇家指挥官": { quality: "t1", type: "皮肤", cost: 5, isLimited: false },
726
- "个性开场白": { quality: "t1", type: "入场特效", cost: 5, quantity: 5, isLimited: false },
720
+ "拾荒者": { quality: "t3", type: "皮肤", cost: 3, quantity: 8, isLimited: false },
721
+ "劳工": { quality: "t3", type: "皮肤", cost: 3, quantity: 8, isLimited: false },
722
+ "老兵": { quality: "t2", type: "皮肤", cost: 4, quantity: 5, isLimited: false },
723
+ "合成人": { quality: "t2", type: "皮肤", cost: 4, quantity: 5, isLimited: false },
724
+ "阿斯塔特": { quality: "t1", type: "皮肤", cost: 5, quantity: 4, isLimited: false },
725
+ "皇家指挥官": { quality: "t1", type: "皮肤", cost: 5, quantity: 4, isLimited: false },
726
+ "个性开场白": { quality: "t1", type: "入场特效", cost: 5, quantity: 4, isLimited: false },
727
727
  "史蒂夫": { quality: "t0", type: "皮肤", cost: 6, quantity: 1, isLimited: true },
728
728
  "ep4": { quality: "t0", type: "物品", cost: 6, quantity: 3, isLimited: false },
729
- "小狗": { quality: "t3", type: "宠物", cost: 3, quantity: 5, isLimited: false },
730
- "小猫": { quality: "t3", type: "宠物", cost: 3, quantity: 5, isLimited: false },
731
- "小黄鸭": { quality: "t3", type: "宠物", cost: 3, quantity: 5, isLimited: false },
732
- "萌萌熊": { quality: "t2", type: "宠物", cost: 4, quantity: 3, isLimited: false },
733
- "荆棘蜥蜴": { quality: "t2", type: "宠物", cost: 4, quantity: 3, isLimited: false },
734
- "萌宠小狗": { quality: "t1", type: "宠物", cost: 5, quantity: 2, isLimited: false },
735
- "熔岩虫": { quality: "t1", type: "宠物", cost: 5, quantity: 2, isLimited: false },
736
- "尸甲虫": { quality: "t1", type: "宠物", cost: 5, quantity: 2, isLimited: false },
737
- "绿毛虫": { quality: "t0", type: "宠物", cost: 6, quantity: 1, isLimited: false },
738
- "妙蛙种子": { quality: "t0", type: "宠物", cost: 6, quantity: 1, isLimited: false },
739
- "皮卡丘": { quality: "t0", type: "宠物", cost: 6, quantity: 1, isLimited: false },
740
- "哆啦A梦": { quality: "t0", type: "宠物", cost: 6, quantity: 1, isLimited: false }
729
+ "小狗": { quality: "t3", type: "宠物", cost: 3, quantity: 6, isLimited: false },
730
+ "小猫": { quality: "t3", type: "宠物", cost: 3, quantity: 6, isLimited: false },
731
+ "小黄鸭": { quality: "t3", type: "宠物", cost: 3, quantity: 6, isLimited: false },
732
+ "萌萌熊": { quality: "t2", type: "宠物", cost: 4, quantity: 5, isLimited: false },
733
+ "荆棘蜥蜴": { quality: "t2", type: "宠物", cost: 4, quantity: 5, isLimited: false },
734
+ "萌宠小狗": { quality: "t1", type: "宠物", cost: 5, quantity: 3, isLimited: false },
735
+ "熔岩虫": { quality: "t1", type: "宠物", cost: 5, quantity: 3, isLimited: false },
736
+ "尸甲虫": { quality: "t1", type: "宠物", cost: 5, quantity: 3, isLimited: false },
737
+ "绿毛虫": { quality: "t0", type: "宠物", cost: 6, quantity: 2, isLimited: false },
738
+ "妙蛙种子": { quality: "t0", type: "宠物", cost: 6, quantity: 2, isLimited: false },
739
+ "皮卡丘": { quality: "t0", type: "宠物", cost: 6, quantity: 2, isLimited: false },
740
+ "哆啦A梦": { quality: "t0", type: "宠物", cost: 6, quantity: 2, isLimited: false }
741
741
  };
742
742
 
743
743
  // src/careersystem/careers.ts
@@ -760,7 +760,7 @@ var spaceStationCrewConfig = [
760
760
  professionName: "警卫长",
761
761
  effect: "攻击伤害+5%,当有异形被击败时获得金币(击败者获得双倍金币)",
762
762
  requirements: "当期伤害榜累计攻击4次及以上",
763
- Jobtransfer: true,
763
+ Jobtransfer: false,
764
764
  costcoins: 3e3
765
765
  },
766
766
  {
@@ -5471,6 +5471,15 @@ var ggcevoUpdates = [
5471
5471
  - 增加了签到验证机制(需近3日内玩过地图)
5472
5472
  - 增加了宵禁机制(夜间18:00-24:00将无法在群聊中使用咕咕之战功能,可私聊使用)
5473
5473
  `.trim()
5474
+ },
5475
+ {
5476
+ version: "1.6.37",
5477
+ time: "2025-07-17",
5478
+ content: `
5479
+ - 修改了签到验证机制(近3日内游玩地图的才能获得咕咕币)
5480
+ - 新增了斩杀机制,当触发斩杀机制后,攻击周期变为6小时(0点、6点、12点或18点)
5481
+ - 暂时关闭人类转职“警卫长”
5482
+ `.trim()
5474
5483
  }
5475
5484
  ];
5476
5485
  function compareVersions(a, b) {
@@ -7212,19 +7221,18 @@ async function verifyFinalBlow(ctx, session, bossName, targetBoss) {
7212
7221
  const hasResurrectionSkill = forbiddenSkills.some(
7213
7222
  (skill) => targetBoss.skills.includes(skill)
7214
7223
  );
7215
- const currentTime = /* @__PURE__ */ new Date();
7216
- const hours = currentTime.getHours();
7217
- const minutes = currentTime.getMinutes();
7218
- const isMidnightWindow = hours === 0 && minutes <= 5;
7219
- const isNoonWindow = hours === 12 && minutes <= 5;
7220
- if (!(isDominationBoss && isLowHealth && !hasResurrectionSkill && (isMidnightWindow || isNoonWindow))) {
7221
- return { success: true, updatedBoss: targetBoss };
7224
+ if (!(isDominationBoss && isLowHealth && !hasResurrectionSkill)) {
7225
+ return {
7226
+ success: true,
7227
+ updatedBoss: targetBoss,
7228
+ verificationPassed: false
7229
+ };
7222
7230
  }
7223
7231
  const verificationCode = Array(6).fill(0).map(
7224
7232
  () => Math.floor(Math.random() * 10)
7225
7233
  ).join("");
7226
7234
  await session.send(
7227
- `<quote id="${session.messageId}"/>⚠️ ${bossName}进入濒死状态!需完成安全验证
7235
+ `<quote id="${session.messageId}"/>⚠️ ${bossName}进入斩杀阶段!每6小时周期(0点、6点、12点或18点)即可攻击一次,但需完成安全验证
7228
7236
  请在30秒内输入验证码:【${verificationCode}】`
7229
7237
  );
7230
7238
  const userInput = (await session.prompt(3e4))?.trim();
@@ -7244,7 +7252,11 @@ async function verifyFinalBlow(ctx, session, bossName, targetBoss) {
7244
7252
  await session.send(`✅ 验证通过!但${bossName}已被其他玩家消灭。`);
7245
7253
  return { success: false };
7246
7254
  }
7247
- return { success: true, updatedBoss };
7255
+ return {
7256
+ success: true,
7257
+ updatedBoss,
7258
+ verificationPassed: true
7259
+ };
7248
7260
  }
7249
7261
  __name(verifyFinalBlow, "verifyFinalBlow");
7250
7262
 
@@ -7992,6 +8004,7 @@ ${itemDetails.join("\n")}`;
7992
8004
  return `您今天已经签到过了!本月累计签到${record.monthlyDays}天。`;
7993
8005
  }
7994
8006
  }
8007
+ let hasRecentPlay = false;
7995
8008
  const threeDaysAgo = new Date(now.getTime() - 3 * 24 * 60 * 60 * 1e3);
7996
8009
  try {
7997
8010
  const requestOptions = config.proxyAgent ? { proxyAgent: config.proxyAgent } : void 0;
@@ -7999,16 +8012,13 @@ ${itemDetails.join("\n")}`;
7999
8012
  `https://api.sc2arcade.com/profiles/${regionId}/${realmId}/${profileId}/matches?orderDirection=desc`,
8000
8013
  requestOptions
8001
8014
  );
8002
- const hasRecentPlay = matchData.results.some((match) => {
8015
+ hasRecentPlay = matchData.results.some((match) => {
8003
8016
  const matchDate = new Date(match.date);
8004
8017
  return matchDate >= threeDaysAgo;
8005
8018
  });
8006
- if (!hasRecentPlay) {
8007
- return "🚫 需要最近3天内游玩过至少1次游戏才能签到。";
8008
- }
8009
8019
  } catch (apiError) {
8010
8020
  console.error("游戏记录API请求失败:", apiError);
8011
- return "⚠️ 无法验证游戏记录,请稍后重试。";
8021
+ hasRecentPlay = false;
8012
8022
  }
8013
8023
  let monthlyDays = 1;
8014
8024
  if (record) {
@@ -8022,12 +8032,16 @@ ${itemDetails.join("\n")}`;
8022
8032
  const messages = [];
8023
8033
  let totalBonus = 0;
8024
8034
  let baseTickets = 0;
8025
- if (monthlyDays < 7) baseTickets = 3;
8026
- else if (monthlyDays === 7) baseTickets = 4;
8027
- else if (monthlyDays === 14) baseTickets = 5;
8028
- else if (monthlyDays === 21) baseTickets = 6;
8029
- else if (monthlyDays === 28) baseTickets = 7;
8030
- else baseTickets = 3;
8035
+ if (hasRecentPlay) {
8036
+ if (monthlyDays < 7) baseTickets = 3;
8037
+ else if (monthlyDays === 7) baseTickets = 4;
8038
+ else if (monthlyDays === 14) baseTickets = 5;
8039
+ else if (monthlyDays === 21) baseTickets = 6;
8040
+ else if (monthlyDays === 28) baseTickets = 7;
8041
+ else baseTickets = 3;
8042
+ } else {
8043
+ messages.push("⚠️ 未检测到最近3天游戏记录:不获得咕咕币");
8044
+ }
8031
8045
  const basePoints = getRandomInt(50, 100);
8032
8046
  const [careerData] = await ctx.database.get("ggcevo_careers", { handle });
8033
8047
  let tech5Bonus = 0;
@@ -8036,7 +8050,6 @@ ${itemDetails.join("\n")}`;
8036
8050
  handle,
8037
8051
  techId: 5,
8038
8052
  level: 5
8039
- // 只获取5级科技
8040
8053
  });
8041
8054
  if (tech5Data) {
8042
8055
  tech5Bonus = 1;
@@ -8086,11 +8099,13 @@ ${itemDetails.join("\n")}`;
8086
8099
  monthlyDays,
8087
8100
  totalRewards: (record?.totalRewards || 0) + finalPoints
8088
8101
  }]);
8089
- await ctx.database.upsert("ggcevo_backpack", [{
8090
- handle,
8091
- itemId: 1,
8092
- quantity: (backpack?.quantity || 0) + finalTickets
8093
- }]);
8102
+ if (finalTickets > 0) {
8103
+ await ctx.database.upsert("ggcevo_backpack", [{
8104
+ handle,
8105
+ itemId: 1,
8106
+ quantity: (backpack?.quantity || 0) + finalTickets
8107
+ }]);
8108
+ }
8094
8109
  if (redCrystal > 0) {
8095
8110
  await ctx.database.upsert("ggcevo_careers", [{
8096
8111
  handle,
@@ -8108,9 +8123,13 @@ ${itemDetails.join("\n")}`;
8108
8123
  if (totalBonus > 0 || multiplier > 1) {
8109
8124
  coinMessage += ` (基础值:${basePoints}金币)`;
8110
8125
  }
8111
- let ticketMessage = `🪙 咕咕币 x ${finalTickets}`;
8112
- if (multiplier > 1) {
8113
- ticketMessage += ` (基础值:${baseTickets}枚)`;
8126
+ let ticketMessage = "";
8127
+ if (finalTickets > 0) {
8128
+ ticketMessage = `🪙 咕咕币 x ${finalTickets}`;
8129
+ if (multiplier > 1) {
8130
+ ticketMessage += ` (基础值:${baseTickets}枚)`;
8131
+ }
8132
+ ticketMessage += "\n";
8114
8133
  }
8115
8134
  return `签到成功!本月累计签到${monthlyDays}天,获得:
8116
8135
  ${coinMessage}
@@ -8672,6 +8691,22 @@ ${ticketMessage}${effectMessage}`;
8672
8691
  const configname2 = config2;
8673
8692
  const quality = configname2.quality;
8674
8693
  if (!qualityGroups[quality]) qualityGroups[quality] = [];
8694
+ let shouldSkip = false;
8695
+ if (configname2.quantity !== void 0) {
8696
+ const queryConditions = {
8697
+ item: itemName,
8698
+ GlobalLimit: true
8699
+ };
8700
+ if (itemName !== "史蒂夫") {
8701
+ queryConditions.season = currentSeason;
8702
+ }
8703
+ const records = await ctx.database.get("ggcevo_exchange", queryConditions);
8704
+ const remaining = Math.max(configname2.quantity - records.length, 0);
8705
+ if (configname2.isLimited && remaining <= 0) {
8706
+ shouldSkip = true;
8707
+ }
8708
+ }
8709
+ if (shouldSkip) continue;
8675
8710
  let quantityText = "";
8676
8711
  if (configname2.quantity !== void 0) {
8677
8712
  const queryConditions = {
@@ -8703,7 +8738,7 @@ ${ticketMessage}${effectMessage}`;
8703
8738
 
8704
8739
  `;
8705
8740
  message += "请在30秒内输入可兑换物品名称(显示格式:物品名 [剩余/总量]):\n";
8706
- message += "注意:限量物品将在赛季更新时补货,限定物品[史蒂夫]除外。\n";
8741
+ message += "注意:限量物品将在赛季更新时补货,限定物品除外。\n";
8707
8742
  for (const quality of order) {
8708
8743
  const items = qualityGroups[quality] || [];
8709
8744
  if (!items.length) continue;
@@ -8770,7 +8805,8 @@ ${items.join("、")}
8770
8805
  season: currentSeason
8771
8806
  });
8772
8807
  });
8773
- return `🎉 恭喜!您使用${cost}个${couponName}兑换了【${name2}】`;
8808
+ return `🎉 恭喜!您使用${cost}个${couponName}兑换了【${name2}
8809
+ ⚠️ 兑换完成后请寻找活动管理登记,否则将无法在游戏中使用!`;
8774
8810
  } catch (error) {
8775
8811
  console.error("兑换失败:", error);
8776
8812
  return "兑换失败,请稍后再试";
@@ -8973,11 +9009,11 @@ ${items.join("、")}
8973
9009
  return output.join("\n");
8974
9010
  });
8975
9011
  const processedLobbies = /* @__PURE__ */ new Set();
8976
- ctx.command("ggcevo/pk [user]", "发起玩家对战").alias("挑战").action(async (argv, user) => {
9012
+ ctx.guild().command("ggcevo/pk [user]", "发起玩家对战").alias("挑战").action(async (argv, user) => {
8977
9013
  try {
8978
9014
  const session = argv.session;
8979
9015
  const Curfew = fixedCurfewCheck(session, config);
8980
- if (!Curfew) return "⛔ 宵禁时段 (18:00-24:00) 禁止在群聊中使用咕咕之战指令。";
9016
+ if (!Curfew) return "⛔ 宵禁时段 (18:00-24:00) 禁止在群聊中使用咕咕之战指令。\n请添加C.O.R.E为好友使用私聊指令,好友验证信息为【咕咕之战】。";
8981
9017
  const [profile] = await ctx.database.get("sc2arcade_player", { userId: session.userId });
8982
9018
  if (!profile) return "🔒 需要先绑定游戏句柄。";
8983
9019
  const handle = `${profile.regionId}-S2-${profile.realmId}-${profile.profileId}`;
@@ -9360,7 +9396,7 @@ ${protectionList}
9360
9396
  });
9361
9397
  ctx.command("ggcevo/武器库 [category]").usage('输入"武器库"查看类型,或"武器库 类型"查看详细武器信息').action(async ({ session }, category) => {
9362
9398
  const Curfew = fixedCurfewCheck(session, config);
9363
- if (!Curfew) return "⛔ 宵禁时段 (18:00-24:00) 禁止在群聊中使用咕咕之战指令。";
9399
+ if (!Curfew) return "⛔ 宵禁时段 (18:00-24:00) 禁止在群聊中使用咕咕之战指令。\n请添加C.O.R.E为好友使用私聊指令,好友验证信息为【咕咕之战】。";
9364
9400
  const [profile] = await ctx.database.get("sc2arcade_player", { userId: session.userId });
9365
9401
  if (!profile) return "⚠️ 需要先绑定游戏句柄";
9366
9402
  const handle = `${profile.regionId}-S2-${profile.realmId}-${profile.profileId}`;
@@ -9505,7 +9541,7 @@ ${displayDiscounts.join("\n")}` : "",
9505
9541
  });
9506
9542
  ctx.command("ggcevo/爆破库 [type]").usage("输入“爆破库”查看分类,或“爆破库 类型”查看详细物品").action(async ({ session }, type) => {
9507
9543
  const Curfew = fixedCurfewCheck(session, config);
9508
- if (!Curfew) return "⛔ 宵禁时段 (18:00-24:00) 禁止在群聊中使用咕咕之战指令。";
9544
+ if (!Curfew) return "⛔ 宵禁时段 (18:00-24:00) 禁止在群聊中使用咕咕之战指令。\n请添加C.O.R.E为好友使用私聊指令,好友验证信息为【咕咕之战】。";
9509
9545
  const [profile] = await ctx.database.get("sc2arcade_player", { userId: session.userId });
9510
9546
  if (!profile) return "⚠️ 需要先绑定游戏句柄";
9511
9547
  const filteredItems = Object.values(SyndicatedItems).filter(
@@ -9554,7 +9590,7 @@ ${validTypes.join("、")}`;
9554
9590
  });
9555
9591
  ctx.command("ggcevo/购买 <item>").action(async ({ session }, item) => {
9556
9592
  const Curfew = fixedCurfewCheck(session, config);
9557
- if (!Curfew) return "⛔ 宵禁时段 (18:00-24:00) 禁止在群聊中使用咕咕之战指令。";
9593
+ if (!Curfew) return "⛔ 宵禁时段 (18:00-24:00) 禁止在群聊中使用咕咕之战指令。\n请添加C.O.R.E为好友使用私聊指令,好友验证信息为【咕咕之战】。";
9558
9594
  const [profile] = await ctx.database.get("sc2arcade_player", { userId: session.userId });
9559
9595
  if (!profile) return "🔒 需要先绑定游戏句柄。";
9560
9596
  const handle = `${profile.regionId}-S2-${profile.realmId}-${profile.profileId}`;
@@ -9742,7 +9778,7 @@ ${discountDetails.join("\n")}`;
9742
9778
  });
9743
9779
  ctx.command("ggcevo/武器仓库").action(async ({ session }) => {
9744
9780
  const Curfew = fixedCurfewCheck(session, config);
9745
- if (!Curfew) return "⛔ 宵禁时段 (18:00-24:00) 禁止在群聊中使用咕咕之战指令。";
9781
+ if (!Curfew) return "⛔ 宵禁时段 (18:00-24:00) 禁止在群聊中使用咕咕之战指令。\n请添加C.O.R.E为好友使用私聊指令,好友验证信息为【咕咕之战】。";
9746
9782
  const [profile] = await ctx.database.get("sc2arcade_player", { userId: session.userId });
9747
9783
  if (!profile) return "🔒 需要先绑定游戏句柄。";
9748
9784
  const handle = `${profile.regionId}-S2-${profile.realmId}-${profile.profileId}`;
@@ -9780,7 +9816,7 @@ ${discountDetails.join("\n")}`;
9780
9816
  });
9781
9817
  ctx.command("ggcevo/装备武器 <weapon>").alias("装备").action(async ({ session }, weapon) => {
9782
9818
  const Curfew = fixedCurfewCheck(session, config);
9783
- if (!Curfew) return "⛔ 宵禁时段 (18:00-24:00) 禁止在群聊中使用咕咕之战指令。";
9819
+ if (!Curfew) return "⛔ 宵禁时段 (18:00-24:00) 禁止在群聊中使用咕咕之战指令。\n请添加C.O.R.E为好友使用私聊指令,好友验证信息为【咕咕之战】。";
9784
9820
  const [profile] = await ctx.database.get("sc2arcade_player", { userId: session.userId });
9785
9821
  if (!profile) return "🔒 需要先绑定游戏句柄。";
9786
9822
  const handle = `${profile.regionId}-S2-${profile.realmId}-${profile.profileId}`;
@@ -9816,7 +9852,7 @@ ${discountDetails.join("\n")}`;
9816
9852
  });
9817
9853
  ctx.command("ggcevo/升级科技 <target>", "升级空间站科技").action(async ({ session }, target) => {
9818
9854
  const Curfew = fixedCurfewCheck(session, config);
9819
- if (!Curfew) return "⛔ 宵禁时段 (18:00-24:00) 禁止在群聊中使用咕咕之战指令。";
9855
+ if (!Curfew) return "⛔ 宵禁时段 (18:00-24:00) 禁止在群聊中使用咕咕之战指令。\n请添加C.O.R.E为好友使用私聊指令,好友验证信息为【咕咕之战】。";
9820
9856
  const [profile] = await ctx.database.get("sc2arcade_player", { userId: session.userId });
9821
9857
  if (!profile) return "🔒 需要先绑定游戏句柄。";
9822
9858
  const handle = `${profile.regionId}-S2-${profile.realmId}-${profile.profileId}`;
@@ -9835,7 +9871,7 @@ ${discountDetails.join("\n")}`;
9835
9871
  });
9836
9872
  ctx.command("ggcevo/升级武器 <target>", "升级武器").alias("升级").action(async ({ session }, target) => {
9837
9873
  const Curfew = fixedCurfewCheck(session, config);
9838
- if (!Curfew) return "⛔ 宵禁时段 (18:00-24:00) 禁止在群聊中使用咕咕之战指令。";
9874
+ if (!Curfew) return "⛔ 宵禁时段 (18:00-24:00) 禁止在群聊中使用咕咕之战指令。\n请添加C.O.R.E为好友使用私聊指令,好友验证信息为【咕咕之战】。";
9839
9875
  const [profile] = await ctx.database.get("sc2arcade_player", { userId: session.userId });
9840
9876
  if (!profile) return "🔒 需要先绑定游戏句柄。";
9841
9877
  const handle = `${profile.regionId}-S2-${profile.realmId}-${profile.profileId}`;
@@ -9853,7 +9889,7 @@ ${discountDetails.join("\n")}`;
9853
9889
  });
9854
9890
  ctx.command("ggcevo/改装武器 <weapon> [mod]", "安装武器模块").alias("改装").action(async ({ session }, weapon, mod) => {
9855
9891
  const Curfew = fixedCurfewCheck(session, config);
9856
- if (!Curfew) return "⛔ 宵禁时段 (18:00-24:00) 禁止在群聊中使用咕咕之战指令。";
9892
+ if (!Curfew) return "⛔ 宵禁时段 (18:00-24:00) 禁止在群聊中使用咕咕之战指令。\n请添加C.O.R.E为好友使用私聊指令,好友验证信息为【咕咕之战】。";
9857
9893
  const [profile] = await ctx.database.get("sc2arcade_player", { userId: session.userId });
9858
9894
  if (!profile) return "🔒 需要先绑定游戏句柄。";
9859
9895
  const handle = `${profile.regionId}-S2-${profile.realmId}-${profile.profileId}`;
@@ -10011,7 +10047,7 @@ ${discountDetails.join("\n")}`;
10011
10047
  });
10012
10048
  ctx.command("ggcevo/拆卸 <weapon> <mod>", "卸载武器模块,专属模块返还50%金币,通用模块返还80%金币").action(async ({ session }, weapon, mod) => {
10013
10049
  const Curfew = fixedCurfewCheck(session, config);
10014
- if (!Curfew) return "⛔ 宵禁时段 (18:00-24:00) 禁止在群聊中使用咕咕之战指令。";
10050
+ if (!Curfew) return "⛔ 宵禁时段 (18:00-24:00) 禁止在群聊中使用咕咕之战指令。\n请添加C.O.R.E为好友使用私聊指令,好友验证信息为【咕咕之战】。";
10015
10051
  const [profile] = await ctx.database.get("sc2arcade_player", { userId: session.userId });
10016
10052
  if (!profile) return "🔒 需要先绑定游戏句柄。";
10017
10053
  const handle = `${profile.regionId}-S2-${profile.realmId}-${profile.profileId}`;
@@ -10069,7 +10105,7 @@ ${discountDetails.join("\n")}`;
10069
10105
  let bossEventBroadcast = null;
10070
10106
  let cleanerRewardBroadcast = null;
10071
10107
  const Curfew = fixedCurfewCheck(session, config);
10072
- if (!Curfew) return "⛔ 宵禁时段 (18:00-24:00) 禁止在群聊中使用咕咕之战指令。";
10108
+ if (!Curfew) return "⛔ 宵禁时段 (18:00-24:00) 禁止在群聊中使用咕咕之战指令。\n请添加C.O.R.E为好友使用私聊指令,好友验证信息为【咕咕之战】。";
10073
10109
  const [profile] = await ctx.database.get("sc2arcade_player", { userId: session.userId });
10074
10110
  if (!profile) return "🔒 需要先绑定游戏句柄。";
10075
10111
  const handle = `${profile.regionId}-S2-${profile.realmId}-${profile.profileId}`;
@@ -10086,19 +10122,6 @@ ${discountDetails.join("\n")}`;
10086
10122
  return `当前没有找到名为 ${bossName} 的可攻击目标。
10087
10123
  请攻击当前存活的异形:${activeNames || "无"}。`;
10088
10124
  }
10089
- const unlimitedBossAttack = config.unlimitedBossAttack;
10090
- if (!unlimitedBossAttack) {
10091
- const lastAttack = await ctx.database.get("ggcevo_boss_damage", { handle });
10092
- if (lastAttack.length > 0) {
10093
- const lastDate = convertUTCtoChinaTime(new Date(lastAttack[0].lastattackDate));
10094
- const today = convertUTCtoChinaTime(/* @__PURE__ */ new Date());
10095
- if (isSameHalfDay(lastDate, today)) {
10096
- return "您在当前时段内已经攻击过了,请在12点或0点后再来挑战!";
10097
- }
10098
- }
10099
- }
10100
- const [equippedWeapon] = await ctx.database.get("ggcevo_weapons", { handle, equipped: true });
10101
- if (!equippedWeapon) return '请先输入"装备 武器名称"后再攻击。';
10102
10125
  const verification = await verifyFinalBlow(
10103
10126
  ctx,
10104
10127
  session,
@@ -10110,6 +10133,29 @@ ${discountDetails.join("\n")}`;
10110
10133
  return "攻击已取消";
10111
10134
  }
10112
10135
  const verifiedBoss = verification.updatedBoss || targetBoss;
10136
+ const unlimitedBossAttack = config.unlimitedBossAttack;
10137
+ if (!unlimitedBossAttack) {
10138
+ const lastAttacks = await ctx.database.get("ggcevo_boss_damage", { handle });
10139
+ if (lastAttacks.length > 0) {
10140
+ const lastAttack = lastAttacks[0];
10141
+ const lastDate = convertUTCtoChinaTime(new Date(lastAttack.lastattackDate));
10142
+ const today = convertUTCtoChinaTime(/* @__PURE__ */ new Date());
10143
+ if (verification.verificationPassed) {
10144
+ const lastQuarter = Math.floor(lastDate.getHours() / 6);
10145
+ const currentQuarter = Math.floor(today.getHours() / 6);
10146
+ const sameDay = lastDate.getDate() === today.getDate() && lastDate.getMonth() === today.getMonth() && lastDate.getFullYear() === today.getFullYear();
10147
+ if (sameDay && lastQuarter === currentQuarter) {
10148
+ return "您在当前时间段内已参与过斩杀攻击,请等待下一个6小时周期(0点、6点、12点或18点)再挑战!";
10149
+ }
10150
+ } else {
10151
+ if (isSameHalfDay(lastDate, today)) {
10152
+ return "您在当前时段内已经攻击过了,请在12点或0点后再来挑战!";
10153
+ }
10154
+ }
10155
+ }
10156
+ }
10157
+ const [equippedWeapon] = await ctx.database.get("ggcevo_weapons", { handle, equipped: true });
10158
+ if (!equippedWeapon) return '请先输入"装备 武器名称"后再攻击。';
10113
10159
  const weaponConfigEntry = Object.entries(weaponConfig).find(([_, c]) => c.id === equippedWeapon.weaponId);
10114
10160
  const [weaponName, weaponData] = weaponConfigEntry;
10115
10161
  if (!weaponData.isantiair && (verifiedBoss.groupId === 5 || verifiedBoss.groupId === 10)) {
@@ -10264,7 +10310,7 @@ ${discountDetails.join("\n")}`;
10264
10310
  const session = argv.session;
10265
10311
  const { options } = argv;
10266
10312
  const Curfew = fixedCurfewCheck(session, config);
10267
- if (!Curfew) return "⛔ 宵禁时段 (18:00-24:00) 禁止在群聊中使用咕咕之战指令。";
10313
+ if (!Curfew) return "⛔ 宵禁时段 (18:00-24:00) 禁止在群聊中使用咕咕之战指令。\n请添加C.O.R.E为好友使用私聊指令,好友验证信息为【咕咕之战】。";
10268
10314
  if (!name2) {
10269
10315
  name2 = "测试假人";
10270
10316
  }
@@ -10401,7 +10447,7 @@ ${testResult.passiveMessages.map((m) => `▸ ${m}`).join("\n")}`
10401
10447
  });
10402
10448
  ctx.command("ggcevo/异形信息", "查看当前主宰信息").alias("yx信息").action(async ({ session }) => {
10403
10449
  const Curfew = fixedCurfewCheck(session, config);
10404
- if (!Curfew) return "⛔ 宵禁时段 (18:00-24:00) 禁止在群聊中使用咕咕之战指令。";
10450
+ if (!Curfew) return "⛔ 宵禁时段 (18:00-24:00) 禁止在群聊中使用咕咕之战指令。\n请添加C.O.R.E为好友使用私聊指令,好友验证信息为【咕咕之战】。";
10405
10451
  const activeBosses = await ctx.database.get("ggcevo_boss", { isActive: true });
10406
10452
  if (!activeBosses.length) return "当前没有存活的异形,请等待12点或0点刷新。";
10407
10453
  const mainBoss = activeBosses.find((b) => b.type === "主宰");
@@ -10594,7 +10640,7 @@ ${testResult.passiveMessages.map((m) => `▸ ${m}`).join("\n")}`
10594
10640
  ctx.command("ggcevo/祈愿").action(async (argv) => {
10595
10641
  const session = argv.session;
10596
10642
  const Curfew = fixedCurfewCheck(session, config);
10597
- if (!Curfew) return "⛔ 宵禁时段 (18:00-24:00) 禁止在群聊中使用咕咕之战指令。";
10643
+ if (!Curfew) return "⛔ 宵禁时段 (18:00-24:00) 禁止在群聊中使用咕咕之战指令。\n请添加C.O.R.E为好友使用私聊指令,好友验证信息为【咕咕之战】。";
10598
10644
  const [profile] = await ctx.database.get("sc2arcade_player", { userId: session.userId });
10599
10645
  if (!profile) return "🔒 需要先绑定游戏句柄。";
10600
10646
  const { regionId, realmId, profileId } = profile;
@@ -10673,7 +10719,7 @@ ${testResult.passiveMessages.map((m) => `▸ ${m}`).join("\n")}`
10673
10719
  });
10674
10720
  ctx.command("ggcevo/加入 <faction>", "加入阵营").alias("加入阵营").action(async ({ session }, faction) => {
10675
10721
  const Curfew = fixedCurfewCheck(session, config);
10676
- if (!Curfew) return "⛔ 宵禁时段 (18:00-24:00) 禁止在群聊中使用咕咕之战指令。";
10722
+ if (!Curfew) return "⛔ 宵禁时段 (18:00-24:00) 禁止在群聊中使用咕咕之战指令。\n请添加C.O.R.E为好友使用私聊指令,好友验证信息为【咕咕之战】。";
10677
10723
  const [profile] = await ctx.database.get("sc2arcade_player", { userId: session.userId });
10678
10724
  if (!profile) return "🔒 需要先绑定游戏句柄。";
10679
10725
  const { regionId, realmId, profileId } = profile;
@@ -10739,7 +10785,7 @@ ${testResult.passiveMessages.map((m) => `▸ ${m}`).join("\n")}`
10739
10785
  });
10740
10786
  ctx.command("ggcevo/退出", "退出当前阵营").alias("退出阵营").action(async ({ session }) => {
10741
10787
  const Curfew = fixedCurfewCheck(session, config);
10742
- if (!Curfew) return "⛔ 宵禁时段 (18:00-24:00) 禁止在群聊中使用咕咕之战指令。";
10788
+ if (!Curfew) return "⛔ 宵禁时段 (18:00-24:00) 禁止在群聊中使用咕咕之战指令。\n请添加C.O.R.E为好友使用私聊指令,好友验证信息为【咕咕之战】。";
10743
10789
  const [profile] = await ctx.database.get("sc2arcade_player", { userId: session.userId });
10744
10790
  if (!profile) return "🔒 需要先绑定游戏句柄。";
10745
10791
  const { regionId, realmId, profileId } = profile;
@@ -10791,7 +10837,7 @@ ${testResult.passiveMessages.map((m) => `▸ ${m}`).join("\n")}`
10791
10837
  });
10792
10838
  ctx.command("ggcevo/转职 [profession]", "转职系统").action(async ({ session }, profession) => {
10793
10839
  const Curfew = fixedCurfewCheck(session, config);
10794
- if (!Curfew) return "⛔ 宵禁时段 (18:00-24:00) 禁止在群聊中使用咕咕之战指令。";
10840
+ if (!Curfew) return "⛔ 宵禁时段 (18:00-24:00) 禁止在群聊中使用咕咕之战指令。\n请添加C.O.R.E为好友使用私聊指令,好友验证信息为【咕咕之战】。";
10795
10841
  const [profile] = await ctx.database.get("sc2arcade_player", { userId: session.userId });
10796
10842
  if (!profile) return "🔒 需要先绑定游戏句柄。";
10797
10843
  const handle = `${profile.regionId}-S2-${profile.realmId}-${profile.profileId}`;
@@ -10875,7 +10921,7 @@ ${testResult.passiveMessages.map((m) => `▸ ${m}`).join("\n")}`
10875
10921
  ctx.command("ggcevo/职业信息", "查看当前阵营与职业状态").action(async ({ session }) => {
10876
10922
  try {
10877
10923
  const Curfew = fixedCurfewCheck(session, config);
10878
- if (!Curfew) return "⛔ 宵禁时段 (18:00-24:00) 禁止在群聊中使用咕咕之战指令。";
10924
+ if (!Curfew) return "⛔ 宵禁时段 (18:00-24:00) 禁止在群聊中使用咕咕之战指令。\n请添加C.O.R.E为好友使用私聊指令,好友验证信息为【咕咕之战】。";
10879
10925
  const [profile] = await ctx.database.get("sc2arcade_player", {
10880
10926
  userId: session.userId
10881
10927
  });
@@ -10945,7 +10991,7 @@ ${testResult.passiveMessages.map((m) => `▸ ${m}`).join("\n")}`
10945
10991
  });
10946
10992
  ctx.command("ggcevo/黑市 [category]", "辛迪加海盗专属黑市").usage('输入"黑市"查看分类,或"黑市 分类名称"查看详细').action(async ({ session }, category) => {
10947
10993
  const Curfew = fixedCurfewCheck(session, config);
10948
- if (!Curfew) return "⛔ 宵禁时段 (18:00-24:00) 禁止在群聊中使用咕咕之战指令。";
10994
+ if (!Curfew) return "⛔ 宵禁时段 (18:00-24:00) 禁止在群聊中使用咕咕之战指令。\n请添加C.O.R.E为好友使用私聊指令,好友验证信息为【咕咕之战】。";
10949
10995
  const [profile] = await ctx.database.get("sc2arcade_player", { userId: session.userId });
10950
10996
  if (!profile) return "🔒 需要先绑定游戏句柄。";
10951
10997
  const handle = `${profile.regionId}-S2-${profile.realmId}-${profile.profileId}`;
@@ -11077,7 +11123,7 @@ ${discountDetails.join("\n")}` : "",
11077
11123
  });
11078
11124
  ctx.command("ggcevo/订购 <item>").action(async ({ session }, item) => {
11079
11125
  const Curfew = fixedCurfewCheck(session, config);
11080
- if (!Curfew) return "⛔ 宵禁时段 (18:00-24:00) 禁止在群聊中使用咕咕之战指令。";
11126
+ if (!Curfew) return "⛔ 宵禁时段 (18:00-24:00) 禁止在群聊中使用咕咕之战指令。\n请添加C.O.R.E为好友使用私聊指令,好友验证信息为【咕咕之战】。";
11081
11127
  const [profile] = await ctx.database.get("sc2arcade_player", { userId: session.userId });
11082
11128
  if (!profile) return "🔒 需要先绑定游戏句柄。";
11083
11129
  const handle = `${profile.regionId}-S2-${profile.realmId}-${profile.profileId}`;
@@ -11203,7 +11249,7 @@ ${discountReason}` : "",
11203
11249
  ctx.command("ggcevo/仓库").action(async (argv) => {
11204
11250
  const session = argv.session;
11205
11251
  const Curfew = fixedCurfewCheck(session, config);
11206
- if (!Curfew) return "⛔ 宵禁时段 (18:00-24:00) 禁止在群聊中使用咕咕之战指令。";
11252
+ if (!Curfew) return "⛔ 宵禁时段 (18:00-24:00) 禁止在群聊中使用咕咕之战指令。\n请添加C.O.R.E为好友使用私聊指令,好友验证信息为【咕咕之战】。";
11207
11253
  const [profile] = await ctx.database.get("sc2arcade_player", { userId: session.userId });
11208
11254
  if (!profile) return "🔒 需要先绑定游戏句柄。";
11209
11255
  const handle = `${profile.regionId}-S2-${profile.realmId}-${profile.profileId}`;
@@ -11260,7 +11306,7 @@ ${discountReason}` : "",
11260
11306
  let bossEventBroadcast = null;
11261
11307
  let cleanerRewardBroadcast = null;
11262
11308
  const Curfew = fixedCurfewCheck(session, config);
11263
- if (!Curfew) return "⛔ 宵禁时段 (18:00-24:00) 禁止在群聊中使用咕咕之战指令。";
11309
+ if (!Curfew) return "⛔ 宵禁时段 (18:00-24:00) 禁止在群聊中使用咕咕之战指令。\n请添加C.O.R.E为好友使用私聊指令,好友验证信息为【咕咕之战】。";
11264
11310
  const [profile] = await ctx.database.get("sc2arcade_player", { userId: session.userId });
11265
11311
  if (!profile) return "🔒 需要先绑定游戏句柄。";
11266
11312
  const handle = `${profile.regionId}-S2-${profile.realmId}-${profile.profileId}`;
@@ -11316,7 +11362,7 @@ ${discountReason}` : "",
11316
11362
  });
11317
11363
  ctx.command("ggcevo/科技 [techName]", "查看空间站科技信息").usage("输入“科技”查看列表,或“科技 科技名称”查看详细信息").action(async ({ session }, techName) => {
11318
11364
  const Curfew = fixedCurfewCheck(session, config);
11319
- if (!Curfew) return "⛔ 宵禁时段 (18:00-24:00) 禁止在群聊中使用咕咕之战指令。";
11365
+ if (!Curfew) return "⛔ 宵禁时段 (18:00-24:00) 禁止在群聊中使用咕咕之战指令。\n请添加C.O.R.E为好友使用私聊指令,好友验证信息为【咕咕之战】。";
11320
11366
  const [profile] = await ctx.database.get("sc2arcade_player", { userId: session.userId });
11321
11367
  if (!profile) return "🔒 需要先绑定游戏句柄。";
11322
11368
  const handle = `${profile.regionId}-S2-${profile.realmId}-${profile.profileId}`;
@@ -11379,7 +11425,7 @@ ${Spacestationtechnology.map((t) => t.techname).join("、")}`;
11379
11425
  });
11380
11426
  ctx.command("ggcevo/挖矿").action(async ({ session }) => {
11381
11427
  const Curfew = fixedCurfewCheck(session, config);
11382
- if (!Curfew) return "⛔ 宵禁时段 (18:00-24:00) 禁止在群聊中使用咕咕之战指令。";
11428
+ if (!Curfew) return "⛔ 宵禁时段 (18:00-24:00) 禁止在群聊中使用咕咕之战指令。\n请添加C.O.R.E为好友使用私聊指令,好友验证信息为【咕咕之战】。";
11383
11429
  const [profile] = await ctx.database.get("sc2arcade_player", { userId: session.userId });
11384
11430
  if (!profile) return "🔒 需要先绑定游戏句柄。";
11385
11431
  const handle = `${profile.regionId}-S2-${profile.realmId}-${profile.profileId}`;
@@ -11524,7 +11570,7 @@ ${Spacestationtechnology.map((t) => t.techname).join("、")}`;
11524
11570
  });
11525
11571
  ctx.command("ggcevo/任务 [name]").usage('输入"任务"查看所有任务列表,或"任务 任务名称"查看详细任务信息').action(async ({ session }, name2) => {
11526
11572
  const Curfew = fixedCurfewCheck(session, config);
11527
- if (!Curfew) return "⛔ 宵禁时段 (18:00-24:00) 禁止在群聊中使用咕咕之战指令。";
11573
+ if (!Curfew) return "⛔ 宵禁时段 (18:00-24:00) 禁止在群聊中使用咕咕之战指令。\n请添加C.O.R.E为好友使用私聊指令,好友验证信息为【咕咕之战】。";
11528
11574
  const [profile] = await ctx.database.get("sc2arcade_player", { userId: session.userId });
11529
11575
  if (!profile) return "⚠️ 需要先绑定游戏句柄";
11530
11576
  const handle = `${profile.regionId}-S2-${profile.realmId}-${profile.profileId}`;
@@ -11580,7 +11626,7 @@ ${Spacestationtechnology.map((t) => t.techname).join("、")}`;
11580
11626
  ctx.command("ggcevo/完成任务 <name:text>", "完成指定任务领取奖励").usage('输入"完成任务 任务名称"来完成任务并领取奖励').action(async ({ session }, name2) => {
11581
11627
  try {
11582
11628
  const Curfew = fixedCurfewCheck(session, config);
11583
- if (!Curfew) return "⛔ 宵禁时段 (18:00-24:00) 禁止在群聊中使用咕咕之战指令。";
11629
+ if (!Curfew) return "⛔ 宵禁时段 (18:00-24:00) 禁止在群聊中使用咕咕之战指令。\n请添加C.O.R.E为好友使用私聊指令,好友验证信息为【咕咕之战】。";
11584
11630
  const [profile] = await ctx.database.get("sc2arcade_player", { userId: session.userId });
11585
11631
  if (!profile) return "⚠️ 需要先绑定游戏句柄";
11586
11632
  const handle = `${profile.regionId}-S2-${profile.realmId}-${profile.profileId}`;
@@ -11657,7 +11703,7 @@ ${Spacestationtechnology.map((t) => t.techname).join("、")}`;
11657
11703
  ctx.command("ggcevo/购买保护卡", "花费600金币购买一周PK保护卡").alias("购买pk保护卡").action(async ({ session }) => {
11658
11704
  try {
11659
11705
  const Curfew = fixedCurfewCheck(session, config);
11660
- if (!Curfew) return "⛔ 宵禁时段 (18:00-24:00) 禁止在群聊中使用咕咕之战指令。";
11706
+ if (!Curfew) return "⛔ 宵禁时段 (18:00-24:00) 禁止在群聊中使用咕咕之战指令。\n请添加C.O.R.E为好友使用私聊指令,好友验证信息为【咕咕之战】。";
11661
11707
  const userId = session.userId;
11662
11708
  const [profile] = await ctx.database.get("sc2arcade_player", { userId });
11663
11709
  if (!profile) return "🔒 请先绑定游戏句柄。";
@@ -11720,7 +11766,7 @@ ${Spacestationtechnology.map((t) => t.techname).join("、")}`;
11720
11766
  ctx.command("ggcevo/开启军械库防爆门").alias("打开军械库防爆门").action(async (argv) => {
11721
11767
  const session = argv.session;
11722
11768
  const Curfew = fixedCurfewCheck(session, config);
11723
- if (!Curfew) return "⛔ 宵禁时段 (18:00-24:00) 禁止在群聊中使用咕咕之战指令。";
11769
+ if (!Curfew) return "⛔ 宵禁时段 (18:00-24:00) 禁止在群聊中使用咕咕之战指令。\n请添加C.O.R.E为好友使用私聊指令,好友验证信息为【咕咕之战】。";
11724
11770
  const [profile] = await ctx.database.get("sc2arcade_player", { userId: session.userId });
11725
11771
  if (!profile) return "🔒 请先绑定游戏句柄。";
11726
11772
  const { regionId, realmId, profileId } = profile;
@@ -11772,7 +11818,7 @@ ${Spacestationtechnology.map((t) => t.techname).join("、")}`;
11772
11818
  });
11773
11819
  ctx.command("ggcevo/技能 [异形名称]").usage('查询异形技能,输入"技能"查看所有异形,输入"技能 异形名称"查询详细技能').action(async ({ session }, unitName) => {
11774
11820
  const Curfew = fixedCurfewCheck(session, config);
11775
- if (!Curfew) return "⛔ 宵禁时段 (18:00-24:00) 禁止在群聊中使用咕咕之战指令。";
11821
+ if (!Curfew) return "⛔ 宵禁时段 (18:00-24:00) 禁止在群聊中使用咕咕之战指令。\n请添加C.O.R.E为好友使用私聊指令,好友验证信息为【咕咕之战】。";
11776
11822
  const allUnits = /* @__PURE__ */ new Set();
11777
11823
  bossPool.forEach((boss) => {
11778
11824
  allUnits.add(boss.main.name);
@@ -11864,7 +11910,7 @@ ${Spacestationtechnology.map((t) => t.techname).join("、")}`;
11864
11910
  ctx.command("ggcevo/咕咕更新").action(async ({ session }) => {
11865
11911
  try {
11866
11912
  const Curfew = fixedCurfewCheck(session, config);
11867
- if (!Curfew) return "⛔ 宵禁时段 (18:00-24:00) 禁止在群聊中使用咕咕之战指令。";
11913
+ if (!Curfew) return "⛔ 宵禁时段 (18:00-24:00) 禁止在群聊中使用咕咕之战指令。\n请添加C.O.R.E为好友使用私聊指令,好友验证信息为【咕咕之战】。";
11868
11914
  const latestUpdates = [...ggcevoUpdates].sort((a, b) => compareVersions(a.version, b.version)).slice(0, 3);
11869
11915
  if (latestUpdates.length === 0) {
11870
11916
  return "🛑 暂无更新记录";
@@ -11890,7 +11936,7 @@ ${Spacestationtechnology.map((t) => t.techname).join("、")}`;
11890
11936
  });
11891
11937
  ctx.command("ggcevo/探索 [galaxyName]").action(async ({ session }, galaxyName) => {
11892
11938
  const Curfew = fixedCurfewCheck(session, config);
11893
- if (!Curfew) return "⛔ 宵禁时段 (18:00-24:00) 禁止在群聊中使用咕咕之战指令。";
11939
+ if (!Curfew) return "⛔ 宵禁时段 (18:00-24:00) 禁止在群聊中使用咕咕之战指令。\n请添加C.O.R.E为好友使用私聊指令,好友验证信息为【咕咕之战】。";
11894
11940
  const possibleItems = [
11895
11941
  { id: 2, name: "闪光弹", type: "手榴弹", chance: 0.1 },
11896
11942
  { id: 4, name: "脉冲手雷", type: "手榴弹", chance: 0.1 },
@@ -12256,7 +12302,7 @@ ${Spacestationtechnology.map((t) => t.techname).join("、")}`;
12256
12302
  }
12257
12303
  ctx.command("ggcevo/飞船信息").action(async ({ session }) => {
12258
12304
  const Curfew = fixedCurfewCheck(session, config);
12259
- if (!Curfew) return "⛔ 宵禁时段 (18:00-24:00) 禁止在群聊中使用咕咕之战指令。";
12305
+ if (!Curfew) return "⛔ 宵禁时段 (18:00-24:00) 禁止在群聊中使用咕咕之战指令。\n请添加C.O.R.E为好友使用私聊指令,好友验证信息为【咕咕之战】。";
12260
12306
  const [profile] = await ctx.database.get("sc2arcade_player", { userId: session.userId });
12261
12307
  if (!profile) return "🔒 需要先绑定游戏句柄。";
12262
12308
  const handle = `${profile.regionId}-S2-${profile.realmId}-${profile.profileId}`;
@@ -12284,7 +12330,7 @@ ${Spacestationtechnology.map((t) => t.techname).join("、")}`;
12284
12330
  });
12285
12331
  ctx.command("ggcevo/购买飞船 [shipName]").alias("飞船").action(async ({ session }, shipName) => {
12286
12332
  const Curfew = fixedCurfewCheck(session, config);
12287
- if (!Curfew) return "⛔ 宵禁时段 (18:00-24:00) 禁止在群聊中使用咕咕之战指令。";
12333
+ if (!Curfew) return "⛔ 宵禁时段 (18:00-24:00) 禁止在群聊中使用咕咕之战指令。\n请添加C.O.R.E为好友使用私聊指令,好友验证信息为【咕咕之战】。";
12288
12334
  const [profile] = await ctx.database.get("sc2arcade_player", { userId: session.userId });
12289
12335
  if (!profile) return "🔒 需要先绑定游戏句柄。";
12290
12336
  const handle = `${profile.regionId}-S2-${profile.realmId}-${profile.profileId}`;
@@ -12357,7 +12403,7 @@ ${Spacestationtechnology.map((t) => t.techname).join("、")}`;
12357
12403
  });
12358
12404
  ctx.command("ggcevo/升级物品 [itemName]", "升级辛迪加海盗物品").usage('输入"升级物品"查看可升级列表,或"升级物品 物品名称"进行升级').action(async ({ session }, itemName) => {
12359
12405
  const Curfew = fixedCurfewCheck(session, config);
12360
- if (!Curfew) return "⛔ 宵禁时段 (18:00-24:00) 禁止在群聊中使用咕咕之战指令。";
12406
+ if (!Curfew) return "⛔ 宵禁时段 (18:00-24:00) 禁止在群聊中使用咕咕之战指令。\n请添加C.O.R.E为好友使用私聊指令,好友验证信息为【咕咕之战】。";
12361
12407
  const [profile] = await ctx.database.get("sc2arcade_player", { userId: session.userId });
12362
12408
  if (!profile) return "🔒 需要先绑定游戏句柄。";
12363
12409
  const handle = `${profile.regionId}-S2-${profile.realmId}-${profile.profileId}`;
@@ -12495,7 +12541,7 @@ ${Spacestationtechnology.map((t) => t.techname).join("、")}`;
12495
12541
  });
12496
12542
  ctx.command("ggcevo/竞猜 [itemId] [amount] [guess]", "参与竞猜游戏").usage('输入"竞猜"查看可竞猜项目,"竞猜 项目ID 金额 内容"进行竞猜').example("竞猜 1 500 寒冰王蛇").action(async ({ session }, itemId, amount, guess) => {
12497
12543
  const Curfew = fixedCurfewCheck(session, config);
12498
- if (!Curfew) return "⛔ 宵禁时段 (18:00-24:00) 禁止在群聊中使用咕咕之战指令。";
12544
+ if (!Curfew) return "⛔ 宵禁时段 (18:00-24:00) 禁止在群聊中使用咕咕之战指令。\n请添加C.O.R.E为好友使用私聊指令,好友验证信息为【咕咕之战】。";
12499
12545
  const [profile] = await ctx.database.get("sc2arcade_player", { userId: session.userId });
12500
12546
  if (!profile) return "🔒 需要先绑定游戏句柄";
12501
12547
  const { regionId, realmId, profileId } = profile;
@@ -12593,7 +12639,7 @@ ${validBossNames.join("、")}`;
12593
12639
  });
12594
12640
  ctx.command("ggcevo/兑换资源 [name] [amount]").usage('输入"兑换资源"查看可兑换资源列表\n输入"兑换资源 物品名称 [数量]"进行兑换').action(async ({ session }, name2, amount) => {
12595
12641
  const Curfew = fixedCurfewCheck(session, config);
12596
- if (!Curfew) return "⛔ 宵禁时段 (18:00-24:00) 禁止在群聊中使用咕咕之战指令。";
12642
+ if (!Curfew) return "⛔ 宵禁时段 (18:00-24:00) 禁止在群聊中使用咕咕之战指令。\n请添加C.O.R.E为好友使用私聊指令,好友验证信息为【咕咕之战】。";
12597
12643
  const [profile] = await ctx.database.get("sc2arcade_player", { userId: session.userId });
12598
12644
  if (!profile) return "🔒 需要先绑定游戏句柄";
12599
12645
  const handle = `${profile.regionId}-S2-${profile.realmId}-${profile.profileId}`;
@@ -12611,7 +12657,7 @@ ${validBossNames.join("、")}`;
12611
12657
  });
12612
12658
  return [
12613
12659
  "💰 资源兑换商店 💰",
12614
- '使用 "兑换资源 物品名称 数量" 进行兑换',
12660
+ '使用 "兑换资源 物品名称 兑换次数" 进行兑换',
12615
12661
  `您当前持有: ${coupon?.quantity || 0}张资源兑换券`,
12616
12662
  "====================",
12617
12663
  ...Object.entries(resourceItems).map(([itemName, config2]) => `▸ ${itemName}:1张券兑换${config2.valuePerCoupon}${itemName === "金币" ? "金币" : "红晶"}`),
package/lib/items.d.ts CHANGED
@@ -212,36 +212,42 @@ export declare const itemConfig: {
212
212
  quality: string;
213
213
  type: string;
214
214
  cost: number;
215
+ quantity: number;
215
216
  isLimited: boolean;
216
217
  };
217
218
  劳工: {
218
219
  quality: string;
219
220
  type: string;
220
221
  cost: number;
222
+ quantity: number;
221
223
  isLimited: boolean;
222
224
  };
223
225
  老兵: {
224
226
  quality: string;
225
227
  type: string;
226
228
  cost: number;
229
+ quantity: number;
227
230
  isLimited: boolean;
228
231
  };
229
232
  合成人: {
230
233
  quality: string;
231
234
  type: string;
232
235
  cost: number;
236
+ quantity: number;
233
237
  isLimited: boolean;
234
238
  };
235
239
  阿斯塔特: {
236
240
  quality: string;
237
241
  type: string;
238
242
  cost: number;
243
+ quantity: number;
239
244
  isLimited: boolean;
240
245
  };
241
246
  皇家指挥官: {
242
247
  quality: string;
243
248
  type: string;
244
249
  cost: number;
250
+ quantity: number;
245
251
  isLimited: boolean;
246
252
  };
247
253
  个性开场白: {
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.36",
4
+ "version": "1.6.38",
5
5
  "main": "lib/index.js",
6
6
  "typings": "lib/index.d.ts",
7
7
  "files": [