koishi-plugin-ggcevo-game 1.5.31 → 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.
@@ -11,7 +11,6 @@ export declare const Spacestationtechnology: {
11
11
  }[];
12
12
  }[];
13
13
  export declare const itemupgrades: {
14
- id: number;
15
14
  name: string;
16
15
  upgradeCostBase: number;
17
16
  minUpgrade: number;
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%;可使用红晶升级(每次升级提高5%-10%,最多提高100%)"
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
- return [
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
- ].join("\n");
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小时后才可收获。\n提示:基础收益为每半小时4枚金币";
10962
+ return "⛏️ 首次挖矿作业已开始,请至少等待1小时。\n💡 提示:基础收益为每半小时4枚金币";
10943
10963
  }
10944
10964
  const nowtime = /* @__PURE__ */ new Date();
10945
10965
  const chinaStart = record.startTime;
@@ -10953,8 +10973,7 @@ ${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
- `💡 提示:本轮挖矿1小时后才可收获并自动开始下一轮挖矿
10957
- 基础收益为每半小时4枚金币`
10976
+ `💡 提示:基础收益为每半小时4枚金币`
10958
10977
  ].join("\n");
10959
10978
  }
10960
10979
  let halfHours = Math.floor(duration / 30);
@@ -11053,7 +11072,7 @@ ${Spacestationtechnology.map((t) => t.techname).join("、")}`;
11053
11072
  }
11054
11073
  }
11055
11074
  reportLines.push(`🏆 历史总挖矿收益:${record.totalMined + total}金币`);
11056
- reportLines.push("💡 已自动开始下一轮挖矿\n基础收益为每半小时4枚金币");
11075
+ reportLines.push("💡 已自动开始新一轮挖矿");
11057
11076
  return reportLines.join("\n");
11058
11077
  });
11059
11078
  ctx.command("ggcevo/任务 [name]").usage('输入"任务"查看所有任务列表,或"任务 任务名称"查看详细任务信息').action(async ({ session }, name2) => {
@@ -11471,7 +11490,7 @@ ${Spacestationtechnology.map((t) => t.techname).join("、")}`;
11471
11490
  `🌌 星系:${record.galaxy}`,
11472
11491
  `⏱️ 开始时间:${record.startTime.toLocaleString("zh-CN", { hour12: false })}`,
11473
11492
  `⏳ 剩余时间:${Math.floor(remainingMinutes / 60)}小时${remainingMinutes % 60}分钟`,
11474
- "💡 提示:探索将持续12小时,完成后可再次进行探索"
11493
+ "💡 提示:探索将持续12小时,完成后才可再次进行探索"
11475
11494
  ].join("\n");
11476
11495
  } else {
11477
11496
  const returnsIncrement = (record.returns || 0) + 1;
@@ -11483,11 +11502,32 @@ ${Spacestationtechnology.map((t) => t.techname).join("、")}`;
11483
11502
  successRate = Math.min(successRate, 1);
11484
11503
  let baseCoinReward = Math.floor(Math.random() * 51) + 50;
11485
11504
  baseCoinReward = Math.floor(baseCoinReward * galaxyData2.bonus);
11486
- let totalBonus = shipBonus + (record.plunderbonus || 0) + (techBonusRate + careerBonusRate) * 100 + careerCoinBonus;
11487
- let finalCoin = baseCoinReward * (1 + totalBonus / 100);
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);
11488
11526
  const isSuccess = Math.random() < successRate;
11489
- if (!isSuccess) finalCoin *= 0.5;
11490
- finalCoin = Math.floor(finalCoin);
11527
+ if (!isSuccess) {
11528
+ finalCoin = Math.floor(finalCoin * 0.5);
11529
+ bonusEffects.push(`▸ ⚠️ 探索失败:金币奖励减半`);
11530
+ }
11491
11531
  const [signRecord] = await ctx.database.get("ggcevo_sign", { handle });
11492
11532
  let newTotalRewards = finalCoin;
11493
11533
  if (signRecord) {
@@ -11503,12 +11543,12 @@ ${Spacestationtechnology.map((t) => t.techname).join("、")}`;
11503
11543
  }
11504
11544
  let itemRewards = [];
