koishi-plugin-ggcevo-game 1.5.30 → 1.6.0
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/careersystem/technology.d.ts +0 -1
- package/lib/index.js +172 -81
- package/package.json +1 -1
package/lib/index.js
CHANGED
|
@@ -627,7 +627,7 @@ var SyndicatedItems = {
|
|
|
627
627
|
price: 0,
|
|
628
628
|
redCrystalCost: 30,
|
|
629
629
|
condition: "辛迪加海盗阵营",
|
|
630
|
-
effects: "挖矿收益提高10
|
|
630
|
+
effects: "挖矿收益提高10%;可使用红晶升级"
|
|
631
631
|
}
|
|
632
632
|
};
|
|
633
633
|
var initDefaultItems = {
|
|
@@ -1237,7 +1237,6 @@ var Spacestationtechnology = [
|
|
|
1237
1237
|
];
|
|
1238
1238
|
var itemupgrades = [
|
|
1239
1239
|
{
|
|
1240
|
-
id: 1,
|
|
1241
1240
|
name: "自动采掘机器人",
|
|
1242
1241
|
upgradeCostBase: 10,
|
|
1243
1242
|
// 升级基础成本
|
|
@@ -5265,6 +5264,18 @@ var ggcevoUpdates = [
|
|
|
5265
5264
|
- 新增了辛迪加海盗阵营升级物品机制
|
|
5266
5265
|
- 修改了异形主宰复活逻辑,现在只会在12点和0点复活
|
|
5267
5266
|
`.trim()
|
|
5267
|
+
},
|
|
5268
|
+
{
|
|
5269
|
+
version: "1.6.0",
|
|
5270
|
+
time: "2025-07-08",
|
|
5271
|
+
content: `
|
|
5272
|
+
- 增强了采掘科技,关键系统固件科技和反应堆科技的加成效果
|
|
5273
|
+
- 签到的金币奖励变更为固定区间50-100
|
|
5274
|
+
- 挖矿的收益增加至每半小时4金币
|
|
5275
|
+
- 重制了部分飞船效果
|
|
5276
|
+
- 优化了升级物品,仓库和探索的显示信息
|
|
5277
|
+
- 减少了物品“自动采掘机器人”的升级所需红晶数量
|
|
5278
|
+
`.trim()
|
|
5268
5279
|
}
|
|
5269
5280
|
];
|
|
5270
5281
|
function compareVersions(a, b) {
|
|
@@ -10798,13 +10809,22 @@ ${discountReason}` : "",
|
|
|
10798
10809
|
([, item]) => item.id === warehouseItem.itemId
|
|
10799
10810
|
);
|
|
10800
10811
|
const [itemName, itemData] = entry;
|
|
10801
|
-
|
|
10812
|
+
const upgradeConfig = itemupgrades.find((config2) => config2.name === itemName);
|
|
10813
|
+
const isUpgradable = upgradeConfig && itemName in SyndicatedItems;
|
|
10814
|
+
const bonusValue = warehouseItem.bonus || 0;
|
|
10815
|
+
const itemLines = [
|
|
10802
10816
|
`${itemName}`,
|
|
10803
10817
|
`类型:${itemData.type} | 持有数量:${warehouseItem.quantity}`,
|
|
10804
|
-
`效果:${itemData.effects}
|
|
10818
|
+
`效果:${itemData.effects}`
|
|
10819
|
+
];
|
|
10820
|
+
if (isUpgradable) {
|
|
10821
|
+
itemLines.push(`升级加成:${bonusValue}%`);
|
|
10822
|
+
}
|
|
10823
|
+
itemLines.push(
|
|
10805
10824
|
`描述:${itemData.description}`,
|
|
10806
10825
|
"――――――――――――――"
|
|
10807
|
-
|
|
10826
|
+
);
|
|
10827
|
+
return itemLines.join("\n");
|
|
10808
10828
|
}).join("\n")
|
|
10809
10829
|
);
|
|
10810
10830
|
}
|
|
@@ -10939,7 +10959,7 @@ ${Spacestationtechnology.map((t) => t.techname).join("、")}`;
|
|
|
10939
10959
|
totalMined: 0
|
|
10940
10960
|
// 初始化总收益
|
|
10941
10961
|
});
|
|
10942
|
-
return "⛏️ 首次挖矿作业已开始,请至少等待1
|
|
10962
|
+
return "⛏️ 首次挖矿作业已开始,请至少等待1小时。\n💡 提示:基础收益为每半小时4枚金币";
|
|
10943
10963
|
}
|
|
10944
10964
|
const nowtime = /* @__PURE__ */ new Date();
|
|
10945
10965
|
const chinaStart = record.startTime;
|
|
@@ -10953,29 +10973,28 @@ ${Spacestationtechnology.map((t) => t.techname).join("、")}`;
|
|
|
10953
10973
|
`🕒 开始时间:${record.startTime.toLocaleString("zh-CN", { hour12: false })}`,
|
|
10954
10974
|
`⏱️ 当前时间:${nowtime.toLocaleString("zh-CN", { hour12: false })}`,
|
|
10955
10975
|
`⏳ 还需等待:${remaining}分钟`,
|
|
10956
|
-
`💡
|
|
10957
|
-
基础收益为每半小时4枚金币`
|
|
10976
|
+
`💡 提示:基础收益为每半小时4枚金币`
|
|
10958
10977
|
].join("\n");
|
|
10959
10978
|
}
|
|
10960
10979
|
let halfHours = Math.floor(duration / 30);
|
|
10961
10980
|
let base = halfHours * 4;
|
|
10962
|
-
const maxHalfHours = career
|
|
10981
|
+
const maxHalfHours = career?.group === "人类联盟" && techLevel === 5 ? 96 : 48;
|
|
10963
10982
|
halfHours = Math.min(halfHours, maxHalfHours);
|
|
10964
10983
|
base = Math.min(base, maxHalfHours * 4);
|
|
10965
10984
|
let techBonusRate = 0;
|
|
10966
10985
|
let careerBonusRate = 0;
|
|
10967
10986
|
let shipBonusRate = 0;
|
|
10968
10987
|
let minerBonusRate = 0;
|
|
10969
|
-
if (career
|
|
10988
|
+
if (career?.group === "人类联盟") {
|
|
10970
10989
|
const baseTechRates = [0, 0.1, 0.2, 0.3, 0.4, 0.5];
|
|
10971
10990
|
techBonusRate = baseTechRates[Math.min(techLevel, 5)];
|
|
10972
10991
|
const techCareers = ["深空矿工", "情报副官"];
|
|
10973
|
-
if (techCareers.includes(career
|
|
10992
|
+
if (techCareers.includes(career?.career)) {
|
|
10974
10993
|
const careerBonusRates = [0, 0.1, 0.2, 0.3, 0.4, 0.5];
|
|
10975
10994
|
careerBonusRate = careerBonusRates[Math.min(techLevel, 5)];
|
|
10976
10995
|
}
|
|
10977
10996
|
}
|
|
10978
|
-
if (career
|
|
10997
|
+
if (career?.career === "深空矿工") {
|
|
10979
10998
|
minerBonusRate = 0.5;
|
|
10980
10999
|
}
|
|
10981
11000
|
let shipName = "";
|
|
@@ -11048,12 +11067,12 @@ ${Spacestationtechnology.map((t) => t.techname).join("、")}`;
|
|
|
11048
11067
|
if (hasMinerBonus) {
|
|
11049
11068
|
reportLines.push(`▸ ⛏️ 深空矿工专业加成:+${(minerBonusRate * 100).toFixed(0)}%金币`);
|
|
11050
11069
|
}
|
|
11051
|
-
if (techLevel === 5 && career
|
|
11070
|
+
if (techLevel === 5 && career?.group === "人类联盟") {
|
|
11052
11071
|
reportLines.push(`▸ ⏱️ 单次挖矿时间上限增加至48小时`);
|
|
11053
11072
|
}
|
|
11054
11073
|
}
|
|
11055
11074
|
reportLines.push(`🏆 历史总挖矿收益:${record.totalMined + total}金币`);
|
|
11056
|
-
reportLines.push("💡
|
|
11075
|
+
reportLines.push("💡 已自动开始新一轮挖矿");
|
|
11057
11076
|
return reportLines.join("\n");
|
|
11058
11077
|
});
|
|
11059
11078
|
ctx.command("ggcevo/任务 [name]").usage('输入"任务"查看所有任务列表,或"任务 任务名称"查看详细任务信息').action(async ({ session }, name2) => {
|
|
@@ -11419,10 +11438,7 @@ ${Spacestationtechnology.map((t) => t.techname).join("、")}`;
|
|
|
11419
11438
|
return "⛔ 您已被列入黑名单。";
|
|
11420
11439
|
}
|
|
11421
11440
|
const [career] = await ctx.database.get("ggcevo_careers", { handle });
|
|
11422
|
-
const
|
|
11423
|
-
if (!allowedGroups.includes(career.group)) {
|
|
11424
|
-
}
|
|
11425
|
-
const careerName = career.career;
|
|
11441
|
+
const careerName = career?.career;
|
|
11426
11442
|
const careerCoinBonus = careerName === "总工程师" ? 50 : 0;
|
|
11427
11443
|
const [shipRecord] = await ctx.database.get("ggcevo_spaceship", { handle });
|
|
11428
11444
|
let shipBonus = 0;
|
|
@@ -11457,7 +11473,7 @@ ${Spacestationtechnology.map((t) => t.techname).join("、")}`;
|
|
|
11457
11473
|
const techLevel = techReactor?.level || 0;
|
|
11458
11474
|
let techBonusRate = 0;
|
|
11459
11475
|
let careerBonusRate = 0;
|
|
11460
|
-
if (career
|
|
11476
|
+
if (career?.group === "人类联盟" && techLevel > 0) {
|
|
11461
11477
|
const baseRates = [0, 0.1, 0.2, 0.3, 0.4, 0.5];
|
|
11462
11478
|
techBonusRate = baseRates[techLevel];
|
|
11463
11479
|
const specialCareers = ["总工程师", "情报副官"];
|
|
@@ -11474,23 +11490,44 @@ ${Spacestationtechnology.map((t) => t.techname).join("、")}`;
|
|
|
11474
11490
|
`🌌 星系:${record.galaxy}`,
|
|
11475
11491
|
`⏱️ 开始时间:${record.startTime.toLocaleString("zh-CN", { hour12: false })}`,
|
|
11476
11492
|
`⏳ 剩余时间:${Math.floor(remainingMinutes / 60)}小时${remainingMinutes % 60}分钟`,
|
|
11477
|
-
"💡 提示:探索将持续12
|
|
11493
|
+
"💡 提示:探索将持续12小时,完成后才可再次进行探索"
|
|
11478
11494
|
].join("\n");
|
|
11479
11495
|
} else {
|
|
11480
11496
|
const returnsIncrement = (record.returns || 0) + 1;
|
|
11481
11497
|
const galaxyData2 = galaxy[record.galaxy];
|
|
11482
11498
|
let successRate = galaxyData2.success;
|
|
11483
|
-
if (career
|
|
11484
|
-
else if (career
|
|
11499
|
+
if (career?.group === "人类联盟" && record.galaxy === "联盟星系") successRate += 0.1;
|
|
11500
|
+
else if (career?.group === "辛迪加海盗" && record.galaxy === "辛迪加星系") successRate += 0.1;
|
|
11485
11501
|
if (stealthShipEffectAdded) successRate += 0.2;
|
|
11486
11502
|
successRate = Math.min(successRate, 1);
|
|
11487
11503
|
let baseCoinReward = Math.floor(Math.random() * 51) + 50;
|
|
11488
11504
|
baseCoinReward = Math.floor(baseCoinReward * galaxyData2.bonus);
|
|
11489
|
-
|
|
11490
|
-
|
|
11505
|
+
const bonusEffects = [];
|
|
11506
|
+
if (shipBonus) {
|
|
11507
|
+
let shipType = "";
|
|
11508
|
+
if (shipRecord.id === 2) shipType = "TX-12S隐形巡洋舰";
|
|
11509
|
+
else if (shipRecord.id === 3) shipType = "TX-12A突击巡洋舰";
|
|
11510
|
+
else if (shipRecord.id === 4) shipType = "庞兽号歼星舰";
|
|
11511
|
+
bonusEffects.push(`▸ 🚀 ${shipType}:+${shipBonus}%金币`);
|
|
11512
|
+
}
|
|
11513
|
+
if (record.plunderbonus) {
|
|
11514
|
+
const sign = record.plunderbonus > 0 ? "+" : "";
|
|
11515
|
+
bonusEffects.push(`▸ ⚔️ 掠夺事件:${sign}${record.plunderbonus}%金币`);
|
|
11516
|
+
}
|
|
11517
|
+
const combinedTechBonus = techBonusRate + careerBonusRate;
|
|
11518
|
+
if (combinedTechBonus > 0) {
|
|
11519
|
+
bonusEffects.push(`▸ ⚙️ 反应堆科技Lv.${techLevel}:+${(combinedTechBonus * 100).toFixed(0)}%金币`);
|
|
11520
|
+
}
|
|
11521
|
+
if (careerCoinBonus) {
|
|
11522
|
+
bonusEffects.push(`▸ 🎓 总工程师职业:+${careerCoinBonus}%金币`);
|
|
11523
|
+
}
|
|
11524
|
+
const totalBonusMultiplier = 1 + (shipBonus + (record.plunderbonus || 0) + (techBonusRate + careerBonusRate) * 100 + careerCoinBonus) / 100;
|
|
11525
|
+
let finalCoin = Math.floor(baseCoinReward * totalBonusMultiplier);
|
|
11491
11526
|
const isSuccess = Math.random() < successRate;
|
|
11492
|
-
if (!isSuccess)
|
|
11493
|
-
|
|
11527
|
+
if (!isSuccess) {
|
|
11528
|
+
finalCoin = Math.floor(finalCoin * 0.5);
|
|
11529
|
+
bonusEffects.push(`▸ ⚠️ 探索失败:金币奖励减半`);
|
|
11530
|
+
}
|
|
11494
11531
|
const [signRecord] = await ctx.database.get("ggcevo_sign", { handle });
|
|
11495
11532
|
let newTotalRewards = finalCoin;
|
|
11496
11533
|
if (signRecord) {
|
|
@@ -11506,12 +11543,12 @@ ${Spacestationtechnology.map((t) => t.techname).join("、")}`;
|
|
|
11506
11543
|
}
|
|
11507
11544
|
let itemRewards = [];
|
|
11508
11545
|
if (isSuccess) {
|
|
11509
|
-
const
|
|
11510
|
-
{ id: 2, name: "闪光弹" },
|
|
11511
|
-
{ id: 4, name: "脉冲手雷" }
|
|
11546
|
+
const possibleItems = [
|
|
11547
|
+
{ id: 2, name: "闪光弹", chance: 0.05 },
|
|
11548
|
+
{ id: 4, name: "脉冲手雷", chance: 0.05 }
|
|
11512
11549
|
];
|
|
11513
|
-
for (const item of
|
|
11514
|
-
if (Math.random() <
|
|
11550
|
+
for (const item of possibleItems) {
|
|
11551
|
+
if (Math.random() < item.chance) {
|
|
11515
11552
|
const [existing] = await ctx.database.get("ggcevo_warehouse", {
|
|
11516
11553
|
handle,
|
|
11517
11554
|
itemId: item.id
|
|
@@ -11540,16 +11577,20 @@ ${Spacestationtechnology.map((t) => t.techname).join("、")}`;
|
|
|
11540
11577
|
returns: returnsIncrement,
|
|
11541
11578
|
plunderbonus: 0
|
|
11542
11579
|
});
|
|
11543
|
-
|
|
11580
|
+
const resultMessage = [
|
|
11544
11581
|
isSuccess ? "🎉 探索成功!" : "⚠️ 探索失败!",
|
|
11545
11582
|
`🌌 星系:${record.galaxy}`,
|
|
11546
11583
|
`🔮 实际成功率:${(successRate * 100).toFixed(1)}%`,
|
|
11547
|
-
`🏆 已探索次数:${returnsIncrement}`,
|
|
11548
|
-
"--------------------------------",
|
|
11549
11584
|
`💰 金币 +${finalCoin}`,
|
|
11550
|
-
...itemRewards.length > 0 ? [`📦
|
|
11551
|
-
"
|
|
11552
|
-
|
|
11585
|
+
...itemRewards.length > 0 ? [`📦 获得物品:${itemRewards.join("、")}`] : [],
|
|
11586
|
+
"",
|
|
11587
|
+
"⚡ 加成效果:",
|
|
11588
|
+
...bonusEffects,
|
|
11589
|
+
"",
|
|
11590
|
+
`🏆 已探索次数:${returnsIncrement}`,
|
|
11591
|
+
"💡 输入“探索 星系名称”开始下一轮探索"
|
|
11592
|
+
].filter(Boolean).join("\n");
|
|
11593
|
+
return resultMessage;
|
|
11553
11594
|
}
|
|
11554
11595
|
}
|
|
11555
11596
|
if (!galaxyName) {
|
|
@@ -11577,6 +11618,7 @@ ${Spacestationtechnology.map((t) => t.techname).join("、")}`;
|
|
|
11577
11618
|
const basePlunderRate = 0.2;
|
|
11578
11619
|
const actualPlunderRate = basePlunderRate + plunderRateBonus / 100;
|
|
11579
11620
|
const canPlunder = Math.random() < actualPlunderRate;
|
|
11621
|
+
let plunderHandled = false;
|
|
11580
11622
|
if (canPlunder) {
|
|
11581
11623
|
const explorers = await ctx.database.get("ggcevo_explore", {
|
|
11582
11624
|
galaxy: galaxyName,
|
|
@@ -11595,52 +11637,67 @@ ${Spacestationtechnology.map((t) => t.techname).join("、")}`;
|
|
|
11595
11637
|
});
|
|
11596
11638
|
if (plunderTargets.length > 0) {
|
|
11597
11639
|
const target = plunderTargets[Math.floor(Math.random() * plunderTargets.length)];
|
|
11598
|
-
|
|
11599
|
-
|
|
11600
|
-
if (
|
|
11601
|
-
|
|
11602
|
-
|
|
11603
|
-
|
|
11604
|
-
|
|
11605
|
-
|
|
11606
|
-
|
|
11607
|
-
|
|
11608
|
-
|
|
11609
|
-
|
|
11610
|
-
|
|
11611
|
-
|
|
11640
|
+
let baseSuccessRate = 50;
|
|
11641
|
+
if (isBehemoth) baseSuccessRate += 30;
|
|
11642
|
+
if (shipRecord?.id === 3) baseSuccessRate += 10;
|
|
11643
|
+
await session.send([
|
|
11644
|
+
`❗ 您在探索过程中发现了【${target.name}】的飞船,是否掠夺?`,
|
|
11645
|
+
`🎯 掠夺成功率:${baseSuccessRate}%`,
|
|
11646
|
+
`⏱️ (30秒内输入"是"来进行掠夺)`
|
|
11647
|
+
].join("\n"));
|
|
11648
|
+
try {
|
|
11649
|
+
const response = await session.prompt(3e4);
|
|
11650
|
+
if (response === "是") {
|
|
11651
|
+
let baseSuccessRate2 = 0.5;
|
|
11652
|
+
if (isBehemoth) baseSuccessRate2 += 0.3;
|
|
11653
|
+
if (shipRecord?.id === 3) baseSuccessRate2 += 0.1;
|
|
11654
|
+
const success = Math.random() < baseSuccessRate2;
|
|
11655
|
+
let playerBonus, targetBonus;
|
|
11656
|
+
if (success) {
|
|
11657
|
+
playerBonus = 20;
|
|
11658
|
+
targetBonus = -20;
|
|
11659
|
+
} else {
|
|
11660
|
+
playerBonus = -20;
|
|
11661
|
+
targetBonus = 20;
|
|
11662
|
+
}
|
|
11663
|
+
await ctx.database.upsert("ggcevo_explore", [{
|
|
11664
|
+
handle,
|
|
11665
|
+
name: name2,
|
|
11666
|
+
startTime: /* @__PURE__ */ new Date(),
|
|
11667
|
+
galaxy: galaxyName,
|
|
11668
|
+
returns: record?.returns || 0,
|
|
11669
|
+
plunderbonus: playerBonus,
|
|
11670
|
+
status: "探索中"
|
|
11671
|
+
}], ["handle"]);
|
|
11672
|
+
const [targetRecord] = await ctx.database.get("ggcevo_explore", { handle: target.handle });
|
|
11673
|
+
await ctx.database.set("ggcevo_explore", { handle: target.handle }, {
|
|
11674
|
+
plunderbonus: (targetRecord.plunderbonus || 0) + targetBonus
|
|
11675
|
+
});
|
|
11676
|
+
await session.send(
|
|
11677
|
+
success ? `✅ 掠夺成功!您获得${playerBonus}%金币加成,${target.name}的金币收益被降低了20%。` : `❌ 掠夺失败!您的金币收益被降低20%,${target.name}获得了20%的金币收益加成。`
|
|
11678
|
+
);
|
|
11679
|
+
plunderHandled = true;
|
|
11612
11680
|
}
|
|
11613
|
-
|
|
11614
|
-
handle,
|
|
11615
|
-
name: name2,
|
|
11616
|
-
startTime: /* @__PURE__ */ new Date(),
|
|
11617
|
-
galaxy: galaxyName,
|
|
11618
|
-
returns: record?.returns || 0,
|
|
11619
|
-
plunderbonus: playerBonus,
|
|
11620
|
-
status: "探索中"
|
|
11621
|
-
}], ["handle"]);
|
|
11622
|
-
const [targetRecord] = await ctx.database.get("ggcevo_explore", { handle: target.handle });
|
|
11623
|
-
await ctx.database.set("ggcevo_explore", { handle: target.handle }, {
|
|
11624
|
-
plunderbonus: (targetRecord.plunderbonus || 0) + targetBonus
|
|
11625
|
-
});
|
|
11626
|
-
return success ? `✅ 掠夺成功!您获得${playerBonus}%金币加成,${target.name}的金币收益被降低了20%。` : `❌ 掠夺失败!您的金币收益被降低20%,${target.name}获得了20%的金币收益加成。`;
|
|
11681
|
+
} catch (error) {
|
|
11627
11682
|
}
|
|
11628
11683
|
}
|
|
11629
11684
|
}
|
|
11630
11685
|
}
|
|
11631
|
-
|
|
11632
|
-
|
|
11633
|
-
|
|
11634
|
-
|
|
11635
|
-
|
|
11636
|
-
|
|
11637
|
-
|
|
11638
|
-
|
|
11639
|
-
|
|
11686
|
+
if (!plunderHandled) {
|
|
11687
|
+
await ctx.database.upsert("ggcevo_explore", [{
|
|
11688
|
+
handle,
|
|
11689
|
+
name: name2,
|
|
11690
|
+
startTime: /* @__PURE__ */ new Date(),
|
|
11691
|
+
galaxy: galaxyName,
|
|
11692
|
+
returns: record?.returns || 0,
|
|
11693
|
+
plunderbonus: 0,
|
|
11694
|
+
status: "探索中"
|
|
11695
|
+
}], ["handle"]);
|
|
11696
|
+
}
|
|
11640
11697
|
const galaxyData = galaxy[galaxyName];
|
|
11641
11698
|
let estimatedRate = galaxyData.success;
|
|
11642
|
-
if (career
|
|
11643
|
-
if (career
|
|
11699
|
+
if (career?.group === "人类联盟" && galaxyName === "联盟星系") estimatedRate += 0.1;
|
|
11700
|
+
else if (career?.group === "辛迪加海盗" && galaxyName === "辛迪加星系") estimatedRate += 0.1;
|
|
11644
11701
|
if (isStealthShip) estimatedRate += 0.2;
|
|
11645
11702
|
estimatedRate = Math.min(estimatedRate, 1) * 100;
|
|
11646
11703
|
return [
|
|
@@ -11648,7 +11705,7 @@ ${Spacestationtechnology.map((t) => t.techname).join("、")}`;
|
|
|
11648
11705
|
`⏱️ 开始时间:${(/* @__PURE__ */ new Date()).toLocaleString("zh-CN", { hour12: false })}`,
|
|
11649
11706
|
`⏳ 持续时间:12小时`,
|
|
11650
11707
|
`📊 预计成功率:${estimatedRate.toFixed(0)}%`,
|
|
11651
|
-
"💡
|
|
11708
|
+
"💡 探索可获得50-100的基础金币"
|
|
11652
11709
|
].join("\n");
|
|
11653
11710
|
});
|
|
11654
11711
|
const shipIdToName = {};
|
|
@@ -11771,16 +11828,50 @@ ${Spacestationtechnology.map((t) => t.techname).join("、")}`;
|
|
|
11771
11828
|
// 新增的提示
|
|
11772
11829
|
].join("\n");
|
|
11773
11830
|
});
|
|
11774
|
-
ctx.command("ggcevo/升级物品 [itemName]", "升级辛迪加海盗物品").action(async ({ session }, itemName) => {
|
|
11831
|
+
ctx.command("ggcevo/升级物品 [itemName]", "升级辛迪加海盗物品").usage('输入"升级物品"查看可升级列表,或"升级物品 物品名称"进行升级').action(async ({ session }, itemName) => {
|
|
11775
11832
|
const [profile] = await ctx.database.get("sc2arcade_player", { userId: session.userId });
|
|
11776
11833
|
if (!profile) return "🔒 需要先绑定游戏句柄。";
|
|
11777
11834
|
const handle = `${profile.regionId}-S2-${profile.realmId}-${profile.profileId}`;
|
|
11778
|
-
if (!itemName) return "请输入要升级的物品名称,例如:升级物品 自动采掘机器人";
|
|
11779
11835
|
const [career] = await ctx.database.get("ggcevo_careers", { handle });
|
|
11780
11836
|
if (!career) return "🚫 未查询到您的阵营信息";
|
|
11781
11837
|
if (career.group !== "辛迪加海盗") {
|
|
11782
11838
|
return `🚫 仅限辛迪加海盗阵营使用`;
|
|
11783
11839
|
}
|
|
11840
|
+
const isCommander = career.career === "指挥官";
|
|
11841
|
+
if (!itemName) {
|
|
11842
|
+
const warehouseItems2 = await ctx.database.get("ggcevo_warehouse", { handle });
|
|
11843
|
+
const upgradableItems = [];
|
|
11844
|
+
for (const item of warehouseItems2) {
|
|
11845
|
+
const [itemName2, itemConfig3] = Object.entries(SyndicatedItems).find(([name2, config2]) => config2.id === item.itemId) || [];
|
|
11846
|
+
if (!itemName2 || !itemConfig3) continue;
|
|
11847
|
+
const upgradeConfig2 = itemupgrades.find((cfg) => cfg.name === itemName2);
|
|
11848
|
+
if (!upgradeConfig2) continue;
|
|
11849
|
+
if (item.bonus >= upgradeConfig2.maxBonus) continue;
|
|
11850
|
+
const baseCost = upgradeConfig2.upgradeCostBase;
|
|
11851
|
+
const actualCost = isCommander ? Math.floor(baseCost * 0.5) : baseCost;
|
|
11852
|
+
upgradableItems.push({
|
|
11853
|
+
name: itemName2,
|
|
11854
|
+
currentBonus: item.bonus,
|
|
11855
|
+
maxBonus: upgradeConfig2.maxBonus,
|
|
11856
|
+
cost: actualCost,
|
|
11857
|
+
discount: isCommander ? `(原价: ${baseCost})` : ""
|
|
11858
|
+
});
|
|
11859
|
+
}
|
|
11860
|
+
if (upgradableItems.length === 0) {
|
|
11861
|
+
return "🚫 当前没有可升级的物品";
|
|
11862
|
+
}
|
|
11863
|
+
const msgLines = [
|
|
11864
|
+
"💎 可升级物品列表",
|
|
11865
|
+
"====================",
|
|
11866
|
+
...upgradableItems.map((item) => {
|
|
11867
|
+
return `▸ ${item.name}:当前 ${item.currentBonus}%/${item.maxBonus}%
|
|
11868
|
+
升级消耗:${item.cost}红晶 ${item.discount}`;
|
|
11869
|
+
}),
|
|
11870
|
+
"====================",
|
|
11871
|
+
`使用"升级物品 物品名称"进行升级`
|
|
11872
|
+
];
|
|
11873
|
+
return msgLines.join("\n");
|
|
11874
|
+
}
|
|
11784
11875
|
const itemConfig2 = SyndicatedItems[itemName];
|
|
11785
11876
|
if (!itemConfig2) return `🚫 未找到物品【${itemName}】的配置信息`;
|
|
11786
11877
|
const upgradeConfig = itemupgrades.find((cfg) => cfg.name === itemName);
|
|
@@ -11798,10 +11889,10 @@ ${Spacestationtechnology.map((t) => t.techname).join("、")}`;
|
|
|
11798
11889
|
}
|
|
11799
11890
|
let upgradeCost = upgradeConfig.upgradeCostBase;
|
|
11800
11891
|
let discountNotice = "";
|
|
11801
|
-
if (
|
|
11892
|
+
if (isCommander) {
|
|
11802
11893
|
upgradeCost = Math.floor(upgradeCost * 0.5);
|
|
11803
11894
|
discountNotice = `
|
|
11804
|
-
✨ 指挥官职业生效!实际消耗: ${upgradeCost} (
|
|
11895
|
+
✨ 指挥官职业生效!实际消耗: ${upgradeCost} (原价:${upgradeConfig.upgradeCostBase})`;
|
|
11805
11896
|
}
|
|
11806
11897
|
if (career.redcrystal < upgradeCost) {
|
|
11807
11898
|
return `🚫 红晶不足!升级需要${upgradeCost}红晶,您当前有${career.redcrystal}红晶`;
|