koishi-plugin-ggcevo-game 1.2.30 → 1.2.32

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.
Files changed (2) hide show
  1. package/lib/index.js +44 -13
  2. package/package.json +1 -1
package/lib/index.js CHANGED
@@ -1452,7 +1452,14 @@ ${itemDetails.join("\n")}`;
1452
1452
  sort: { rank: "desc" },
1453
1453
  limit: 20
1454
1454
  });
1455
+ let report = `=== ${currentSeason}赛季结算报告 ===
1456
+
1457
+ `;
1458
+ const rewardDetails = [];
1459
+ let positiveCount = 0;
1460
+ let negativeCount = 0;
1455
1461
  for (const [index, player] of rankedPlayers.entries()) {
1462
+ const rank = index + 1;
1456
1463
  const { coins, gold } = getRewardByRank(index + 1);
1457
1464
  const [backpack] = await ctx.database.get("ggcevo_backpack", {
1458
1465
  handle: player.handle,
@@ -1471,6 +1478,9 @@ ${itemDetails.join("\n")}`;
1471
1478
  const medalType = getMedalType(index + 1);
1472
1479
  const medalName = requiredMedals[medalType];
1473
1480
  const medalId = initDefaultItems[medalName].id;
1481
+ if (rank <= 3) {
1482
+ rewardDetails.push(`✦ 第${rank}名:${coins}枚咕咕币 + ${gold}枚金币 + ${requiredMedals[medalType]}`);
1483
+ }
1474
1484
  const [medalData] = await ctx.database.get("ggcevo_backpack", {
1475
1485
  handle: player.handle,
1476
1486
  itemId: medalId
@@ -1481,6 +1491,13 @@ ${itemDetails.join("\n")}`;
1481
1491
  quantity: (medalData?.quantity || 0) + 1
1482
1492
  }], ["handle", "itemId"]);
1483
1493
  }
1494
+ report += "🏆 精英奖励详情:\n";
1495
+ report += rewardDetails.join("\n") + "\n";
1496
+ report += `✦ 第4-10名:60枚咕咕币 + 2000枚金币 + ${requiredMedals.top10}
1497
+ `;
1498
+ report += `✦ 第11-20名:40枚咕咕币 + 1000枚金币 + ${requiredMedals.top20}
1499
+
1500
+ `;
1484
1501
  const otherPlayers = await ctx.database.get("ggcevo_rank", {
1485
1502
  Blacklist: false,
1486
1503
  rankseason: currentSeason,
@@ -1488,25 +1505,39 @@ ${itemDetails.join("\n")}`;
1488
1505
  rank: { $ne: 0 }
1489
1506
  });
1490
1507
  for (const player of otherPlayers) {
1491
- const gold = player.rank > 0 ? 250 : 100;
1508
+ if (player.rank > 0) positiveCount++;
1509
+ if (player.rank < 0) negativeCount++;
1510
+ const gold = player.rank > 0 ? 500 : 250;
1492
1511
  const [signData] = await ctx.database.get("ggcevo_sign", { handle: player.handle });
1493
1512
  await ctx.database.upsert("ggcevo_sign", [{
1494
1513
  handle: player.handle,
1495
1514
  totalRewards: (signData?.totalRewards || 0) + gold
1496
1515
  }], ["handle"]);
1497
1516
  }
1498
- return `${currentSeason}赛季胜点榜结算完成!前${rankedPlayers.length}名发放赛季奖励,${otherPlayers.length}人获得赛季参与奖。`;
1517
+ report += "🎉 参与奖励发放:\n";
1518
+ report += `✦ 积极玩家(分数>0):${positiveCount}人,每人获得500枚金币
1519
+ `;
1520
+ report += `✦ 奋斗玩家(分数<0):${negativeCount}人,每人获得250枚金币
1521
+
1522
+ `;
1523
+ report += `✅ 总计发放:
1524
+ `;
1525
+ report += `- 赛季奖励:${rankedPlayers.length}人
1526
+ `;
1527
+ report += `- 参与奖励:${otherPlayers.length}人`;
1528
+ await session.send(report);
1529
+ return `${currentSeason}赛季结算数据已更新!`;
1499
1530
  function getRewardByRank(rank) {
1500
1531
  return [
1501
- { coins: 100, gold: 2e3 },
1532
+ { coins: 100, gold: 4e3 },
1502
1533
  // 第1名
1503
- { coins: 90, gold: 1500 },
1534
+ { coins: 90, gold: 3500 },
1504
1535
  // 第2名
1505
- { coins: 80, gold: 1e3 },
1536
+ { coins: 80, gold: 3e3 },
1506
1537
  // 第3名
1507
- ...Array(7).fill({ coins: 60, gold: 750 }),
1538
+ ...Array(7).fill({ coins: 60, gold: 2e3 }),
1508
1539
  //4-10
1509
- ...Array(10).fill({ coins: 40, gold: 500 })
1540
+ ...Array(10).fill({ coins: 40, gold: 1e3 })
1510
1541
  //11-20
1511
1542
  ][rank - 1] || { coins: 0, gold: 0 };
1512
1543
  }
@@ -2677,13 +2708,13 @@ ${validTypes.join("、")}`;
2677
2708
  gold = 2e3;
2678
2709
  } else if (rank === 2) {
2679
2710
  guguCoins = 25;
2680
- gold = 1500;
2711
+ gold = 1750;
2681
2712
  } else if (rank === 3) {
2682
2713
  guguCoins = 20;
2683
- gold = 1e3;
2714
+ gold = 1500;
2684
2715
  } else if (rank <= 10) {
2685
2716
  guguCoins = 15;
2686
- gold = 750;
2717
+ gold = 1e3;
2687
2718
  } else {
2688
2719
  guguCoins = 10;
2689
2720
  gold = 500;
@@ -2704,12 +2735,12 @@ ${validTypes.join("、")}`;
2704
2735
  others.forEach((record) => {
2705
2736
  const key = record.handle;
2706
2737
  rewardMap.set(key, {
2707
- guguCoins: (rewardMap.get(key)?.guguCoins || 0) + 5,
2708
- gold: (rewardMap.get(key)?.gold || 0) + 250,
2738
+ guguCoins: (rewardMap.get(key)?.guguCoins || 0) + 3,
2739
+ gold: (rewardMap.get(key)?.gold || 0) + 200,
2709
2740
  playerName: record.playerName
2710
2741
  });
2711
2742
  });
2712
- rewardMessages.push(`其他参与者各获得: 5 咕咕币 + 250 金币`);
2743
+ rewardMessages.push(`其他参与者各获得: 3 咕咕币 + 200 金币`);
2713
2744
  }
2714
2745
  const doubleRewardPlayers = /* @__PURE__ */ new Map();
2715
2746
  for (const record of damageRecords) {
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.2.30",
4
+ "version": "1.2.32",
5
5
  "main": "lib/index.js",
6
6
  "typings": "lib/index.d.ts",
7
7
  "files": [