koishi-plugin-ggcevo-game 1.4.49 → 1.4.50
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 +108 -98
- package/lib/utils.d.ts +6 -0
- package/package.json +1 -1
package/lib/index.js
CHANGED
|
@@ -251,7 +251,7 @@ var weaponConfig = {
|
|
|
251
251
|
description: "一件传奇武器",
|
|
252
252
|
specialeffect: "",
|
|
253
253
|
price: 6400,
|
|
254
|
-
redCrystalCost:
|
|
254
|
+
redCrystalCost: 200,
|
|
255
255
|
isantiair: true,
|
|
256
256
|
tagEffects: {
|
|
257
257
|
"生物": 2,
|
|
@@ -267,7 +267,7 @@ var weaponConfig = {
|
|
|
267
267
|
description: "一件传奇武器",
|
|
268
268
|
specialeffect: "攻击暴击率+80%",
|
|
269
269
|
price: 6400,
|
|
270
|
-
redCrystalCost:
|
|
270
|
+
redCrystalCost: 200,
|
|
271
271
|
isantiair: true,
|
|
272
272
|
tagEffects: {
|
|
273
273
|
"重甲": 1.5
|
|
@@ -281,7 +281,7 @@ var weaponConfig = {
|
|
|
281
281
|
description: "这是传说中的武器",
|
|
282
282
|
specialeffect: "",
|
|
283
283
|
price: 6400,
|
|
284
|
-
redCrystalCost:
|
|
284
|
+
redCrystalCost: 200,
|
|
285
285
|
isantiair: false,
|
|
286
286
|
tagEffects: {
|
|
287
287
|
"轻甲": 1.5,
|
|
@@ -296,7 +296,7 @@ var weaponConfig = {
|
|
|
296
296
|
description: "一件传奇武器",
|
|
297
297
|
specialeffect: "",
|
|
298
298
|
price: 6400,
|
|
299
|
-
redCrystalCost:
|
|
299
|
+
redCrystalCost: 200,
|
|
300
300
|
isantiair: true,
|
|
301
301
|
tagEffects: {
|
|
302
302
|
"重甲": 1.2
|
|
@@ -310,7 +310,7 @@ var weaponConfig = {
|
|
|
310
310
|
description: "优雅而独特的武器",
|
|
311
311
|
specialeffect: "无视目标100%的减伤效果",
|
|
312
312
|
price: 6400,
|
|
313
|
-
redCrystalCost:
|
|
313
|
+
redCrystalCost: 200,
|
|
314
314
|
isantiair: false,
|
|
315
315
|
tagEffects: {}
|
|
316
316
|
},
|
|
@@ -322,7 +322,7 @@ var weaponConfig = {
|
|
|
322
322
|
description: "一件传奇武器",
|
|
323
323
|
specialeffect: "攻击消耗目标500点能量",
|
|
324
324
|
price: 6400,
|
|
325
|
-
redCrystalCost:
|
|
325
|
+
redCrystalCost: 200,
|
|
326
326
|
isantiair: true,
|
|
327
327
|
tagEffects: {
|
|
328
328
|
"机械": 1.5
|
|
@@ -336,7 +336,7 @@ var weaponConfig = {
|
|
|
336
336
|
description: "一件传奇武器",
|
|
337
337
|
specialeffect: "攻击无视目标80%的减伤效果",
|
|
338
338
|
price: 6400,
|
|
339
|
-
redCrystalCost:
|
|
339
|
+
redCrystalCost: 200,
|
|
340
340
|
isantiair: true,
|
|
341
341
|
tagEffects: {
|
|
342
342
|
"重甲": 2
|
|
@@ -350,7 +350,7 @@ var weaponConfig = {
|
|
|
350
350
|
description: "一件传奇武器",
|
|
351
351
|
specialeffect: "",
|
|
352
352
|
price: 6400,
|
|
353
|
-
redCrystalCost:
|
|
353
|
+
redCrystalCost: 200,
|
|
354
354
|
isantiair: true,
|
|
355
355
|
tagEffects: {
|
|
356
356
|
"建筑": 2,
|
|
@@ -604,7 +604,7 @@ var spaceStationCrewConfig = [
|
|
|
604
604
|
var syndicatePirateConfig = [
|
|
605
605
|
{
|
|
606
606
|
professionName: "能量武器专家",
|
|
607
|
-
effect: "能量武器攻击伤害+20%;
|
|
607
|
+
effect: "能量武器攻击伤害+20%; 购买MK-4激光步枪(传奇)享有50%的折扣",
|
|
608
608
|
requirements: "至少拥有一把3级及以上等级的能量武器",
|
|
609
609
|
Jobtransfer: true,
|
|
610
610
|
costredcrystal: 30
|
|
@@ -618,21 +618,21 @@ var syndicatePirateConfig = [
|
|
|
618
618
|
},
|
|
619
619
|
{
|
|
620
620
|
professionName: "枪手",
|
|
621
|
-
effect: "武器等级上限为7级; 升级武器享有10%的折扣;
|
|
621
|
+
effect: "武器等级上限为7级; 升级武器享有10%的折扣; 购买M4AE脉冲步枪(传奇)享有50%的折扣",
|
|
622
622
|
requirements: "至少拥有一把6级及以上等级的武器",
|
|
623
623
|
Jobtransfer: true,
|
|
624
624
|
costredcrystal: 35
|
|
625
625
|
},
|
|
626
626
|
{
|
|
627
627
|
professionName: "猩红杀手",
|
|
628
|
-
effect: "“侦察步枪”攻击伤害+15%; 使用“侦察步枪”攻击时无视目标20%的减伤效果;
|
|
628
|
+
effect: "“侦察步枪”攻击伤害+15%; 使用“侦察步枪”攻击时无视目标20%的减伤效果; 购买DSR-55反器材步枪(传奇)享有50%的折扣",
|
|
629
629
|
requirements: "“侦察步枪”武器等级≥3级",
|
|
630
630
|
Jobtransfer: true,
|
|
631
631
|
costredcrystal: 30
|
|
632
632
|
},
|
|
633
633
|
{
|
|
634
634
|
professionName: "纵火狂",
|
|
635
|
-
effect: "热能武器攻击伤害+20%;
|
|
635
|
+
effect: "热能武器攻击伤害+20%; 购买龙息霰弹枪(传奇)享有50%的折扣",
|
|
636
636
|
requirements: "至少拥有一把3级及以上等级的热能武器",
|
|
637
637
|
Jobtransfer: true,
|
|
638
638
|
costredcrystal: 30
|
|
@@ -4078,6 +4078,12 @@ function formatTime(date) {
|
|
|
4078
4078
|
});
|
|
4079
4079
|
}
|
|
4080
4080
|
__name(formatTime, "formatTime");
|
|
4081
|
+
var legendaryDiscounts = {
|
|
4082
|
+
"MK-4激光步枪": ["能量武器专家"],
|
|
4083
|
+
"DSR-55反器材步枪": ["猩红杀手"],
|
|
4084
|
+
"龙息霰弹枪": ["纵火狂"],
|
|
4085
|
+
"M4AE脉冲步枪": ["枪手"]
|
|
4086
|
+
};
|
|
4081
4087
|
|
|
4082
4088
|
// src/boss/damagecalculation.ts
|
|
4083
4089
|
async function calculateTotalDamage(ctx, session, config, equippedWeapon, targetBoss) {
|
|
@@ -7572,8 +7578,8 @@ ${validTypes.join("、")}`;
|
|
|
7572
7578
|
const layerDisplay = layerInfo.length > 0 ? `📊 层数状态: ${layerInfo.join(" | ")}` : "";
|
|
7573
7579
|
return [
|
|
7574
7580
|
`🎯 使用武器 ${weaponName} 攻击 ${dummyBoss.name}`,
|
|
7575
|
-
`❤️ 假人血量:${dummyBoss.HP}`,
|
|
7576
|
-
`⚡ 假人能量:${dummyBoss.energy}`,
|
|
7581
|
+
`❤️ 假人血量:${dummyBoss.HP}/10000`,
|
|
7582
|
+
`⚡ 假人能量:${dummyBoss.energy}/1000`,
|
|
7577
7583
|
options.tags?.length && `🏷️ 模拟标签:${tags.join(", ")}`,
|
|
7578
7584
|
options.passives?.length && `✨ 模拟被动:${passives.join(", ")}`,
|
|
7579
7585
|
layerDisplay,
|
|
@@ -7591,9 +7597,8 @@ ${testResult.ignoreMessage.map((m) => `▸ ${m}`).join("\n")}`
|
|
|
7591
7597
|
${testResult.passiveMessages.map((m) => `▸ ${m}`).join("\n")}`
|
|
7592
7598
|
] : [],
|
|
7593
7599
|
`📊 理论伤害值:${testResult.initialDamage}${testResult.hasCrit ? "(✨ 暴击)" : ""}`,
|
|
7594
|
-
"💡
|
|
7595
|
-
"💡 层数选项:技能层数(-s)、辐射层数(-r)、寒冷层数(-c)、状态层数(-a)"
|
|
7596
|
-
`ℹ️ 测试假人最大血量:10000 | 最大能量:1000 | 最大层数:100`
|
|
7600
|
+
"💡 参数添加:可添加标签(-t)、被动(-p)、血量(-l)、能量(-e)",
|
|
7601
|
+
"💡 层数选项:技能层数(-s)、辐射层数(-r)、寒冷层数(-c)、状态层数(-a)"
|
|
7597
7602
|
].filter((line) => line).join("\n");
|
|
7598
7603
|
} finally {
|
|
7599
7604
|
Object.keys("测试假人").forEach((key) => delete battleStatsMap[key]);
|
|
@@ -7910,7 +7915,7 @@ ${testResult.passiveMessages.map((m) => `▸ ${m}`).join("\n")}`
|
|
|
7910
7915
|
return `您输入的是错误的阵营名称,请选择有效阵营:${validFactions.join(" / ")}`;
|
|
7911
7916
|
}
|
|
7912
7917
|
const [existing] = await ctx.database.get("ggcevo_careers", { handle });
|
|
7913
|
-
if (existing) {
|
|
7918
|
+
if (existing.group === "人类联盟" || existing.group === "辛迪加海盗") {
|
|
7914
7919
|
return `你已经加入${existing.group}阵营,当前职业:${existing.career}`;
|
|
7915
7920
|
}
|
|
7916
7921
|
const [signData] = await ctx.database.get("ggcevo_sign", { handle });
|
|
@@ -7927,15 +7932,13 @@ ${testResult.passiveMessages.map((m) => `▸ ${m}`).join("\n")}`
|
|
|
7927
7932
|
handle,
|
|
7928
7933
|
totalRewards: signData?.totalRewards - 1e3
|
|
7929
7934
|
}], ["handle"]);
|
|
7930
|
-
await ctx.database.
|
|
7935
|
+
await ctx.database.upsert("ggcevo_careers", [{
|
|
7931
7936
|
handle,
|
|
7932
7937
|
group: "人类联盟",
|
|
7933
7938
|
career: "联盟新兵",
|
|
7934
|
-
redcrystal: 0,
|
|
7935
7939
|
date: /* @__PURE__ */ new Date()
|
|
7936
|
-
});
|
|
7940
|
+
}], ["handle"]);
|
|
7937
7941
|
} else if (faction === "辛迪加海盗") {
|
|
7938
|
-
const [pkData] = await ctx.database.get("ggcevo_pk", { handle });
|
|
7939
7942
|
if (userCoins < 2e3) {
|
|
7940
7943
|
return `加入辛迪加海盗需要缴纳2000金币,您当前拥有${userCoins}金币`;
|
|
7941
7944
|
}
|
|
@@ -7946,13 +7949,13 @@ ${testResult.passiveMessages.map((m) => `▸ ${m}`).join("\n")}`
|
|
|
7946
7949
|
handle,
|
|
7947
7950
|
totalRewards: signData?.totalRewards - 2e3
|
|
7948
7951
|
}], ["handle"]);
|
|
7949
|
-
await ctx.database.
|
|
7952
|
+
await ctx.database.upsert("ggcevo_careers", [{
|
|
7950
7953
|
handle,
|
|
7951
7954
|
group: "辛迪加海盗",
|
|
7952
7955
|
career: "辛迪加炮灰新兵",
|
|
7953
|
-
redcrystal: 5,
|
|
7956
|
+
redcrystal: (existing?.redcrystal || 0) + 5,
|
|
7954
7957
|
date: /* @__PURE__ */ new Date()
|
|
7955
|
-
});
|
|
7958
|
+
}], ["handle"]);
|
|
7956
7959
|
}
|
|
7957
7960
|
return `花费了${faction === "人类联盟" ? "1000金币" : "2000金币"}成功加入${faction}!${faction === "人类联盟" ? "" : "获得5枚红晶,"}初始职业:${faction === "人类联盟" ? "联盟新兵" : "辛迪加炮灰新兵"}`;
|
|
7958
7961
|
} catch (err) {
|
|
@@ -8168,8 +8171,22 @@ ${testResult.passiveMessages.map((m) => `▸ ${m}`).join("\n")}`
|
|
|
8168
8171
|
if (!careerData || careerData.group !== "辛迪加海盗") {
|
|
8169
8172
|
return "🚫 该功能需要【辛迪加海盗】阵营权限";
|
|
8170
8173
|
}
|
|
8171
|
-
const
|
|
8172
|
-
const
|
|
8174
|
+
const currentCareer = careerData.career;
|
|
8175
|
+
const discountProfessions = {
|
|
8176
|
+
"计算机专家": ["设备工具"],
|
|
8177
|
+
"破坏者": ["爆破物"]
|
|
8178
|
+
};
|
|
8179
|
+
Object.keys(legendaryDiscounts).forEach((item) => {
|
|
8180
|
+
if (legendaryDiscounts[item].includes(currentCareer)) {
|
|
8181
|
+
const category2 = weaponConfig[item]?.category;
|
|
8182
|
+
if (category2 && !discountProfessions[currentCareer]?.includes(category2)) {
|
|
8183
|
+
discountProfessions[currentCareer] = [
|
|
8184
|
+
...discountProfessions[currentCareer] || [],
|
|
8185
|
+
category2
|
|
8186
|
+
];
|
|
8187
|
+
}
|
|
8188
|
+
}
|
|
8189
|
+
});
|
|
8173
8190
|
const categoryStats = {};
|
|
8174
8191
|
Object.values(weaponConfig).filter((config2) => config2.redCrystalCost > 0).forEach((weapon) => {
|
|
8175
8192
|
categoryStats[weapon.category] = (categoryStats[weapon.category] || 0) + 1;
|
|
@@ -8179,17 +8196,16 @@ ${testResult.passiveMessages.map((m) => `▸ ${m}`).join("\n")}`
|
|
|
8179
8196
|
});
|
|
8180
8197
|
if (!category) {
|
|
8181
8198
|
const discountLines = [];
|
|
8182
|
-
|
|
8183
|
-
|
|
8184
|
-
|
|
8185
|
-
|
|
8186
|
-
|
|
8187
|
-
}
|
|
8199
|
+
Object.entries(discountProfessions).forEach(([profession, categories]) => {
|
|
8200
|
+
categories.forEach((cat) => {
|
|
8201
|
+
discountLines.push(`▸ ${profession}:${cat}类50%折扣`);
|
|
8202
|
+
});
|
|
8203
|
+
});
|
|
8188
8204
|
return [
|
|
8189
8205
|
"🏴 辛迪加黑市 🏴",
|
|
8190
8206
|
'使用 "黑市 分类名称" 查看详细信息',
|
|
8191
8207
|
discountLines.length ? [
|
|
8192
|
-
"💰
|
|
8208
|
+
"💰 专属折扣职业:",
|
|
8193
8209
|
...discountLines
|
|
8194
8210
|
].join("\n") : "",
|
|
8195
8211
|
"====================",
|
|
@@ -8199,18 +8215,29 @@ ${testResult.passiveMessages.map((m) => `▸ ${m}`).join("\n")}`
|
|
|
8199
8215
|
}
|
|
8200
8216
|
const normalizedCategory = Object.keys(categoryStats).find((c) => c === category);
|
|
8201
8217
|
if (!normalizedCategory) return `无效分类,可用:${Object.keys(categoryStats).join("、")}`;
|
|
8202
|
-
const isLegendaryCategory = normalizedCategory === "传奇武器";
|
|
8203
|
-
const legendaryNotice = isLegendaryCategory ? "⚠️ 注意:购买传奇武器需要对应的辛迪加海盗职业权限" : null;
|
|
8204
8218
|
const items = [
|
|
8205
8219
|
...Object.entries(weaponConfig).filter(
|
|
8206
8220
|
([_, config2]) => config2.category === normalizedCategory && config2.redCrystalCost > 0
|
|
8207
8221
|
).map(([name2, config2]) => {
|
|
8222
|
+
let discountPrice = null;
|
|
8223
|
+
let discountProfession = null;
|
|
8224
|
+
if (legendaryDiscounts[name2]?.includes(currentCareer)) {
|
|
8225
|
+
discountPrice = Math.floor(config2.redCrystalCost * 0.5);
|
|
8226
|
+
discountProfession = currentCareer;
|
|
8227
|
+
}
|
|
8208
8228
|
const infoBlocks = [
|
|
8209
8229
|
`【${name2}】`,
|
|
8210
8230
|
`武器类型:${config2.type}`,
|
|
8211
|
-
`基础伤害:${config2.damage}
|
|
8212
|
-
`订购价:${config2.redCrystalCost}红晶`
|
|
8231
|
+
`基础伤害:${config2.damage}`
|
|
8213
8232
|
];
|
|
8233
|
+
if (discountPrice) {
|
|
8234
|
+
infoBlocks.push(
|
|
8235
|
+
`订购价:${discountPrice}红晶 (原价${config2.redCrystalCost})`,
|
|
8236
|
+
`折扣:${discountProfession}专属50%折扣`
|
|
8237
|
+
);
|
|
8238
|
+
} else {
|
|
8239
|
+
infoBlocks.push(`订购价:${config2.redCrystalCost}红晶`);
|
|
8240
|
+
}
|
|
8214
8241
|
if (config2.specialeffect) {
|
|
8215
8242
|
infoBlocks.push(`特殊效果:${config2.specialeffect}`);
|
|
8216
8243
|
}
|
|
@@ -8228,26 +8255,23 @@ ${testResult.passiveMessages.map((m) => `▸ ${m}`).join("\n")}`
|
|
|
8228
8255
|
...Object.entries(SyndicatedItems).filter(
|
|
8229
8256
|
([_, item]) => item.type === normalizedCategory && item.redCrystalCost > 0
|
|
8230
8257
|
).map(([name2, item]) => {
|
|
8231
|
-
let
|
|
8232
|
-
let
|
|
8233
|
-
|
|
8234
|
-
|
|
8235
|
-
|
|
8236
|
-
|
|
8237
|
-
|
|
8238
|
-
|
|
8239
|
-
finalPrice = Math.floor(item.redCrystalCost * 0.5);
|
|
8240
|
-
discountApplied = true;
|
|
8241
|
-
discountType = "计算机专家";
|
|
8258
|
+
let discountPrice = null;
|
|
8259
|
+
let discountReason = null;
|
|
8260
|
+
if (currentCareer === "破坏者" && normalizedCategory === "爆破物") {
|
|
8261
|
+
discountPrice = Math.floor(item.redCrystalCost * 0.5);
|
|
8262
|
+
discountReason = "破坏者";
|
|
8263
|
+
} else if (currentCareer === "计算机专家" && normalizedCategory === "设备工具") {
|
|
8264
|
+
discountPrice = Math.floor(item.redCrystalCost * 0.5);
|
|
8265
|
+
discountReason = "计算机专家";
|
|
8242
8266
|
}
|
|
8243
8267
|
const infoBlocks = [
|
|
8244
8268
|
`【${name2}】`,
|
|
8245
8269
|
`物品类型:${item.type}`
|
|
8246
8270
|
];
|
|
8247
|
-
if (
|
|
8271
|
+
if (discountPrice) {
|
|
8248
8272
|
infoBlocks.push(
|
|
8249
|
-
`订购价:${
|
|
8250
|
-
`折扣:${
|
|
8273
|
+
`订购价:${discountPrice}红晶 (原价${item.redCrystalCost})`,
|
|
8274
|
+
`折扣:${discountReason}专属50%折扣`
|
|
8251
8275
|
);
|
|
8252
8276
|
} else {
|
|
8253
8277
|
infoBlocks.push(
|
|
@@ -8256,7 +8280,6 @@ ${testResult.passiveMessages.map((m) => `▸ ${m}`).join("\n")}`
|
|
|
8256
8280
|
}
|
|
8257
8281
|
infoBlocks.push(
|
|
8258
8282
|
`条件:${item.condition}`,
|
|
8259
|
-
// 新增的条件字段
|
|
8260
8283
|
`特殊效果:${item.effects}`,
|
|
8261
8284
|
`描述:${item.description}`,
|
|
8262
8285
|
"------------------"
|
|
@@ -8264,23 +8287,29 @@ ${testResult.passiveMessages.map((m) => `▸ ${m}`).join("\n")}`
|
|
|
8264
8287
|
return infoBlocks.join("\n");
|
|
8265
8288
|
})
|
|
8266
8289
|
];
|
|
8267
|
-
|
|
8268
|
-
if (
|
|
8269
|
-
|
|
8270
|
-
|
|
8271
|
-
|
|
8272
|
-
|
|
8273
|
-
|
|
8274
|
-
|
|
8290
|
+
const discountInfo = [];
|
|
8291
|
+
if (normalizedCategory === "传奇武器") {
|
|
8292
|
+
const availableDiscounts = [];
|
|
8293
|
+
Object.entries(legendaryDiscounts).forEach(([weapon, professions]) => {
|
|
8294
|
+
if (professions.includes(currentCareer)) {
|
|
8295
|
+
availableDiscounts.push(`${weapon}(${currentCareer}专属50%折扣)`);
|
|
8296
|
+
}
|
|
8297
|
+
});
|
|
8298
|
+
if (availableDiscounts.length) {
|
|
8299
|
+
discountInfo.push(
|
|
8300
|
+
"💰 传奇武器职业折扣:",
|
|
8301
|
+
`▸ ${availableDiscounts.join("\n▸ ")}`
|
|
8302
|
+
);
|
|
8303
|
+
}
|
|
8304
|
+
} else if (currentCareer === "破坏者" && normalizedCategory === "爆破物" || currentCareer === "计算机专家" && normalizedCategory === "设备工具") {
|
|
8305
|
+
discountInfo.push(
|
|
8275
8306
|
"💰 折扣明细:",
|
|
8276
|
-
|
|
8277
|
-
|
|
8307
|
+
`▸ ${currentCareer}职业:${normalizedCategory}类50%折扣`
|
|
8308
|
+
);
|
|
8278
8309
|
}
|
|
8279
8310
|
return [
|
|
8280
8311
|
`🏴 辛迪加黑市 - ${normalizedCategory} 🏴`,
|
|
8281
8312
|
'使用"订购 物品名称"进行购买(仅消耗红晶)',
|
|
8282
|
-
legendaryNotice,
|
|
8283
|
-
// 新增传奇武器权限提示
|
|
8284
8313
|
...discountInfo,
|
|
8285
8314
|
"====================",
|
|
8286
8315
|
...items
|
|
@@ -8303,34 +8332,22 @@ ${testResult.passiveMessages.map((m) => `▸ ${m}`).join("\n")}`
|
|
|
8303
8332
|
if (!isWeapon && !isSyndicatedItem) return "❌ 无效物品名称";
|
|
8304
8333
|
const itemConfig2 = isWeapon ? weaponConfig[item] : SyndicatedItems[item];
|
|
8305
8334
|
if (!itemConfig2.redCrystalCost) return "⛔ 该物品不可订购";
|
|
8306
|
-
|
|
8307
|
-
|
|
8308
|
-
if (item === "MK-4激光步枪" && careerData.career !== "能量武器专家") {
|
|
8309
|
-
return "❌ 购买MK-4激光步枪需要【能量武器专家】职业。";
|
|
8310
|
-
} else if (item === "DSR-55反器材步枪" && careerData.career !== "猩红杀手") {
|
|
8311
|
-
return "❌ 购买DSR-55反器材步枪需要【猩红杀手】职业。";
|
|
8312
|
-
} else if (item === "龙息霰弹枪" && careerData.career !== "纵火狂") {
|
|
8313
|
-
return "❌ 购买龙息霰弹枪需要【纵火狂】职业。";
|
|
8314
|
-
} else if (item === "M4AE脉冲步枪" && careerData.career !== "枪手") {
|
|
8315
|
-
return "❌ 购买M4AE脉冲步枪需要【枪手】职业。";
|
|
8316
|
-
} else if (item !== "MK-4激光步枪" && item !== "DSR-55反器材步枪" && item !== "龙息霰弹枪" && item !== "M4AE脉冲步枪") {
|
|
8317
|
-
return "❌ 未知的传奇武器或未开放购买权限";
|
|
8318
|
-
}
|
|
8319
|
-
}
|
|
8320
|
-
let isComputerExpertDiscount = false;
|
|
8321
|
-
let isSaboteurDiscount = false;
|
|
8335
|
+
let discountApplied = false;
|
|
8336
|
+
let discountReason = "";
|
|
8322
8337
|
let originalPrice = itemConfig2.redCrystalCost;
|
|
8323
8338
|
let finalCost = originalPrice;
|
|
8324
|
-
let discountApplied = false;
|
|
8325
8339
|
if (!isWeapon && itemConfig2.type === "爆破物" && careerData.career === "破坏者") {
|
|
8326
8340
|
finalCost = Math.floor(originalPrice * 0.5);
|
|
8327
|
-
isSaboteurDiscount = true;
|
|
8328
8341
|
discountApplied = true;
|
|
8329
|
-
|
|
8330
|
-
if (!isWeapon && itemConfig2.type === "设备工具" && careerData.career === "计算机专家") {
|
|
8342
|
+
discountReason = "破坏者职业:爆破物类物品50%折扣";
|
|
8343
|
+
} else if (!isWeapon && itemConfig2.type === "设备工具" && careerData.career === "计算机专家") {
|
|
8344
|
+
finalCost = Math.floor(originalPrice * 0.5);
|
|
8345
|
+
discountApplied = true;
|
|
8346
|
+
discountReason = "计算机专家职业:设备工具类物品50%折扣";
|
|
8347
|
+
} else if (isWeapon && itemConfig2.category === "传奇武器" && legendaryDiscounts[item]?.includes(careerData.career)) {
|
|
8331
8348
|
finalCost = Math.floor(originalPrice * 0.5);
|
|
8332
|
-
isComputerExpertDiscount = true;
|
|
8333
8349
|
discountApplied = true;
|
|
8350
|
+
discountReason = `${careerData.career}职业:购买${item}享受50%折扣`;
|
|
8334
8351
|
}
|
|
8335
8352
|
if ((careerData.redcrystal || 0) < finalCost) {
|
|
8336
8353
|
const discountMessage = discountApplied ? `(原价${originalPrice})` : "";
|
|
@@ -8380,12 +8397,6 @@ ${testResult.passiveMessages.map((m) => `▸ ${m}`).join("\n")}`
|
|
|
8380
8397
|
});
|
|
8381
8398
|
const buildResponse = /* @__PURE__ */ __name(async () => {
|
|
8382
8399
|
const discountLines = [];
|
|
8383
|
-
if (isSaboteurDiscount) {
|
|
8384
|
-
discountLines.push("💣 破坏者职业:爆破物类物品50%折扣");
|
|
8385
|
-
}
|
|
8386
|
-
if (isComputerExpertDiscount) {
|
|
8387
|
-
discountLines.push("💻 计算机专家职业:设备工具类物品50%折扣");
|
|
8388
|
-
}
|
|
8389
8400
|
const priceInfo = [
|
|
8390
8401
|
`消耗红晶:${finalCost}${discountApplied ? ` (原价${originalPrice})` : ""}`
|
|
8391
8402
|
];
|
|
@@ -8394,8 +8405,7 @@ ${testResult.passiveMessages.map((m) => `▸ ${m}`).join("\n")}`
|
|
|
8394
8405
|
return [
|
|
8395
8406
|
`✅ 成功订购【${item}】!`,
|
|
8396
8407
|
...priceInfo,
|
|
8397
|
-
|
|
8398
|
-
▸ ${discountLines.join("\n▸ ")}` : "",
|
|
8408
|
+
discountApplied ? `💰 折扣明细:${discountReason}` : "",
|
|
8399
8409
|
`装备状态:${equippedStatus}`,
|
|
8400
8410
|
'输入 "武器仓库" 管理武器'
|
|
8401
8411
|
].filter(Boolean).join("\n");
|
|
@@ -8407,8 +8417,8 @@ ${testResult.passiveMessages.map((m) => `▸ ${m}`).join("\n")}`
|
|
|
8407
8417
|
return [
|
|
8408
8418
|
`✅ 成功订购【${item}】x1!`,
|
|
8409
8419
|
...priceInfo,
|
|
8410
|
-
|
|
8411
|
-
|
|
8420
|
+
discountApplied ? `💰 折扣明细:
|
|
8421
|
+
${discountReason}` : "",
|
|
8412
8422
|
`当前库存:${currentStock}件`,
|
|
8413
8423
|
'输入 "仓库" 查看所有物品'
|
|
8414
8424
|
].filter(Boolean).join("\n");
|
|
@@ -8855,7 +8865,7 @@ ${Spacestationtechnology.map((t) => t.techname).join("、")}`;
|
|
|
8855
8865
|
return "购买过程中发生错误,请稍后再试";
|
|
8856
8866
|
}
|
|
8857
8867
|
});
|
|
8858
|
-
ctx.command("ggcevo
|
|
8868
|
+
ctx.command("ggcevo/开启军械库防爆门").alias("打开军械库防爆门").action(async (argv) => {
|
|
8859
8869
|
const session = argv.session;
|
|
8860
8870
|
const [profile] = await ctx.database.get("sc2arcade_player", { userId: session.userId });
|
|
8861
8871
|
if (!profile) return "🔒 请先绑定游戏句柄。";
|
|
@@ -8898,7 +8908,7 @@ ${Spacestationtechnology.map((t) => t.techname).join("、")}`;
|
|
|
8898
8908
|
}]);
|
|
8899
8909
|
});
|
|
8900
8910
|
return [
|
|
8901
|
-
`🎉
|
|
8911
|
+
`🎉 军械库防爆门已开启!`,
|
|
8902
8912
|
`✨ 您获得了传奇武器:${awardedWeapon.name}`,
|
|
8903
8913
|
`🔧 武器类型:${awardedWeapon.type}`,
|
|
8904
8914
|
`⚔️ 基础伤害:${awardedWeapon.damage}`,
|
package/lib/utils.d.ts
CHANGED
|
@@ -23,3 +23,9 @@ export declare function generateUpgradePriceList(ctx: Context, handle: string):
|
|
|
23
23
|
export declare function getRankInfo(ctx: Context, config: Config, handle: string): Promise<string>;
|
|
24
24
|
export declare function isWithinProtection(protections: PKProtection[]): boolean;
|
|
25
25
|
export declare function formatTime(date: Date): string;
|
|
26
|
+
export declare const legendaryDiscounts: {
|
|
27
|
+
'MK-4\u6FC0\u5149\u6B65\u67AA': string[];
|
|
28
|
+
'DSR-55\u53CD\u5668\u6750\u6B65\u67AA': string[];
|
|
29
|
+
龙息霰弹枪: string[];
|
|
30
|
+
M4AE脉冲步枪: string[];
|
|
31
|
+
};
|