11505
11545
  if (isSuccess) {
11506
- const itemsToCheck = [
11507
- { id: 2, name: "闪光弹" },
11508
- { id: 4, name: "脉冲手雷" }
11546
+ const possibleItems = [
11547
+ { id: 2, name: "闪光弹", chance: 0.05 },
11548
+ { id: 4, name: "脉冲手雷", chance: 0.05 }
11509
11549
  ];
11510
- for (const item of itemsToCheck) {
11511
- if (Math.random() < 0.05) {
11550
+ for (const item of possibleItems) {
11551
+ if (Math.random() < item.chance) {
11512
11552
  const [existing] = await ctx.database.get("ggcevo_warehouse", {
11513
11553
  handle,
11514
11554
  itemId: item.id
@@ -11537,16 +11577,20 @@ ${Spacestationtechnology.map((t) => t.techname).join("、")}`;
11537
11577
  returns: returnsIncrement,
11538
11578
  plunderbonus: 0
11539
11579
  });
11540
- return [
11580
+ const resultMessage = [
11541
11581
  isSuccess ? "🎉 探索成功!" : "⚠️ 探索失败!",
11542
11582
  `🌌 星系:${record.galaxy}`,
11543
11583
  `🔮 实际成功率:${(successRate * 100).toFixed(1)}%`,
11544
- `🏆 已探索次数:${returnsIncrement}`,
11545
- "--------------------------------",
11546
11584
  `💰 金币 +${finalCoin}`,
11547
- ...itemRewards.length > 0 ? [`📦 获得:${itemRewards.join("、")}`] : [],
11548
- "💡 已自动结束探索任务"
11549
- ].join("\n");
11585
+ ...itemRewards.length > 0 ? [`📦 获得物品:${itemRewards.join("、")}`] : [],
11586
+ "",
11587
+ "⚡ 加成效果:",
11588
+ ...bonusEffects,
11589
+ "",
11590
+ `🏆 已探索次数:${returnsIncrement}`,
11591
+ "💡 输入“探索 星系名称”开始下一轮探索"
11592
+ ].filter(Boolean).join("\n");
11593
+ return resultMessage;
11550
11594
  }
11551
11595
  }
11552
11596
  if (!galaxyName) {
@@ -11574,6 +11618,7 @@ ${Spacestationtechnology.map((t) => t.techname).join("、")}`;
11574
11618
  const basePlunderRate = 0.2;
11575
11619
  const actualPlunderRate = basePlunderRate + plunderRateBonus / 100;
11576
11620
  const canPlunder = Math.random() < actualPlunderRate;
11621
+ let plunderHandled = false;
11577
11622
  if (canPlunder) {
11578
11623
  const explorers = await ctx.database.get("ggcevo_explore", {
11579
11624
  galaxy: galaxyName,
@@ -11592,52 +11637,67 @@ ${Spacestationtechnology.map((t) => t.techname).join("、")}`;
11592
11637
  });
11593
11638
  if (plunderTargets.length > 0) {
11594
11639
  const target = plunderTargets[Math.floor(Math.random() * plunderTargets.length)];
11595
- await session.send(`❗ 您在探索过程中发现了【${target.name}】的飞船,是否掠夺?(30秒内输入"是"来进行掠夺)`);
11596
- const response = await session.prompt(3e4);
11597
- if (response === "是") {
11598
- let baseSuccessRate = 0.5;
11599
- if (isBehemoth) baseSuccessRate += 0.3;
11600
- if (shipRecord?.id === 3) baseSuccessRate += 0.1;
11601
- const success = Math.random() < baseSuccessRate;
11602
- let playerBonus, targetBonus;
11603
- if (success) {
11604
- playerBonus = 20;
11605
- targetBonus = -20;
11606
- } else {
11607
- playerBonus = -20;
11608
- targetBonus = 20;
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;
11609
11680
  }
11610
- await ctx.database.upsert("ggcevo_explore", [{
11611
- handle,
11612
- name: name2,
11613
- startTime: /* @__PURE__ */ new Date(),
11614
- galaxy: galaxyName,
11615
- returns: record?.returns || 0,
11616
- plunderbonus: playerBonus,
11617
- status: "探索中"
11618
- }], ["handle"]);
11619
- const [targetRecord] = await ctx.database.get("ggcevo_explore", { handle: target.handle });
11620
- await ctx.database.set("ggcevo_explore", { handle: target.handle }, {
11621
- plunderbonus: (targetRecord.plunderbonus || 0) + targetBonus
11622
- });
11623
- return success ? `✅ 掠夺成功!您获得${playerBonus}%金币加成,${target.name}的金币收益被降低了20%。` : `❌ 掠夺失败!您的金币收益被降低20%,${target.name}获得了20%的金币收益加成。`;
11681
+ } catch (error) {
11624
11682
  }
11625
11683
  }
11626
11684
  }
11627
11685
  }
11628
- await ctx.database.upsert("ggcevo_explore", [{
11629
- handle,
11630
- name: name2,
11631
- startTime: /* @__PURE__ */ new Date(),
11632
- galaxy: galaxyName,
11633
- returns: record?.returns || 0,
11634
- plunderbonus: 0,
11635
- status: "探索中"
11636
- }], ["handle"]);
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
+ }
11637
11697
  const galaxyData = galaxy[galaxyName];
11638
11698
  let estimatedRate = galaxyData.success;
11639
11699
  if (career?.group === "人类联盟" && galaxyName === "联盟星系") estimatedRate += 0.1;
11640
- if (career?.group === "辛迪加海盗" && galaxyName === "辛迪加星系") estimatedRate += 0.1;
11700
+ else if (career?.group === "辛迪加海盗" && galaxyName === "辛迪加星系") estimatedRate += 0.1;
11641
11701
  if (isStealthShip) estimatedRate += 0.2;
11642
11702
  estimatedRate = Math.min(estimatedRate, 1) * 100;
11643
11703
  return [
@@ -11645,7 +11705,7 @@ ${Spacestationtechnology.map((t) => t.techname).join("、")}`;
11645
11705
  `⏱️ 开始时间:${(/* @__PURE__ */ new Date()).toLocaleString("zh-CN", { hour12: false })}`,
11646
11706
  `⏳ 持续时间:12小时`,
11647
11707
  `📊 预计成功率:${estimatedRate.toFixed(0)}%`,
11648
- "💡 探索完成后将自动获得奖励"
11708
+ "💡 探索可获得50-100的基础金币"
11649
11709
  ].join("\n");
11650
11710
  });
11651
11711
  const shipIdToName = {};
@@ -11768,16 +11828,50 @@ ${Spacestationtechnology.map((t) => t.techname).join("、")}`;
11768
11828
  // 新增的提示
11769
11829
  ].join("\n");
11770
11830
  });
11771
- ctx.command("ggcevo/升级物品 [itemName]", "升级辛迪加海盗物品").action(async ({ session }, itemName) => {
11831
+ ctx.command("ggcevo/升级物品 [itemName]", "升级辛迪加海盗物品").usage('输入"升级物品"查看可升级列表,或"升级物品 物品名称"进行升级').action(async ({ session }, itemName) => {
11772
11832
  const [profile] = await ctx.database.get("sc2arcade_player", { userId: session.userId });
11773
11833
  if (!profile) return "🔒 需要先绑定游戏句柄。";
11774
11834
  const handle = `${profile.regionId}-S2-${profile.realmId}-${profile.profileId}`;
11775
- if (!itemName) return "请输入要升级的物品名称,例如:升级物品 自动采掘机器人";
11776
11835
  const [career] = await ctx.database.get("ggcevo_careers", { handle });
11777
11836
  if (!career) return "🚫 未查询到您的阵营信息";
11778
11837
  if (career.group !== "辛迪加海盗") {
11779
11838
  return `🚫 仅限辛迪加海盗阵营使用`;
11780
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
+ }
11781
11875
  const itemConfig2 = SyndicatedItems[itemName];
11782
11876
  if (!itemConfig2) return `🚫 未找到物品【${itemName}】的配置信息`;
11783
11877
  const upgradeConfig = itemupgrades.find((cfg) => cfg.name === itemName);
@@ -11795,7 +11889,7 @@ ${Spacestationtechnology.map((t) => t.techname).join("、")}`;
11795
11889
  }
11796
11890
  let upgradeCost = upgradeConfig.upgradeCostBase;
11797
11891
  let discountNotice = "";
11798
- if (career.career === "指挥官") {
11892
+ if (isCommander) {
11799
11893
  upgradeCost = Math.floor(upgradeCost * 0.5);
11800
11894
  discountNotice = `
11801
11895
  ✨ 指挥官职业生效!实际消耗: ${upgradeCost} (原价:${upgradeConfig.upgradeCostBase})`;
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.5.31",
4
+ "version": "1.6.0",
5
5
  "main": "lib/index.js",
6
6
  "typings": "lib/index.d.ts",
7
7
  "files": [