koishi-plugin-ggcevo-game 1.4.21 → 1.4.23
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 +41 -44
- package/lib/weapons.d.ts +1 -0
- package/package.json +1 -1
package/lib/index.js
CHANGED
|
@@ -137,6 +137,7 @@ var weaponConfig = {
|
|
|
137
137
|
redCrystalCost: 10,
|
|
138
138
|
isantiair: true,
|
|
139
139
|
tagEffects: {
|
|
140
|
+
"轻甲": 0.5,
|
|
140
141
|
"重甲": 0.2
|
|
141
142
|
}
|
|
142
143
|
},
|
|
@@ -144,7 +145,7 @@ var weaponConfig = {
|
|
|
144
145
|
id: 8,
|
|
145
146
|
type: "热能武器",
|
|
146
147
|
category: "热能武器",
|
|
147
|
-
damage:
|
|
148
|
+
damage: 22,
|
|
148
149
|
description: "喷射稳定的液氮恒流,对长时间接触者造成致命的损伤",
|
|
149
150
|
specialeffect: "攻击使目标叠加“寒冷”层数,每层使其受到的伤害+2.5%(至多+50%)",
|
|
150
151
|
price: 775,
|
|
@@ -174,7 +175,7 @@ var weaponConfig = {
|
|
|
174
175
|
id: 10,
|
|
175
176
|
type: "热能武器",
|
|
176
177
|
category: "热能武器",
|
|
177
|
-
damage:
|
|
178
|
+
damage: 24,
|
|
178
179
|
description: "一种高度危险性的武器,设计用辐射照射并伤害敌人",
|
|
179
180
|
specialeffect: "攻击使生物目标(无机械标签)叠加“辐射”层数,每层使其受到的伤害+2.5%(至多+50%)",
|
|
180
181
|
price: 825,
|
|
@@ -445,7 +446,7 @@ var SyndicatedItems = {
|
|
|
445
446
|
price: 0,
|
|
446
447
|
redCrystalCost: 60,
|
|
447
448
|
condition: "辛迪加海盗阵营",
|
|
448
|
-
effects: "每日签到金币奖励+50
|
|
449
|
+
effects: "每日签到金币奖励+50%,每有一名人类联盟玩家额外+1%(至多额外+50%)"
|
|
449
450
|
},
|
|
450
451
|
"脉冲手雷": {
|
|
451
452
|
id: 4,
|
|
@@ -2059,8 +2060,8 @@ async function handleTechUpgrade(ctx, handle, target) {
|
|
|
2059
2060
|
costInfo,
|
|
2060
2061
|
...discountInfo,
|
|
2061
2062
|
// 折扣信息
|
|
2062
|
-
`📝
|
|
2063
|
-
`💼
|
|
2063
|
+
`📝 基础效果:${levelData.description}`,
|
|
2064
|
+
`💼 职业效果:${levelData.careerBonus}`,
|
|
2064
2065
|
...permissionMessage
|
|
2065
2066
|
// 权限解锁信息
|
|
2066
2067
|
].filter(Boolean).join("\n");
|
|
@@ -2623,7 +2624,7 @@ var PassiveHandler = {
|
|
|
2623
2624
|
let statusMsg = `☢️ 【辐射】生效:当前${radiationLayers}层辐射`;
|
|
2624
2625
|
statusMsg += `,受到的伤害+${damageIncrease}%`;
|
|
2625
2626
|
if (damageIncrease >= maxIncrease) {
|
|
2626
|
-
statusMsg +=
|
|
2627
|
+
statusMsg += ``;
|
|
2627
2628
|
}
|
|
2628
2629
|
messages.push(statusMsg);
|
|
2629
2630
|
return {
|
|
@@ -2664,7 +2665,7 @@ var PassiveHandler = {
|
|
|
2664
2665
|
let statusMsg = `❄️ 【寒冷】生效:当前${freezingLayers}层`;
|
|
2665
2666
|
statusMsg += `,受到的伤害+${damageIncrease}%`;
|
|
2666
2667
|
if (damageIncrease >= maxIncrease) {
|
|
2667
|
-
statusMsg +=
|
|
2668
|
+
statusMsg += ``;
|
|
2668
2669
|
}
|
|
2669
2670
|
messages.push(statusMsg);
|
|
2670
2671
|
return {
|
|
@@ -6267,13 +6268,13 @@ ${validTypes.join("、")}`;
|
|
|
6267
6268
|
if (activeWish) {
|
|
6268
6269
|
const wishDiscount = 20;
|
|
6269
6270
|
totalDiscount += wishDiscount;
|
|
6270
|
-
discountDetails.push(
|
|
6271
|
+
discountDetails.push(`🦗 蚱蜢优购祈愿:${wishDiscount}%折扣`);
|
|
6271
6272
|
}
|
|
6272
6273
|
}
|
|
6273
6274
|
if (isWeapon && careerData?.career === "武器中士") {
|
|
6274
6275
|
const specialistDiscount = 20;
|
|
6275
6276
|
totalDiscount += specialistDiscount;
|
|
6276
|
-
discountDetails.push(
|
|
6277
|
+
discountDetails.push(`🎖️ 武器中士职业:${specialistDiscount}%折扣`);
|
|
6277
6278
|
}
|
|
6278
6279
|
totalDiscount = Math.min(totalDiscount, 100);
|
|
6279
6280
|
}
|
|
@@ -7878,67 +7879,63 @@ ${Spacestationtechnology.map((t) => t.techname).join("、")}`;
|
|
|
7878
7879
|
handle,
|
|
7879
7880
|
taskId: taskConfig.id
|
|
7880
7881
|
});
|
|
7881
|
-
if (!taskData) return `⚠️
|
|
7882
|
+
if (!taskData) return `⚠️ 任务进度不足!无法完成"${taskName}"任务`;
|
|
7882
7883
|
if (taskData.progress < taskConfig.target) {
|
|
7883
7884
|
return `⚠️ 任务进度不足!当前进度:${taskData.progress}/${taskConfig.target}`;
|
|
7884
7885
|
}
|
|
7885
|
-
const newProgress = taskData.progress - taskConfig.target;
|
|
7886
|
-
const newCompletions = taskData.Completions + 1;
|
|
7887
7886
|
const [careerData] = await ctx.database.get("ggcevo_careers", { handle });
|
|
7888
7887
|
const [systemFirmwareTech] = await ctx.database.get("ggcevo_tech", { handle, techId: 5 }).catch(() => [{ level: 0 }]);
|
|
7889
7888
|
const techLevel = Math.min(systemFirmwareTech?.level || 0, 5);
|
|
7890
|
-
|
|
7891
|
-
|
|
7892
|
-
|
|
7889
|
+
const completableTimes = Math.floor(taskData.progress / taskConfig.target);
|
|
7890
|
+
const remainingProgress = taskData.progress % taskConfig.target;
|
|
7891
|
+
const newCompletions = taskData.Completions + completableTimes;
|
|
7892
|
+
const baseTotal = taskConfig.price * completableTimes;
|
|
7893
|
+
let baseBonus = 0;
|
|
7893
7894
|
if (techLevel > 0) {
|
|
7894
|
-
|
|
7895
|
-
const careerBonus = careerData?.group === "人类联盟" && ["舰长", "情报副官"].includes(careerData?.career) ? [0, 10, 20, 30, 40, 50][techLevel] : 0;
|
|
7896
|
-
bonusPercent = Math.max(normalBonus, careerBonus);
|
|
7897
|
-
}
|
|
7898
|
-
if (careerData?.group === "人类联盟" && careerData.career === "舰长") {
|
|
7899
|
-
bonusPercent += 50;
|
|
7900
|
-
}
|
|
7901
|
-
if (bonusPercent > 0) {
|
|
7902
|
-
actualReward = Math.round(baseReward * (1 + bonusPercent / 100));
|
|
7895
|
+
baseBonus = careerData?.group === "人类联盟" && ["舰长", "情报副官"].includes(careerData?.career) ? [0, 10, 20, 30, 40, 50][techLevel] : [0, 5, 10, 15, 20, 25][techLevel];
|
|
7903
7896
|
}
|
|
7897
|
+
const captainBonus = careerData?.group === "人类联盟" && careerData.career === "舰长" ? 50 : 0;
|
|
7898
|
+
const totalBonus = baseBonus + captainBonus;
|
|
7899
|
+
const totalReward = totalBonus > 0 ? Math.round(baseTotal * (1 + totalBonus / 100)) : baseTotal;
|
|
7904
7900
|
await ctx.database.set("ggcevo_task", {
|
|
7905
7901
|
handle,
|
|
7906
7902
|
taskId: taskConfig.id
|
|
7907
7903
|
}, {
|
|
7908
|
-
progress:
|
|
7904
|
+
progress: remainingProgress,
|
|
7909
7905
|
Completions: newCompletions
|
|
7910
7906
|
});
|
|
7911
7907
|
const [signData] = await ctx.database.get("ggcevo_sign", { handle });
|
|
7908
|
+
const newTotalRewards = (signData?.totalRewards || 0) + totalReward;
|
|
7912
7909
|
await ctx.database.upsert("ggcevo_sign", [{
|
|
7913
7910
|
handle,
|
|
7914
|
-
totalRewards:
|
|
7911
|
+
totalRewards: newTotalRewards
|
|
7915
7912
|
}], ["handle"]);
|
|
7916
|
-
const [updatedSignData] = await ctx.database.get("ggcevo_sign", { handle });
|
|
7917
7913
|
const response = [
|
|
7918
|
-
`🎉
|
|
7914
|
+
`🎉 成功完成【${taskName}】任务!`
|
|
7919
7915
|
];
|
|
7920
|
-
if (
|
|
7921
|
-
response.push(
|
|
7916
|
+
if (totalBonus > 0) {
|
|
7917
|
+
response.push(`💰 获得总奖励:${totalReward}金币 (基础值: ${baseTotal}金币)`);
|
|
7922
7918
|
} else {
|
|
7923
|
-
response.push(
|
|
7919
|
+
response.push(`💰 获得总奖励:${totalReward}金币`);
|
|
7924
7920
|
}
|
|
7925
|
-
if (
|
|
7926
|
-
let bonusType = "";
|
|
7927
|
-
if (careerData?.group === "人类联盟" && ["舰长", "情报副官"].includes(careerData.career)) {
|
|
7928
|
-
bonusType = "(职业专属加成)";
|
|
7929
|
-
} else {
|
|
7930
|
-
bonusType = "(普通加成)";
|
|
7931
|
-
}
|
|
7921
|
+
if (totalBonus > 0) {
|
|
7932
7922
|
response.push(`⚡ 加成效果:`);
|
|
7933
|
-
|
|
7923
|
+
if (baseBonus > 0) {
|
|
7924
|
+
response.push(`▸ ⚙️ 关键系统固件Lv.${techLevel}: +${baseBonus}%金币`);
|
|
7925
|
+
}
|
|
7926
|
+
if (captainBonus > 0) {
|
|
7927
|
+
response.push(`▸ 🚀 舰长职业: +${captainBonus}%金币`);
|
|
7928
|
+
}
|
|
7934
7929
|
}
|
|
7935
7930
|
response.push(
|
|
7936
|
-
|
|
7937
|
-
|
|
7938
|
-
`当前拥有金币:${updatedSignData.totalRewards}`
|
|
7931
|
+
`📊 累计完成次数: ${newCompletions}次`,
|
|
7932
|
+
`⚙️ 剩余进度点数: ${remainingProgress}/${taskConfig.target}`
|
|
7939
7933
|
);
|
|
7940
|
-
if (
|
|
7941
|
-
response.push(`💡
|
|
7934
|
+
if (remainingProgress > 0) {
|
|
7935
|
+
response.push(`💡 剩余进度可完成 ${Math.floor(remainingProgress / taskConfig.target)} 次`);
|
|
7936
|
+
}
|
|
7937
|
+
if (completableTimes > 1) {
|
|
7938
|
+
response.push(`💡 成功完成${completableTimes}次任务,已发放全部奖励`);
|
|
7942
7939
|
}
|
|
7943
7940
|
return response.join("\n");
|
|
7944
7941
|
} catch (error) {
|
package/lib/weapons.d.ts
CHANGED