koishi-plugin-ggcevo-game 1.4.49 → 1.4.51
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 +151 -99
- package/lib/utils.d.ts +6 -0
- package/lib/weapons.d.ts +42 -0
- package/package.json +1 -1
package/lib/index.js
CHANGED
|
@@ -235,7 +235,7 @@ var weaponConfig = {
|
|
|
235
235
|
id: 14,
|
|
236
236
|
type: "能量武器",
|
|
237
237
|
category: "能量武器",
|
|
238
|
-
damage:
|
|
238
|
+
damage: 35,
|
|
239
239
|
description: "一种原型能量武器,能够发射强大的脉冲",
|
|
240
240
|
specialeffect: "攻击使目标的技能层数减少2层",
|
|
241
241
|
price: 1500,
|
|
@@ -243,6 +243,48 @@ var weaponConfig = {
|
|
|
243
243
|
isantiair: true,
|
|
244
244
|
tagEffects: {}
|
|
245
245
|
},
|
|
246
|
+
"MK79榴弹发射器": {
|
|
247
|
+
id: 15,
|
|
248
|
+
type: "热能武器",
|
|
249
|
+
category: "热能武器",
|
|
250
|
+
damage: 50,
|
|
251
|
+
description: "发射非常坚固的专属榴弹,对具有坚固防御的目标几乎没有效果",
|
|
252
|
+
specialeffect: "",
|
|
253
|
+
price: 2e3,
|
|
254
|
+
redCrystalCost: 20,
|
|
255
|
+
isantiair: true,
|
|
256
|
+
tagEffects: {
|
|
257
|
+
"重甲": 1.5,
|
|
258
|
+
"轻甲": 0.8,
|
|
259
|
+
"护盾": 0.8
|
|
260
|
+
}
|
|
261
|
+
},
|
|
262
|
+
"EC13电浆步枪": {
|
|
263
|
+
id: 16,
|
|
264
|
+
type: "能量武器",
|
|
265
|
+
category: "能量武器",
|
|
266
|
+
damage: 64,
|
|
267
|
+
description: "用于解决高生命值目标的次时代武器",
|
|
268
|
+
specialeffect: "",
|
|
269
|
+
price: 1750,
|
|
270
|
+
redCrystalCost: 20,
|
|
271
|
+
isantiair: true,
|
|
272
|
+
tagEffects: {
|
|
273
|
+
"护盾": 0.5
|
|
274
|
+
}
|
|
275
|
+
},
|
|
276
|
+
"聚变磁轨枪": {
|
|
277
|
+
id: 17,
|
|
278
|
+
type: "能量武器",
|
|
279
|
+
category: "能量武器",
|
|
280
|
+
damage: 70,
|
|
281
|
+
description: "一种原型能量武器,能够发射强大的脉冲",
|
|
282
|
+
specialeffect: "",
|
|
283
|
+
price: 1550,
|
|
284
|
+
redCrystalCost: 20,
|
|
285
|
+
isantiair: true,
|
|
286
|
+
tagEffects: {}
|
|
287
|
+
},
|
|
246
288
|
"外星电浆": {
|
|
247
289
|
id: 101,
|
|
248
290
|
type: "能量武器",
|
|
@@ -251,7 +293,7 @@ var weaponConfig = {
|
|
|
251
293
|
description: "一件传奇武器",
|
|
252
294
|
specialeffect: "",
|
|
253
295
|
price: 6400,
|
|
254
|
-
redCrystalCost:
|
|
296
|
+
redCrystalCost: 200,
|
|
255
297
|
isantiair: true,
|
|
256
298
|
tagEffects: {
|
|
257
299
|
"生物": 2,
|
|
@@ -267,7 +309,7 @@ var weaponConfig = {
|
|
|
267
309
|
description: "一件传奇武器",
|
|
268
310
|
specialeffect: "攻击暴击率+80%",
|
|
269
311
|
price: 6400,
|
|
270
|
-
redCrystalCost:
|
|
312
|
+
redCrystalCost: 200,
|
|
271
313
|
isantiair: true,
|
|
272
314
|
tagEffects: {
|
|
273
315
|
"重甲": 1.5
|
|
@@ -281,7 +323,7 @@ var weaponConfig = {
|
|
|
281
323
|
description: "这是传说中的武器",
|
|
282
324
|
specialeffect: "",
|
|
283
325
|
price: 6400,
|
|
284
|
-
redCrystalCost:
|
|
326
|
+
redCrystalCost: 200,
|
|
285
327
|
isantiair: false,
|
|
286
328
|
tagEffects: {
|
|
287
329
|
"轻甲": 1.5,
|
|
@@ -296,7 +338,7 @@ var weaponConfig = {
|
|
|
296
338
|
description: "一件传奇武器",
|
|
297
339
|
specialeffect: "",
|
|
298
340
|
price: 6400,
|
|
299
|
-
redCrystalCost:
|
|
341
|
+
redCrystalCost: 200,
|
|
300
342
|
isantiair: true,
|
|
301
343
|
tagEffects: {
|
|
302
344
|
"重甲": 1.2
|
|
@@ -310,7 +352,7 @@ var weaponConfig = {
|
|
|
310
352
|
description: "优雅而独特的武器",
|
|
311
353
|
specialeffect: "无视目标100%的减伤效果",
|
|
312
354
|
price: 6400,
|
|
313
|
-
redCrystalCost:
|
|
355
|
+
redCrystalCost: 200,
|
|
314
356
|
isantiair: false,
|
|
315
357
|
tagEffects: {}
|
|
316
358
|
},
|
|
@@ -322,7 +364,7 @@ var weaponConfig = {
|
|
|
322
364
|
description: "一件传奇武器",
|
|
323
365
|
specialeffect: "攻击消耗目标500点能量",
|
|
324
366
|
price: 6400,
|
|
325
|
-
redCrystalCost:
|
|
367
|
+
redCrystalCost: 200,
|
|
326
368
|
isantiair: true,
|
|
327
369
|
tagEffects: {
|
|
328
370
|
"机械": 1.5
|
|
@@ -336,7 +378,7 @@ var weaponConfig = {
|
|
|
336
378
|
description: "一件传奇武器",
|
|
337
379
|
specialeffect: "攻击无视目标80%的减伤效果",
|
|
338
380
|
price: 6400,
|
|
339
|
-
redCrystalCost:
|
|
381
|
+
redCrystalCost: 200,
|
|
340
382
|
isantiair: true,
|
|
341
383
|
tagEffects: {
|
|
342
384
|
"重甲": 2
|
|
@@ -350,7 +392,7 @@ var weaponConfig = {
|
|
|
350
392
|
description: "一件传奇武器",
|
|
351
393
|
specialeffect: "",
|
|
352
394
|
price: 6400,
|
|
353
|
-
redCrystalCost:
|
|
395
|
+
redCrystalCost: 200,
|
|
354
396
|
isantiair: true,
|
|
355
397
|
tagEffects: {
|
|
356
398
|
"建筑": 2,
|
|
@@ -604,7 +646,7 @@ var spaceStationCrewConfig = [
|
|
|
604
646
|
var syndicatePirateConfig = [
|
|
605
647
|
{
|
|
606
648
|
professionName: "能量武器专家",
|
|
607
|
-
effect: "能量武器攻击伤害+20%;
|
|
649
|
+
effect: "能量武器攻击伤害+20%; 购买MK-4激光步枪(传奇)享有50%的折扣",
|
|
608
650
|
requirements: "至少拥有一把3级及以上等级的能量武器",
|
|
609
651
|
Jobtransfer: true,
|
|
610
652
|
costredcrystal: 30
|
|
@@ -618,21 +660,21 @@ var syndicatePirateConfig = [
|
|
|
618
660
|
},
|
|
619
661
|
{
|
|
620
662
|
professionName: "枪手",
|
|
621
|
-
effect: "武器等级上限为7级; 升级武器享有10%的折扣;
|
|
663
|
+
effect: "武器等级上限为7级; 升级武器享有10%的折扣; 购买M4AE脉冲步枪(传奇)享有50%的折扣",
|
|
622
664
|
requirements: "至少拥有一把6级及以上等级的武器",
|
|
623
665
|
Jobtransfer: true,
|
|
624
666
|
costredcrystal: 35
|
|
625
667
|
},
|
|
626
668
|
{
|
|
627
669
|
professionName: "猩红杀手",
|
|
628
|
-
effect: "“侦察步枪”攻击伤害+15%; 使用“侦察步枪”攻击时无视目标20%的减伤效果;
|
|
670
|
+
effect: "“侦察步枪”攻击伤害+15%; 使用“侦察步枪”攻击时无视目标20%的减伤效果; 购买DSR-55反器材步枪(传奇)享有50%的折扣",
|
|
629
671
|
requirements: "“侦察步枪”武器等级≥3级",
|
|
630
672
|
Jobtransfer: true,
|
|
631
673
|
costredcrystal: 30
|
|
632
674
|
},
|
|
633
675
|
{
|
|
634
676
|
professionName: "纵火狂",
|
|
635
|
-
effect: "热能武器攻击伤害+20%;
|
|
677
|
+
effect: "热能武器攻击伤害+20%; 购买龙息霰弹枪(传奇)享有50%的折扣",
|
|
636
678
|
requirements: "至少拥有一把3级及以上等级的热能武器",
|
|
637
679
|
Jobtransfer: true,
|
|
638
680
|
costredcrystal: 30
|
|
@@ -4078,6 +4120,12 @@ function formatTime(date) {
|
|
|
4078
4120
|
});
|
|
4079
4121
|
}
|
|
4080
4122
|
__name(formatTime, "formatTime");
|
|
4123
|
+
var legendaryDiscounts = {
|
|
4124
|
+
"MK-4激光步枪": ["能量武器专家"],
|
|
4125
|
+
"DSR-55反器材步枪": ["猩红杀手"],
|
|
4126
|
+
"龙息霰弹枪": ["纵火狂"],
|
|
4127
|
+
"M4AE脉冲步枪": ["枪手"]
|
|
4128
|
+
};
|
|
4081
4129
|
|
|
4082
4130
|
// src/boss/damagecalculation.ts
|
|
4083
4131
|
async function calculateTotalDamage(ctx, session, config, equippedWeapon, targetBoss) {
|
|
@@ -7572,8 +7620,8 @@ ${validTypes.join("、")}`;
|
|
|
7572
7620
|
const layerDisplay = layerInfo.length > 0 ? `📊 层数状态: ${layerInfo.join(" | ")}` : "";
|
|
7573
7621
|
return [
|
|
7574
7622
|
`🎯 使用武器 ${weaponName} 攻击 ${dummyBoss.name}`,
|
|
7575
|
-
`❤️ 假人血量:${dummyBoss.HP}`,
|
|
7576
|
-
`⚡ 假人能量:${dummyBoss.energy}`,
|
|
7623
|
+
`❤️ 假人血量:${dummyBoss.HP}/10000`,
|
|
7624
|
+
`⚡ 假人能量:${dummyBoss.energy}/1000`,
|
|
7577
7625
|
options.tags?.length && `🏷️ 模拟标签:${tags.join(", ")}`,
|
|
7578
7626
|
options.passives?.length && `✨ 模拟被动:${passives.join(", ")}`,
|
|
7579
7627
|
layerDisplay,
|
|
@@ -7591,9 +7639,8 @@ ${testResult.ignoreMessage.map((m) => `▸ ${m}`).join("\n")}`
|
|
|
7591
7639
|
${testResult.passiveMessages.map((m) => `▸ ${m}`).join("\n")}`
|
|
7592
7640
|
] : [],
|
|
7593
7641
|
`📊 理论伤害值:${testResult.initialDamage}${testResult.hasCrit ? "(✨ 暴击)" : ""}`,
|
|
7594
|
-
"💡
|
|
7595
|
-
"💡 层数选项:技能层数(-s)、辐射层数(-r)、寒冷层数(-c)、状态层数(-a)"
|
|
7596
|
-
`ℹ️ 测试假人最大血量:10000 | 最大能量:1000 | 最大层数:100`
|
|
7642
|
+
"💡 参数添加:可添加标签(-t)、被动(-p)、血量(-l)、能量(-e)",
|
|
7643
|
+
"💡 层数选项:技能层数(-s)、辐射层数(-r)、寒冷层数(-c)、状态层数(-a)"
|
|
7597
7644
|
].filter((line) => line).join("\n");
|
|
7598
7645
|
} finally {
|
|
7599
7646
|
Object.keys("测试假人").forEach((key) => delete battleStatsMap[key]);
|
|
@@ -7910,7 +7957,7 @@ ${testResult.passiveMessages.map((m) => `▸ ${m}`).join("\n")}`
|
|
|
7910
7957
|
return `您输入的是错误的阵营名称,请选择有效阵营:${validFactions.join(" / ")}`;
|
|
7911
7958
|
}
|
|
7912
7959
|
const [existing] = await ctx.database.get("ggcevo_careers", { handle });
|
|
7913
|
-
if (existing) {
|
|
7960
|
+
if (existing.group === "人类联盟" || existing.group === "辛迪加海盗") {
|
|
7914
7961
|
return `你已经加入${existing.group}阵营,当前职业:${existing.career}`;
|
|
7915
7962
|
}
|
|
7916
7963
|
const [signData] = await ctx.database.get("ggcevo_sign", { handle });
|
|
@@ -7927,15 +7974,13 @@ ${testResult.passiveMessages.map((m) => `▸ ${m}`).join("\n")}`
|
|
|
7927
7974
|
handle,
|
|
7928
7975
|
totalRewards: signData?.totalRewards - 1e3
|
|
7929
7976
|
}], ["handle"]);
|
|
7930
|
-
await ctx.database.
|
|
7977
|
+
await ctx.database.upsert("ggcevo_careers", [{
|
|
7931
7978
|
handle,
|
|
7932
7979
|
group: "人类联盟",
|
|
7933
7980
|
career: "联盟新兵",
|
|
7934
|
-
redcrystal: 0,
|
|
7935
7981
|
date: /* @__PURE__ */ new Date()
|
|
7936
|
-
});
|
|
7982
|
+
}], ["handle"]);
|
|
7937
7983
|
} else if (faction === "辛迪加海盗") {
|
|
7938
|
-
const [pkData] = await ctx.database.get("ggcevo_pk", { handle });
|
|
7939
7984
|
if (userCoins < 2e3) {
|
|
7940
7985
|
return `加入辛迪加海盗需要缴纳2000金币,您当前拥有${userCoins}金币`;
|
|
7941
7986
|
}
|
|
@@ -7946,13 +7991,13 @@ ${testResult.passiveMessages.map((m) => `▸ ${m}`).join("\n")}`
|
|
|
7946
7991
|
handle,
|
|
7947
7992
|
totalRewards: signData?.totalRewards - 2e3
|
|
7948
7993
|
}], ["handle"]);
|
|
7949
|
-
await ctx.database.
|
|
7994
|
+
await ctx.database.upsert("ggcevo_careers", [{
|
|
7950
7995
|
handle,
|
|
7951
7996
|
group: "辛迪加海盗",
|
|
7952
7997
|
career: "辛迪加炮灰新兵",
|
|
7953
|
-
redcrystal: 5,
|
|
7998
|
+
redcrystal: (existing?.redcrystal || 0) + 5,
|
|
7954
7999
|
date: /* @__PURE__ */ new Date()
|
|
7955
|
-
});
|
|
8000
|
+
}], ["handle"]);
|
|
7956
8001
|
}
|
|
7957
8002
|
return `花费了${faction === "人类联盟" ? "1000金币" : "2000金币"}成功加入${faction}!${faction === "人类联盟" ? "" : "获得5枚红晶,"}初始职业:${faction === "人类联盟" ? "联盟新兵" : "辛迪加炮灰新兵"}`;
|
|
7958
8003
|
} catch (err) {
|
|
@@ -8168,8 +8213,22 @@ ${testResult.passiveMessages.map((m) => `▸ ${m}`).join("\n")}`
|
|
|
8168
8213
|
if (!careerData || careerData.group !== "辛迪加海盗") {
|
|
8169
8214
|
return "🚫 该功能需要【辛迪加海盗】阵营权限";
|
|
8170
8215
|
}
|
|
8171
|
-
const
|
|
8172
|
-
const
|
|
8216
|
+
const currentCareer = careerData.career;
|
|
8217
|
+
const discountProfessions = {
|
|
8218
|
+
"计算机专家": ["设备工具"],
|
|
8219
|
+
"破坏者": ["爆破物"]
|
|
8220
|
+
};
|
|
8221
|
+
Object.keys(legendaryDiscounts).forEach((item) => {
|
|
8222
|
+
if (legendaryDiscounts[item].includes(currentCareer)) {
|
|
8223
|
+
const category2 = weaponConfig[item]?.category;
|
|
8224
|
+
if (category2 && !discountProfessions[currentCareer]?.includes(category2)) {
|
|
8225
|
+
discountProfessions[currentCareer] = [
|
|
8226
|
+
...discountProfessions[currentCareer] || [],
|
|
8227
|
+
category2
|
|
8228
|
+
];
|
|
8229
|
+
}
|
|
8230
|
+
}
|
|
8231
|
+
});
|
|
8173
8232
|
const categoryStats = {};
|
|
8174
8233
|
Object.values(weaponConfig).filter((config2) => config2.redCrystalCost > 0).forEach((weapon) => {
|
|
8175
8234
|
categoryStats[weapon.category] = (categoryStats[weapon.category] || 0) + 1;
|
|
@@ -8179,17 +8238,16 @@ ${testResult.passiveMessages.map((m) => `▸ ${m}`).join("\n")}`
|
|
|
8179
8238
|
});
|
|
8180
8239
|
if (!category) {
|
|
8181
8240
|
const discountLines = [];
|
|
8182
|
-
|
|
8183
|
-
|
|
8184
|
-
|
|
8185
|
-
|
|
8186
|
-
|
|
8187
|
-
}
|
|
8241
|
+
Object.entries(discountProfessions).forEach(([profession, categories]) => {
|
|
8242
|
+
categories.forEach((cat) => {
|
|
8243
|
+
discountLines.push(`▸ ${profession}:${cat}类50%折扣`);
|
|
8244
|
+
});
|
|
8245
|
+
});
|
|
8188
8246
|
return [
|
|
8189
8247
|
"🏴 辛迪加黑市 🏴",
|
|
8190
8248
|
'使用 "黑市 分类名称" 查看详细信息',
|
|
8191
8249
|
discountLines.length ? [
|
|
8192
|
-
"💰
|
|
8250
|
+
"💰 专属折扣职业:",
|
|
8193
8251
|
...discountLines
|
|
8194
8252
|
].join("\n") : "",
|
|
8195
8253
|
"====================",
|
|
@@ -8199,18 +8257,29 @@ ${testResult.passiveMessages.map((m) => `▸ ${m}`).join("\n")}`
|
|
|
8199
8257
|
}
|
|
8200
8258
|
const normalizedCategory = Object.keys(categoryStats).find((c) => c === category);
|
|
8201
8259
|
if (!normalizedCategory) return `无效分类,可用:${Object.keys(categoryStats).join("、")}`;
|
|
8202
|
-
const isLegendaryCategory = normalizedCategory === "传奇武器";
|
|
8203
|
-
const legendaryNotice = isLegendaryCategory ? "⚠️ 注意:购买传奇武器需要对应的辛迪加海盗职业权限" : null;
|
|
8204
8260
|
const items = [
|
|
8205
8261
|
...Object.entries(weaponConfig).filter(
|
|
8206
8262
|
([_, config2]) => config2.category === normalizedCategory && config2.redCrystalCost > 0
|
|
8207
8263
|
).map(([name2, config2]) => {
|
|
8264
|
+
let discountPrice = null;
|
|
8265
|
+
let discountProfession = null;
|
|
8266
|
+
if (legendaryDiscounts[name2]?.includes(currentCareer)) {
|
|
8267
|
+
discountPrice = Math.floor(config2.redCrystalCost * 0.5);
|
|
8268
|
+
discountProfession = currentCareer;
|
|
8269
|
+
}
|
|
8208
8270
|
const infoBlocks = [
|
|
8209
8271
|
`【${name2}】`,
|
|
8210
8272
|
`武器类型:${config2.type}`,
|
|
8211
|
-
`基础伤害:${config2.damage}
|
|
8212
|
-
`订购价:${config2.redCrystalCost}红晶`
|
|
8273
|
+
`基础伤害:${config2.damage}`
|
|
8213
8274
|
];
|
|
8275
|
+
if (discountPrice) {
|
|
8276
|
+
infoBlocks.push(
|
|
8277
|
+
`订购价:${discountPrice}红晶 (原价${config2.redCrystalCost})`,
|
|
8278
|
+
`折扣:${discountProfession}专属50%折扣`
|
|
8279
|
+
);
|
|
8280
|
+
} else {
|
|
8281
|
+
infoBlocks.push(`订购价:${config2.redCrystalCost}红晶`);
|
|
8282
|
+
}
|
|
8214
8283
|
if (config2.specialeffect) {
|
|
8215
8284
|
infoBlocks.push(`特殊效果:${config2.specialeffect}`);
|
|
8216
8285
|
}
|
|
@@ -8228,26 +8297,23 @@ ${testResult.passiveMessages.map((m) => `▸ ${m}`).join("\n")}`
|
|
|
8228
8297
|
...Object.entries(SyndicatedItems).filter(
|
|
8229
8298
|
([_, item]) => item.type === normalizedCategory && item.redCrystalCost > 0
|
|
8230
8299
|
).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 = "计算机专家";
|
|
8300
|
+
let discountPrice = null;
|
|
8301
|
+
let discountReason = null;
|
|
8302
|
+
if (currentCareer === "破坏者" && normalizedCategory === "爆破物") {
|
|
8303
|
+
discountPrice = Math.floor(item.redCrystalCost * 0.5);
|
|
8304
|
+
discountReason = "破坏者";
|
|
8305
|
+
} else if (currentCareer === "计算机专家" && normalizedCategory === "设备工具") {
|
|
8306
|
+
discountPrice = Math.floor(item.redCrystalCost * 0.5);
|
|
8307
|
+
discountReason = "计算机专家";
|
|
8242
8308
|
}
|
|
8243
8309
|
const infoBlocks = [
|
|
8244
8310
|
`【${name2}】`,
|
|
8245
8311
|
`物品类型:${item.type}`
|
|
8246
8312
|
];
|
|
8247
|
-
if (
|
|
8313
|
+
if (discountPrice) {
|
|
8248
8314
|
infoBlocks.push(
|
|
8249
|
-
`订购价:${
|
|
8250
|
-
`折扣:${
|
|
8315
|
+
`订购价:${discountPrice}红晶 (原价${item.redCrystalCost})`,
|
|
8316
|
+
`折扣:${discountReason}专属50%折扣`
|
|
8251
8317
|
);
|
|
8252
8318
|
} else {
|
|
8253
8319
|
infoBlocks.push(
|
|
@@ -8256,7 +8322,6 @@ ${testResult.passiveMessages.map((m) => `▸ ${m}`).join("\n")}`
|
|
|
8256
8322
|
}
|
|
8257
8323
|
infoBlocks.push(
|
|
8258
8324
|
`条件:${item.condition}`,
|
|
8259
|
-
// 新增的条件字段
|
|
8260
8325
|
`特殊效果:${item.effects}`,
|
|
8261
8326
|
`描述:${item.description}`,
|
|
8262
8327
|
"------------------"
|
|
@@ -8264,23 +8329,29 @@ ${testResult.passiveMessages.map((m) => `▸ ${m}`).join("\n")}`
|
|
|
8264
8329
|
return infoBlocks.join("\n");
|
|
8265
8330
|
})
|
|
8266
8331
|
];
|
|
8267
|
-
|
|
8268
|
-
if (
|
|
8269
|
-
|
|
8270
|
-
|
|
8271
|
-
|
|
8272
|
-
|
|
8273
|
-
|
|
8274
|
-
|
|
8332
|
+
const discountInfo = [];
|
|
8333
|
+
if (normalizedCategory === "传奇武器") {
|
|
8334
|
+
const availableDiscounts = [];
|
|
8335
|
+
Object.entries(legendaryDiscounts).forEach(([weapon, professions]) => {
|
|
8336
|
+
if (professions.includes(currentCareer)) {
|
|
8337
|
+
availableDiscounts.push(`${weapon}(${currentCareer}专属50%折扣)`);
|
|
8338
|
+
}
|
|
8339
|
+
});
|
|
8340
|
+
if (availableDiscounts.length) {
|
|
8341
|
+
discountInfo.push(
|
|
8342
|
+
"💰 传奇武器职业折扣:",
|
|
8343
|
+
`▸ ${availableDiscounts.join("\n▸ ")}`
|
|
8344
|
+
);
|
|
8345
|
+
}
|
|
8346
|
+
} else if (currentCareer === "破坏者" && normalizedCategory === "爆破物" || currentCareer === "计算机专家" && normalizedCategory === "设备工具") {
|
|
8347
|
+
discountInfo.push(
|
|
8275
8348
|
"💰 折扣明细:",
|
|
8276
|
-
|
|
8277
|
-
|
|
8349
|
+
`▸ ${currentCareer}职业:${normalizedCategory}类50%折扣`
|
|
8350
|
+
);
|
|
8278
8351
|
}
|
|
8279
8352
|
return [
|
|
8280
8353
|
`🏴 辛迪加黑市 - ${normalizedCategory} 🏴`,
|
|
8281
8354
|
'使用"订购 物品名称"进行购买(仅消耗红晶)',
|
|
8282
|
-
legendaryNotice,
|
|
8283
|
-
// 新增传奇武器权限提示
|
|
8284
8355
|
...discountInfo,
|
|
8285
8356
|
"====================",
|
|
8286
8357
|
...items
|
|
@@ -8303,34 +8374,22 @@ ${testResult.passiveMessages.map((m) => `▸ ${m}`).join("\n")}`
|
|
|
8303
8374
|
if (!isWeapon && !isSyndicatedItem) return "❌ 无效物品名称";
|
|
8304
8375
|
const itemConfig2 = isWeapon ? weaponConfig[item] : SyndicatedItems[item];
|
|
8305
8376
|
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;
|
|
8377
|
+
let discountApplied = false;
|
|
8378
|
+
let discountReason = "";
|
|
8322
8379
|
let originalPrice = itemConfig2.redCrystalCost;
|
|
8323
8380
|
let finalCost = originalPrice;
|
|
8324
|
-
let discountApplied = false;
|
|
8325
8381
|
if (!isWeapon && itemConfig2.type === "爆破物" && careerData.career === "破坏者") {
|
|
8326
8382
|
finalCost = Math.floor(originalPrice * 0.5);
|
|
8327
|
-
isSaboteurDiscount = true;
|
|
8328
8383
|
discountApplied = true;
|
|
8329
|
-
|
|
8330
|
-
if (!isWeapon && itemConfig2.type === "设备工具" && careerData.career === "计算机专家") {
|
|
8384
|
+
discountReason = "破坏者职业:爆破物类物品50%折扣";
|
|
8385
|
+
} else if (!isWeapon && itemConfig2.type === "设备工具" && careerData.career === "计算机专家") {
|
|
8331
8386
|
finalCost = Math.floor(originalPrice * 0.5);
|
|
8332
|
-
isComputerExpertDiscount = true;
|
|
8333
8387
|
discountApplied = true;
|
|
8388
|
+
discountReason = "计算机专家职业:设备工具类物品50%折扣";
|
|
8389
|
+
} else if (isWeapon && itemConfig2.category === "传奇武器" && legendaryDiscounts[item]?.includes(careerData.career)) {
|
|
8390
|
+
finalCost = Math.floor(originalPrice * 0.5);
|
|
8391
|
+
discountApplied = true;
|
|
8392
|
+
discountReason = `${careerData.career}职业:购买${item}享受50%折扣`;
|
|
8334
8393
|
}
|
|
8335
8394
|
if ((careerData.redcrystal || 0) < finalCost) {
|
|
8336
8395
|
const discountMessage = discountApplied ? `(原价${originalPrice})` : "";
|
|
@@ -8380,12 +8439,6 @@ ${testResult.passiveMessages.map((m) => `▸ ${m}`).join("\n")}`
|
|
|
8380
8439
|
});
|
|
8381
8440
|
const buildResponse = /* @__PURE__ */ __name(async () => {
|
|
8382
8441
|
const discountLines = [];
|
|
8383
|
-
if (isSaboteurDiscount) {
|
|
8384
|
-
discountLines.push("💣 破坏者职业:爆破物类物品50%折扣");
|
|
8385
|
-
}
|
|
8386
|
-
if (isComputerExpertDiscount) {
|
|
8387
|
-
discountLines.push("💻 计算机专家职业:设备工具类物品50%折扣");
|
|
8388
|
-
}
|
|
8389
8442
|
const priceInfo = [
|
|
8390
8443
|
`消耗红晶:${finalCost}${discountApplied ? ` (原价${originalPrice})` : ""}`
|
|
8391
8444
|
];
|
|
@@ -8394,8 +8447,7 @@ ${testResult.passiveMessages.map((m) => `▸ ${m}`).join("\n")}`
|
|
|
8394
8447
|
return [
|
|
8395
8448
|
`✅ 成功订购【${item}】!`,
|
|
8396
8449
|
...priceInfo,
|
|
8397
|
-
|
|
8398
|
-
▸ ${discountLines.join("\n▸ ")}` : "",
|
|
8450
|
+
discountApplied ? `💰 折扣明细:${discountReason}` : "",
|
|
8399
8451
|
`装备状态:${equippedStatus}`,
|
|
8400
8452
|
'输入 "武器仓库" 管理武器'
|
|
8401
8453
|
].filter(Boolean).join("\n");
|
|
@@ -8407,8 +8459,8 @@ ${testResult.passiveMessages.map((m) => `▸ ${m}`).join("\n")}`
|
|
|
8407
8459
|
return [
|
|
8408
8460
|
`✅ 成功订购【${item}】x1!`,
|
|
8409
8461
|
...priceInfo,
|
|
8410
|
-
|
|
8411
|
-
|
|
8462
|
+
discountApplied ? `💰 折扣明细:
|
|
8463
|
+
${discountReason}` : "",
|
|
8412
8464
|
`当前库存:${currentStock}件`,
|
|
8413
8465
|
'输入 "仓库" 查看所有物品'
|
|
8414
8466
|
].filter(Boolean).join("\n");
|
|
@@ -8855,7 +8907,7 @@ ${Spacestationtechnology.map((t) => t.techname).join("、")}`;
|
|
|
8855
8907
|
return "购买过程中发生错误,请稍后再试";
|
|
8856
8908
|
}
|
|
8857
8909
|
});
|
|
8858
|
-
ctx.command("ggcevo
|
|
8910
|
+
ctx.command("ggcevo/开启军械库防爆门").alias("打开军械库防爆门").action(async (argv) => {
|
|
8859
8911
|
const session = argv.session;
|
|
8860
8912
|
const [profile] = await ctx.database.get("sc2arcade_player", { userId: session.userId });
|
|
8861
8913
|
if (!profile) return "🔒 请先绑定游戏句柄。";
|
|
@@ -8898,7 +8950,7 @@ ${Spacestationtechnology.map((t) => t.techname).join("、")}`;
|
|
|
8898
8950
|
}]);
|
|
8899
8951
|
});
|
|
8900
8952
|
return [
|
|
8901
|
-
`🎉
|
|
8953
|
+
`🎉 军械库防爆门已开启!`,
|
|
8902
8954
|
`✨ 您获得了传奇武器:${awardedWeapon.name}`,
|
|
8903
8955
|
`🔧 武器类型:${awardedWeapon.type}`,
|
|
8904
8956
|
`⚔️ 基础伤害:${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
|
+
};
|
package/lib/weapons.d.ts
CHANGED
|
@@ -208,6 +208,48 @@ export declare const weaponConfig: {
|
|
|
208
208
|
isantiair: boolean;
|
|
209
209
|
tagEffects: {};
|
|
210
210
|
};
|
|
211
|
+
MK79榴弹发射器: {
|
|
212
|
+
id: number;
|
|
213
|
+
type: string;
|
|
214
|
+
category: string;
|
|
215
|
+
damage: number;
|
|
216
|
+
description: string;
|
|
217
|
+
specialeffect: string;
|
|
218
|
+
price: number;
|
|
219
|
+
redCrystalCost: number;
|
|
220
|
+
isantiair: boolean;
|
|
221
|
+
tagEffects: {
|
|
222
|
+
重甲: number;
|
|
223
|
+
轻甲: number;
|
|
224
|
+
护盾: number;
|
|
225
|
+
};
|
|
226
|
+
};
|
|
227
|
+
EC13电浆步枪: {
|
|
228
|
+
id: number;
|
|
229
|
+
type: string;
|
|
230
|
+
category: string;
|
|
231
|
+
damage: number;
|
|
232
|
+
description: string;
|
|
233
|
+
specialeffect: string;
|
|
234
|
+
price: number;
|
|
235
|
+
redCrystalCost: number;
|
|
236
|
+
isantiair: boolean;
|
|
237
|
+
tagEffects: {
|
|
238
|
+
护盾: number;
|
|
239
|
+
};
|
|
240
|
+
};
|
|
241
|
+
聚变磁轨枪: {
|
|
242
|
+
id: number;
|
|
243
|
+
type: string;
|
|
244
|
+
category: string;
|
|
245
|
+
damage: number;
|
|
246
|
+
description: string;
|
|
247
|
+
specialeffect: string;
|
|
248
|
+
price: number;
|
|
249
|
+
redCrystalCost: number;
|
|
250
|
+
isantiair: boolean;
|
|
251
|
+
tagEffects: {};
|
|
252
|
+
};
|
|
211
253
|
外星电浆: {
|
|
212
254
|
id: number;
|
|
213
255
|
type: string;
|