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.
- package/lib/index.js +41 -18
- 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 = "
|
|
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
|
|
8686
|
-
|
|
8687
|
-
|
|
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
|
|
8696
|
-
if (!
|
|
8697
|
-
const requireMsg = petItems.has(name2) ? `需要1个${configname.quality}
|
|
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
|
-
您当前持有:${
|
|
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:
|
|
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", {
|