koishi-plugin-ggcevo-game 1.4.57 → 1.4.59
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/boss/BattleEffectProcessor.d.ts +1 -4
- package/lib/boss/boss.d.ts +2 -0
- package/lib/database.d.ts +1 -0
- package/lib/index.js +125 -42
- package/lib/weapons.d.ts +6 -3
- package/package.json +1 -1
|
@@ -26,6 +26,7 @@ export declare function getMaxHPByName(bossName: string): number | undefined;
|
|
|
26
26
|
* @returns 对应Boss的maxEnergy(未找到时返回undefined)
|
|
27
27
|
*/
|
|
28
28
|
export declare function getMaxEnergyByName(bossName: string): number | undefined;
|
|
29
|
+
export declare function getMaxStacksByName(bossName: string): number | undefined;
|
|
29
30
|
export declare const BattleEffectProcessor: {
|
|
30
31
|
handleWeakForm: (targetBoss: any) => {
|
|
31
32
|
buffMultiplier: number;
|
|
@@ -413,10 +414,6 @@ export declare const BattleEffectProcessor: {
|
|
|
413
414
|
} | null;
|
|
414
415
|
reductionSuccess: boolean;
|
|
415
416
|
} | null;
|
|
416
|
-
/**
|
|
417
|
-
* 毒性唾液处理(叠层减伤)
|
|
418
|
-
* 效果:受击时增加1层「毒性唾液」(上限20层),每层提供5%减伤
|
|
419
|
-
*/
|
|
420
417
|
handleToxicSaliva: (targetBoss: any) => {
|
|
421
418
|
nerfMultiplier: number;
|
|
422
419
|
messages: string[];
|
package/lib/boss/boss.d.ts
CHANGED
|
@@ -5,6 +5,7 @@ export declare const bossPool: {
|
|
|
5
5
|
type: string;
|
|
6
6
|
maxHP: number;
|
|
7
7
|
maxEnergy: number;
|
|
8
|
+
maxStacks: number;
|
|
8
9
|
tags: string[];
|
|
9
10
|
passive: string[];
|
|
10
11
|
};
|
|
@@ -13,6 +14,7 @@ export declare const bossPool: {
|
|
|
13
14
|
type: string;
|
|
14
15
|
maxHP: number;
|
|
15
16
|
maxEnergy: number;
|
|
17
|
+
maxStacks: number;
|
|
16
18
|
tags: string[];
|
|
17
19
|
passive: string[];
|
|
18
20
|
}[];
|
package/lib/database.d.ts
CHANGED
package/lib/index.js
CHANGED
|
@@ -90,8 +90,7 @@ var weaponConfig = {
|
|
|
90
90
|
redCrystalCost: 10,
|
|
91
91
|
isantiair: true,
|
|
92
92
|
tagEffects: {
|
|
93
|
-
"重甲":
|
|
94
|
-
"机械": 0.5,
|
|
93
|
+
"重甲": 1.8,
|
|
95
94
|
"护盾": 0.2
|
|
96
95
|
}
|
|
97
96
|
},
|
|
@@ -137,7 +136,6 @@ var weaponConfig = {
|
|
|
137
136
|
redCrystalCost: 10,
|
|
138
137
|
isantiair: true,
|
|
139
138
|
tagEffects: {
|
|
140
|
-
"轻甲": 0.5,
|
|
141
139
|
"重甲": 0.2
|
|
142
140
|
}
|
|
143
141
|
},
|
|
@@ -197,7 +195,7 @@ var weaponConfig = {
|
|
|
197
195
|
redCrystalCost: 15,
|
|
198
196
|
isantiair: true,
|
|
199
197
|
tagEffects: {
|
|
200
|
-
"灵能": 1.
|
|
198
|
+
"灵能": 1.2
|
|
201
199
|
}
|
|
202
200
|
},
|
|
203
201
|
"粒子相位枪": {
|
|
@@ -211,7 +209,7 @@ var weaponConfig = {
|
|
|
211
209
|
redCrystalCost: 15,
|
|
212
210
|
isantiair: true,
|
|
213
211
|
tagEffects: {
|
|
214
|
-
"护盾":
|
|
212
|
+
"护盾": 1.8,
|
|
215
213
|
"重甲": 0.2
|
|
216
214
|
}
|
|
217
215
|
},
|
|
@@ -270,7 +268,6 @@ var weaponConfig = {
|
|
|
270
268
|
redCrystalCost: 20,
|
|
271
269
|
isantiair: true,
|
|
272
270
|
tagEffects: {
|
|
273
|
-
"生物": 1.5,
|
|
274
271
|
"护盾": 0.5,
|
|
275
272
|
"重甲": 0.5
|
|
276
273
|
}
|
|
@@ -279,7 +276,7 @@ var weaponConfig = {
|
|
|
279
276
|
id: 17,
|
|
280
277
|
type: "能量武器",
|
|
281
278
|
category: "能量武器",
|
|
282
|
-
damage:
|
|
279
|
+
damage: 55,
|
|
283
280
|
description: "一种实验性的超级武器,能造成巨大的伤害",
|
|
284
281
|
specialeffect: "",
|
|
285
282
|
price: 1550,
|
|
@@ -460,6 +457,12 @@ var modConfig = {
|
|
|
460
457
|
effect: "对重甲目标改为造成80%伤害",
|
|
461
458
|
exclusiveTo: "侦察步枪",
|
|
462
459
|
isExclusive: true
|
|
460
|
+
},
|
|
461
|
+
"微型聚变核心": {
|
|
462
|
+
cost: 3500,
|
|
463
|
+
effect: "每次攻击提高5%的伤害(至多提高30%)",
|
|
464
|
+
exclusiveTo: "聚变磁轨枪",
|
|
465
|
+
isExclusive: true
|
|
463
466
|
}
|
|
464
467
|
};
|
|
465
468
|
|
|
@@ -1106,6 +1109,7 @@ var bossPool = [
|
|
|
1106
1109
|
type: "主宰",
|
|
1107
1110
|
maxHP: 15e3,
|
|
1108
1111
|
maxEnergy: 0,
|
|
1112
|
+
maxStacks: 0,
|
|
1109
1113
|
tags: ["重甲", "生物", "异形"],
|
|
1110
1114
|
passive: ["异形甲壳"]
|
|
1111
1115
|
},
|
|
@@ -1115,6 +1119,7 @@ var bossPool = [
|
|
|
1115
1119
|
type: "子代",
|
|
1116
1120
|
maxHP: 5e3,
|
|
1117
1121
|
maxEnergy: 0,
|
|
1122
|
+
maxStacks: 0,
|
|
1118
1123
|
tags: ["重甲", "生物", "重型", "异形"],
|
|
1119
1124
|
passive: ["弱化形态", "异形甲壳"]
|
|
1120
1125
|
}
|
|
@@ -1127,6 +1132,7 @@ var bossPool = [
|
|
|
1127
1132
|
type: "主宰",
|
|
1128
1133
|
maxHP: 15e3,
|
|
1129
1134
|
maxEnergy: 0,
|
|
1135
|
+
maxStacks: 0,
|
|
1130
1136
|
tags: ["重甲", "生物", "惧热", "重型", "异形"],
|
|
1131
1137
|
passive: ["冰霜环绕", "冰霜进化"]
|
|
1132
1138
|
},
|
|
@@ -1136,6 +1142,7 @@ var bossPool = [
|
|
|
1136
1142
|
type: "子代",
|
|
1137
1143
|
maxHP: 5e3,
|
|
1138
1144
|
maxEnergy: 0,
|
|
1145
|
+
maxStacks: 0,
|
|
1139
1146
|
tags: ["生物", "惧热", "异形"],
|
|
1140
1147
|
passive: ["弱化形态", "冰霜回复", "冰霜进化"]
|
|
1141
1148
|
}
|
|
@@ -1148,6 +1155,7 @@ var bossPool = [
|
|
|
1148
1155
|
type: "主宰",
|
|
1149
1156
|
maxHP: 12e3,
|
|
1150
1157
|
maxEnergy: 0,
|
|
1158
|
+
maxStacks: 0,
|
|
1151
1159
|
tags: ["重甲", "生物", "重型", "异形"],
|
|
1152
1160
|
passive: ["应激甲壳II", "求生本能II", "冷适应"]
|
|
1153
1161
|
},
|
|
@@ -1157,6 +1165,7 @@ var bossPool = [
|
|
|
1157
1165
|
type: "子代",
|
|
1158
1166
|
maxHP: 4e3,
|
|
1159
1167
|
maxEnergy: 0,
|
|
1168
|
+
maxStacks: 0,
|
|
1160
1169
|
tags: ["重甲", "生物", "重型", "异形"],
|
|
1161
1170
|
passive: ["弱化形态", "应激甲壳I", "求生本能I", "冷适应"]
|
|
1162
1171
|
},
|
|
@@ -1165,6 +1174,7 @@ var bossPool = [
|
|
|
1165
1174
|
type: "子代",
|
|
1166
1175
|
maxHP: 4e3,
|
|
1167
1176
|
maxEnergy: 0,
|
|
1177
|
+
maxStacks: 0,
|
|
1168
1178
|
tags: ["重甲", "生物", "重型", "异形"],
|
|
1169
1179
|
passive: ["弱化形态", "应激甲壳I", "求生本能I", "冷适应"]
|
|
1170
1180
|
}
|
|
@@ -1177,6 +1187,7 @@ var bossPool = [
|
|
|
1177
1187
|
type: "主宰",
|
|
1178
1188
|
maxHP: 1e4,
|
|
1179
1189
|
maxEnergy: 0,
|
|
1190
|
+
maxStacks: 0,
|
|
1180
1191
|
tags: ["重甲", "生物", "机械", "异形"],
|
|
1181
1192
|
passive: ["感染空间站", "病毒云", "霉菌滋生"]
|
|
1182
1193
|
},
|
|
@@ -1186,6 +1197,7 @@ var bossPool = [
|
|
|
1186
1197
|
type: "子代",
|
|
1187
1198
|
maxHP: 3e3,
|
|
1188
1199
|
maxEnergy: 0,
|
|
1200
|
+
maxStacks: 0,
|
|
1189
1201
|
tags: ["重甲", "生物", "机械", "异形"],
|
|
1190
1202
|
passive: ["弱化形态", "病毒云", "霉菌滋生"]
|
|
1191
1203
|
},
|
|
@@ -1194,6 +1206,7 @@ var bossPool = [
|
|
|
1194
1206
|
type: "子代",
|
|
1195
1207
|
maxHP: 5e3,
|
|
1196
1208
|
maxEnergy: 0,
|
|
1209
|
+
maxStacks: 10,
|
|
1197
1210
|
tags: ["重甲", "机械", "建筑"],
|
|
1198
1211
|
passive: ["岗哨机枪", "结构装甲"]
|
|
1199
1212
|
}
|
|
@@ -1206,6 +1219,7 @@ var bossPool = [
|
|
|
1206
1219
|
type: "主宰",
|
|
1207
1220
|
maxHP: 12e3,
|
|
1208
1221
|
maxEnergy: 0,
|
|
1222
|
+
maxStacks: 20,
|
|
1209
1223
|
tags: ["生物", "异形"],
|
|
1210
1224
|
passive: ["吸血唾液", "进食", "吐血", "嗜血狂暴"]
|
|
1211
1225
|
},
|
|
@@ -1215,6 +1229,7 @@ var bossPool = [
|
|
|
1215
1229
|
type: "子代",
|
|
1216
1230
|
maxHP: 4e3,
|
|
1217
1231
|
maxEnergy: 0,
|
|
1232
|
+
maxStacks: 20,
|
|
1218
1233
|
tags: ["生物", "异形"],
|
|
1219
1234
|
passive: ["弱化形态", "吸血唾液", "进食", "吐血"]
|
|
1220
1235
|
}
|
|
@@ -1227,6 +1242,7 @@ var bossPool = [
|
|
|
1227
1242
|
type: "主宰",
|
|
1228
1243
|
maxHP: 2e4,
|
|
1229
1244
|
maxEnergy: 1e3,
|
|
1245
|
+
maxStacks: 0,
|
|
1230
1246
|
tags: ["护盾", "灵能", "重型", "异形"],
|
|
1231
1247
|
passive: ["超导体", "能源虹吸", "电能冲击波", "电能立场", "脉冲", "能量黑洞"]
|
|
1232
1248
|
},
|
|
@@ -1236,6 +1252,7 @@ var bossPool = [
|
|
|
1236
1252
|
type: "子代",
|
|
1237
1253
|
maxHP: 6e3,
|
|
1238
1254
|
maxEnergy: 0,
|
|
1255
|
+
maxStacks: 0,
|
|
1239
1256
|
tags: ["护盾", "灵能", "异形"],
|
|
1240
1257
|
passive: ["弱化形态", "超导体", "能源虹吸", "能量黑洞"]
|
|
1241
1258
|
}
|
|
@@ -1248,6 +1265,7 @@ var bossPool = [
|
|
|
1248
1265
|
type: "主宰",
|
|
1249
1266
|
maxHP: 2e4,
|
|
1250
1267
|
maxEnergy: 0,
|
|
1268
|
+
maxStacks: 20,
|
|
1251
1269
|
tags: ["重甲", "生物", "惧寒", "重型", "异形"],
|
|
1252
1270
|
passive: ["火焰异形", "庞兽狂暴", "灼烧粘液", "炼狱爆弹", "火焰吐息", "太阳耀斑"]
|
|
1253
1271
|
},
|
|
@@ -1257,6 +1275,7 @@ var bossPool = [
|
|
|
1257
1275
|
type: "子代",
|
|
1258
1276
|
maxHP: 5e3,
|
|
1259
1277
|
maxEnergy: 0,
|
|
1278
|
+
maxStacks: 20,
|
|
1260
1279
|
tags: ["重甲", "生物", "惧寒", "异形"],
|
|
1261
1280
|
passive: ["弱化形态", "火焰异形", "灼烧粘液", "腐蚀胆汁", "燃烧潜地"]
|
|
1262
1281
|
}
|
|
@@ -1269,6 +1288,7 @@ var bossPool = [
|
|
|
1269
1288
|
type: "主宰",
|
|
1270
1289
|
maxHP: 2e4,
|
|
1271
1290
|
maxEnergy: 0,
|
|
1291
|
+
maxStacks: 0,
|
|
1272
1292
|
tags: ["生物", "异形"],
|
|
1273
1293
|
passive: ["猎手异形", "致命一击", "狂暴", "伪装"]
|
|
1274
1294
|
},
|
|
@@ -1278,6 +1298,7 @@ var bossPool = [
|
|
|
1278
1298
|
type: "子代",
|
|
1279
1299
|
maxHP: 5e3,
|
|
1280
1300
|
maxEnergy: 0,
|
|
1301
|
+
maxStacks: 0,
|
|
1281
1302
|
tags: ["生物", "异形"],
|
|
1282
1303
|
passive: ["弱化形态", "猎手异形", "狂暴", "伪装"]
|
|
1283
1304
|
},
|
|
@@ -1286,6 +1307,7 @@ var bossPool = [
|
|
|
1286
1307
|
type: "子代",
|
|
1287
1308
|
maxHP: 5e3,
|
|
1288
1309
|
maxEnergy: 0,
|
|
1310
|
+
maxStacks: 0,
|
|
1289
1311
|
tags: ["生物", "异形"],
|
|
1290
1312
|
passive: ["弱化形态", "猎手异形", "狂暴", "伪装"]
|
|
1291
1313
|
}
|
|
@@ -1298,6 +1320,7 @@ var bossPool = [
|
|
|
1298
1320
|
type: "主宰",
|
|
1299
1321
|
maxHP: 2e4,
|
|
1300
1322
|
maxEnergy: 1e3,
|
|
1323
|
+
maxStacks: 50,
|
|
1301
1324
|
tags: ["重甲", "护盾", "生物", "灵能", "异形"],
|
|
1302
1325
|
passive: ["宇宙能量", "复苏", "光影之刃", "远古预兆", "星界之风", "超视距穿梭"]
|
|
1303
1326
|
},
|
|
@@ -1307,6 +1330,7 @@ var bossPool = [
|
|
|
1307
1330
|
type: "子代",
|
|
1308
1331
|
maxHP: 5e3,
|
|
1309
1332
|
maxEnergy: 0,
|
|
1333
|
+
maxStacks: 0,
|
|
1310
1334
|
tags: ["重甲", "护盾", "生物", "灵能", "异形"],
|
|
1311
1335
|
passive: ["弱化形态", "心灵狂热", "星界之风"]
|
|
1312
1336
|
}
|
|
@@ -1319,6 +1343,7 @@ var bossPool = [
|
|
|
1319
1343
|
type: "主宰",
|
|
1320
1344
|
maxHP: 2e4,
|
|
1321
1345
|
maxEnergy: 0,
|
|
1346
|
+
maxStacks: 20,
|
|
1322
1347
|
tags: ["生物", "异形"],
|
|
1323
1348
|
passive: ["毒性唾液", "剧毒狂暴", "毒气波", "淬毒撕咬", "酸蚀池", "剧毒突袭"]
|
|
1324
1349
|
},
|
|
@@ -1328,6 +1353,7 @@ var bossPool = [
|
|
|
1328
1353
|
type: "子代",
|
|
1329
1354
|
maxHP: 5e3,
|
|
1330
1355
|
maxEnergy: 0,
|
|
1356
|
+
maxStacks: 20,
|
|
1331
1357
|
tags: ["轻甲", "生物", "异形"],
|
|
1332
1358
|
passive: ["弱化形态", "毒性唾液", "毒气波", "淬毒撕咬", "酸蚀池"]
|
|
1333
1359
|
}
|
|
@@ -1409,6 +1435,23 @@ function getMaxEnergyByName(bossName) {
|
|
|
1409
1435
|
return void 0;
|
|
1410
1436
|
}
|
|
1411
1437
|
__name(getMaxEnergyByName, "getMaxEnergyByName");
|
|
1438
|
+
function getMaxStacksByName(bossName) {
|
|
1439
|
+
if (bossName === "测试假人") {
|
|
1440
|
+
return 100;
|
|
1441
|
+
}
|
|
1442
|
+
for (const boss of bossPool) {
|
|
1443
|
+
if (boss.main.name === bossName) {
|
|
1444
|
+
return boss.main.maxStacks;
|
|
1445
|
+
}
|
|
1446
|
+
for (const minion of boss.minions) {
|
|
1447
|
+
if (minion.name === bossName) {
|
|
1448
|
+
return minion.maxStacks;
|
|
1449
|
+
}
|
|
1450
|
+
}
|
|
1451
|
+
}
|
|
1452
|
+
return void 0;
|
|
1453
|
+
}
|
|
1454
|
+
__name(getMaxStacksByName, "getMaxStacksByName");
|
|
1412
1455
|
var BattleEffectProcessor = {
|
|
1413
1456
|
// 弱化形态
|
|
1414
1457
|
handleWeakForm: /* @__PURE__ */ __name(function(targetBoss) {
|
|
@@ -2717,7 +2760,7 @@ var BattleEffectProcessor = {
|
|
|
2717
2760
|
handleCollapsingPulse: /* @__PURE__ */ __name(function(targetBoss) {
|
|
2718
2761
|
const messages = [];
|
|
2719
2762
|
let targetUpdates = null;
|
|
2720
|
-
const maxStacks =
|
|
2763
|
+
const maxStacks = 50;
|
|
2721
2764
|
if (!targetBoss.skills.includes("塌缩脉冲")) {
|
|
2722
2765
|
return null;
|
|
2723
2766
|
}
|
|
@@ -2787,7 +2830,7 @@ var BattleEffectProcessor = {
|
|
|
2787
2830
|
const effectiveLayers = Math.min(currentLayers, 20);
|
|
2788
2831
|
const buffMultiplier = effectiveLayers * 0.025;
|
|
2789
2832
|
if (effectiveLayers > 0) {
|
|
2790
|
-
messages.push(`☢️
|
|
2833
|
+
messages.push(`☢️ 【辐射】:当前${currentLayers}层,受到的伤害+${(effectiveLayers * 2.5).toFixed(1)}%(已达上限50%)`);
|
|
2791
2834
|
if (currentLayers > 20) {
|
|
2792
2835
|
}
|
|
2793
2836
|
}
|
|
@@ -2822,7 +2865,7 @@ var BattleEffectProcessor = {
|
|
|
2822
2865
|
const effectiveLayers = Math.min(currentLayers, 20);
|
|
2823
2866
|
const buffMultiplier = effectiveLayers * 0.025;
|
|
2824
2867
|
if (effectiveLayers > 0) {
|
|
2825
|
-
messages.push(`❄️
|
|
2868
|
+
messages.push(`❄️ 【寒冷】:当前${currentLayers}层,受到的伤害+${(effectiveLayers * 2.5).toFixed(1)}%(已达上限50%)`);
|
|
2826
2869
|
if (currentLayers > 20) {
|
|
2827
2870
|
}
|
|
2828
2871
|
}
|
|
@@ -2911,10 +2954,6 @@ var BattleEffectProcessor = {
|
|
|
2911
2954
|
reductionSuccess
|
|
2912
2955
|
};
|
|
2913
2956
|
}, "handleWeaponLayerReduction"),
|
|
2914
|
-
/**
|
|
2915
|
-
* 毒性唾液处理(叠层减伤)
|
|
2916
|
-
* 效果:受击时增加1层「毒性唾液」(上限20层),每层提供5%减伤
|
|
2917
|
-
*/
|
|
2918
2957
|
handleToxicSaliva: /* @__PURE__ */ __name(function(targetBoss) {
|
|
2919
2958
|
const messages = [];
|
|
2920
2959
|
let targetUpdates = null;
|
|
@@ -2925,19 +2964,18 @@ var BattleEffectProcessor = {
|
|
|
2925
2964
|
const currentStacks = targetBoss.skillStacks || 0;
|
|
2926
2965
|
const maxStacks = 20;
|
|
2927
2966
|
nerfMultiplier = currentStacks * 0.05;
|
|
2928
|
-
|
|
2929
|
-
|
|
2967
|
+
if (currentStacks > 0) {
|
|
2968
|
+
messages.push(`🧪 【毒性唾液】生效:当前${currentStacks}层,使受到的伤害-${(nerfMultiplier * 100).toFixed(0)}%`);
|
|
2969
|
+
}
|
|
2930
2970
|
if (currentStacks < maxStacks) {
|
|
2931
|
-
newStacks = currentStacks + 1;
|
|
2971
|
+
const newStacks = currentStacks + 1;
|
|
2932
2972
|
targetUpdates = {
|
|
2933
2973
|
name: targetBoss.name,
|
|
2934
2974
|
updates: {
|
|
2935
2975
|
skillStacksChanged: 1
|
|
2936
|
-
// 层数+1
|
|
2937
2976
|
}
|
|
2938
2977
|
};
|
|
2939
2978
|
messages.push(`🧪 【毒性唾液】生效:获得一层「毒性唾液」`);
|
|
2940
|
-
} else {
|
|
2941
2979
|
}
|
|
2942
2980
|
return {
|
|
2943
2981
|
nerfMultiplier,
|
|
@@ -2963,7 +3001,7 @@ var BattleEffectProcessor = {
|
|
|
2963
3001
|
return null;
|
|
2964
3002
|
}
|
|
2965
3003
|
const currentStacks = targetBoss.skillStacks || 0;
|
|
2966
|
-
const maxStacks =
|
|
3004
|
+
const maxStacks = 20;
|
|
2967
3005
|
nerfMultiplier = 0.2;
|
|
2968
3006
|
messages.push(`💥 【剧毒狂暴】生效:生命值≤50%,受到的伤害额外降低20%`);
|
|
2969
3007
|
if (currentStacks < maxStacks) {
|
|
@@ -3626,7 +3664,7 @@ var passiveConfig = {
|
|
|
3626
3664
|
},
|
|
3627
3665
|
"灼烧粘液": {
|
|
3628
3666
|
type: "叠层治疗",
|
|
3629
|
-
description: "受击获得1
|
|
3667
|
+
description: "受击获得1层「灼烧粘液」(上限20层);受火焰攻击时消耗所有层数并回复(层数×10)点生命"
|
|
3630
3668
|
},
|
|
3631
3669
|
"腐蚀胆汁": {
|
|
3632
3670
|
type: "叠层转化(群体治疗)",
|
|
@@ -4288,8 +4326,10 @@ async function handleWeaponUpgrade(ctx, handle, target) {
|
|
|
4288
4326
|
);
|
|
4289
4327
|
}
|
|
4290
4328
|
});
|
|
4291
|
-
const
|
|
4292
|
-
|
|
4329
|
+
const isLegendary = weaponData.category === "传奇武器";
|
|
4330
|
+
const levelBonusRate = isLegendary ? 0.05 : 0.1;
|
|
4331
|
+
const damage = (weaponData.damage * (1 + levelBonusRate * newLevel)).toFixed(1);
|
|
4332
|
+
let msg = `${target} ${isLegendary ? "【传奇武器】 " : ""}升级成功!Lv.${newLevel}`;
|
|
4293
4333
|
const priceInfo = totalDiscount > 0 ? `
|
|
4294
4334
|
💸 花费:${actualCost}金币 (原价${baseCost}金币)` : `
|
|
4295
4335
|
💸 花费:${actualCost}金币`;
|
|
@@ -4464,9 +4504,11 @@ async function calculateTotalDamage(ctx, session, config, equippedWeapon, target
|
|
|
4464
4504
|
const handle = `${regionId}-S2-${realmId}-${profileId}`;
|
|
4465
4505
|
const weaponConfigEntry = Object.entries(weaponConfig).find(([_, c]) => c.id === equippedWeapon.weaponId);
|
|
4466
4506
|
const [weaponName, weaponData] = weaponConfigEntry;
|
|
4467
|
-
const
|
|
4468
|
-
const
|
|
4469
|
-
|
|
4507
|
+
const isLegendary = weaponData.category === "传奇武器";
|
|
4508
|
+
const levelBonusRate = isLegendary ? 0.05 : 0.1;
|
|
4509
|
+
const baseDamage = weaponData.damage * (1 + levelBonusRate * equippedWeapon.level);
|
|
4510
|
+
const bonusPercent = (levelBonusRate * equippedWeapon.level * 100).toFixed(0);
|
|
4511
|
+
effectMessage.push(`🔫 ${weaponName} Lv.${equippedWeapon.level}:基础伤害+${bonusPercent}%` + (isLegendary ? "(传奇武器)" : ""));
|
|
4470
4512
|
let totalAdditive = 0;
|
|
4471
4513
|
const tagAdditive = await calculateTagMultiplier(weaponData, finalTags, equippedWeapon);
|
|
4472
4514
|
totalAdditive += tagAdditive;
|
|
@@ -4558,6 +4600,19 @@ function calculateModifiers(equippedWeapon, weaponName, hasCritRhythm) {
|
|
|
4558
4600
|
overloadCrit = 80;
|
|
4559
4601
|
modMessages.push(`🛠️ 【棱镜超载核心】生效:暴击率+80%`);
|
|
4560
4602
|
}
|
|
4603
|
+
if (mod === "微型聚变核心") {
|
|
4604
|
+
const currentCombo = equippedWeapon?.comboCount || 0;
|
|
4605
|
+
const maxStacks = 6;
|
|
4606
|
+
const bonusPerCombo = 0.05;
|
|
4607
|
+
const effectiveStacks = Math.min(currentCombo, maxStacks);
|
|
4608
|
+
const bonusDamage = effectiveStacks * bonusPerCombo;
|
|
4609
|
+
totalModAdd += bonusDamage;
|
|
4610
|
+
if (currentCombo > 0) {
|
|
4611
|
+
modMessages.push(
|
|
4612
|
+
`🛠️ 【微型聚变核心】生效:攻击伤害+${(bonusDamage * 100).toFixed(0)}%` + (effectiveStacks < currentCombo ? `(已达上限30%)` : "")
|
|
4613
|
+
);
|
|
4614
|
+
}
|
|
4615
|
+
}
|
|
4561
4616
|
});
|
|
4562
4617
|
rhythmCrit = hasCritRhythm ? 20 : 0;
|
|
4563
4618
|
if (hasCritRhythm) {
|
|
@@ -5098,6 +5153,7 @@ async function updateDatabaseWithStats(ctx, stats) {
|
|
|
5098
5153
|
const bossData = await ctx.database.get("ggcevo_boss", { name: stats.name });
|
|
5099
5154
|
const maxHP = getMaxHPByName(stats.name);
|
|
5100
5155
|
const maxEnergy = getMaxEnergyByName(stats.name);
|
|
5156
|
+
const maxStacks = getMaxStacksByName(stats.name);
|
|
5101
5157
|
if (!bossData || bossData.length === 0) {
|
|
5102
5158
|
return;
|
|
5103
5159
|
}
|
|
@@ -5115,7 +5171,8 @@ async function updateDatabaseWithStats(ctx, stats) {
|
|
|
5115
5171
|
updateData.skillStacks = Math.max(0, boss.skillStacks + stats.skillStacksChanged);
|
|
5116
5172
|
}
|
|
5117
5173
|
if (stats.skillStatusChanged !== 0) {
|
|
5118
|
-
|
|
5174
|
+
const newStatus = boss.skillStatus + stats.skillStatusChanged;
|
|
5175
|
+
updateData.skillStatus = Math.max(0, Math.min(maxStacks, newStatus));
|
|
5119
5176
|
}
|
|
5120
5177
|
if (stats.statusLayersChanged !== 0) {
|
|
5121
5178
|
updateData.statusLayers = Math.max(0, boss.statusLayers + stats.statusLayersChanged);
|
|
@@ -5407,7 +5464,9 @@ function apply(ctx, config) {
|
|
|
5407
5464
|
level: "unsigned",
|
|
5408
5465
|
modificationSlots: "unsigned",
|
|
5409
5466
|
installedMods: "list",
|
|
5410
|
-
equipped: "boolean"
|
|
5467
|
+
equipped: "boolean",
|
|
5468
|
+
comboCount: "unsigned"
|
|
5469
|
+
// 新增:记录连续攻击次数的计数器
|
|
5411
5470
|
}, {
|
|
5412
5471
|
primary: ["handle", "weaponId"]
|
|
5413
5472
|
});
|
|
@@ -7440,7 +7499,8 @@ ${validTypes.join("、")}`;
|
|
|
7440
7499
|
weaponId: config2.id,
|
|
7441
7500
|
level: 0,
|
|
7442
7501
|
modificationSlots: 1,
|
|
7443
|
-
equipped: false
|
|
7502
|
+
equipped: false,
|
|
7503
|
+
comboCount: 0
|
|
7444
7504
|
}], ["handle", "weaponId"]);
|
|
7445
7505
|
const equippedCount = await ctx.database.select("ggcevo_weapons").where({ handle, equipped: true }).execute((row) => import_koishi.$.count(row.weaponId));
|
|
7446
7506
|
if (equippedCount === 0) {
|
|
@@ -7500,14 +7560,17 @@ ${validTypes.join("、")}`;
|
|
|
7500
7560
|
const weaponDetails = await Promise.all(weapons.map(async (w) => {
|
|
7501
7561
|
const weaponName = Object.entries(weaponConfig).find(([_, c]) => c.id === w.weaponId)[0];
|
|
7502
7562
|
const config2 = weaponConfig[weaponName];
|
|
7563
|
+
const isLegendary = config2.category === "传奇武器";
|
|
7564
|
+
const levelBonusRate = isLegendary ? 0.05 : 0.1;
|
|
7565
|
+
const currentDamage = config2.damage * (1 + levelBonusRate * w.level);
|
|
7566
|
+
const typeTag = isLegendary ? "【传奇武器】" : "";
|
|
7567
|
+
const damageFormatted = currentDamage.toFixed(1);
|
|
7503
7568
|
const statusIcon = w.equipped ? "⚡" : "・";
|
|
7504
7569
|
const statusText = w.equipped ? "[已装备]" : "";
|
|
7505
|
-
const currentDamage = config2.damage * (1 + 0.1 * w.level);
|
|
7506
7570
|
const mods = w.installedMods.map((m) => m).join(" | ") || "无";
|
|
7507
7571
|
return [
|
|
7508
|
-
`${statusIcon} ${weaponName} ${statusText}`,
|
|
7509
|
-
`等级:Lv.${w.level} | 改装槽:${w.modificationSlots}`,
|
|
7510
|
-
`基础伤害:${currentDamage.toFixed(1)}`,
|
|
7572
|
+
`${statusIcon} ${weaponName} ${typeTag} ${statusText}`,
|
|
7573
|
+
`等级:Lv.${w.level} | 改装槽:${w.modificationSlots} | 基础伤害:${damageFormatted}`,
|
|
7511
7574
|
`改装:${mods}`
|
|
7512
7575
|
].join("\n");
|
|
7513
7576
|
}));
|
|
@@ -7863,6 +7926,19 @@ ${validTypes.join("、")}`;
|
|
|
7863
7926
|
if (taskUpdates.length > 0) {
|
|
7864
7927
|
await updateTaskProgress(ctx, handle, taskUpdates);
|
|
7865
7928
|
}
|
|
7929
|
+
await ctx.database.set("ggcevo_weapons", {
|
|
7930
|
+
handle,
|
|
7931
|
+
weaponId: equippedWeapon.weaponId
|
|
7932
|
+
}, {
|
|
7933
|
+
comboCount: (equippedWeapon?.comboCount || 0) + 1
|
|
7934
|
+
});
|
|
7935
|
+
await ctx.database.set("ggcevo_weapons", {
|
|
7936
|
+
handle,
|
|
7937
|
+
weaponId: { $ne: equippedWeapon.weaponId }
|
|
7938
|
+
// 排除当前装备的武器
|
|
7939
|
+
}, {
|
|
7940
|
+
comboCount: 0
|
|
7941
|
+
});
|
|
7866
7942
|
const resultMessage = buildResultMessage(
|
|
7867
7943
|
session,
|
|
7868
7944
|
weaponName,
|
|
@@ -7898,7 +7974,7 @@ ${validTypes.join("、")}`;
|
|
|
7898
7974
|
const skillStacks = clampLayer(options.skillStacks);
|
|
7899
7975
|
const radiationLayers = clampLayer(options.radiation);
|
|
7900
7976
|
const coldLayers = clampLayer(options.cold);
|
|
7901
|
-
const
|
|
7977
|
+
const skillStatus = clampLayer(options.status);
|
|
7902
7978
|
const parseList = /* @__PURE__ */ __name((str) => str ? str.split(",").map((s) => s.trim()).filter(Boolean) : [], "parseList");
|
|
7903
7979
|
const tags = parseList(options.tags);
|
|
7904
7980
|
const passives = parseList(options.passives);
|
|
@@ -7921,14 +7997,13 @@ ${validTypes.join("、")}`;
|
|
|
7921
7997
|
skills: passives || [],
|
|
7922
7998
|
skillStacks,
|
|
7923
7999
|
// 使用自定义技能层数
|
|
8000
|
+
skillStatus,
|
|
7924
8001
|
radiationLayers,
|
|
7925
8002
|
// 使用自定义辐射层数
|
|
7926
8003
|
coldLayers,
|
|
7927
8004
|
// 使用自定义寒冷层数
|
|
7928
8005
|
energy,
|
|
7929
8006
|
isActive: true,
|
|
7930
|
-
statusLayers,
|
|
7931
|
-
// 使用自定义状态层数
|
|
7932
8007
|
lastWeaponName: ""
|
|
7933
8008
|
};
|
|
7934
8009
|
const activeBosses = [dummyBoss];
|
|
@@ -7949,12 +8024,12 @@ ${validTypes.join("、")}`;
|
|
|
7949
8024
|
if (skillStacks > 0) layerInfo.push(`技能层数: ${skillStacks}`);
|
|
7950
8025
|
if (radiationLayers > 0) layerInfo.push(`辐射层数: ${radiationLayers}`);
|
|
7951
8026
|
if (coldLayers > 0) layerInfo.push(`寒冷层数: ${coldLayers}`);
|
|
7952
|
-
if (
|
|
8027
|
+
if (skillStatus > 0) layerInfo.push(`状态层数: ${skillStatus}`);
|
|
7953
8028
|
const layerDisplay = layerInfo.length > 0 ? `📊 层数状态: ${layerInfo.join(" | ")}` : "";
|
|
7954
8029
|
return [
|
|
7955
8030
|
`🎯 使用武器 ${weaponName} 攻击 ${dummyBoss.name}`,
|
|
7956
8031
|
`❤️ 假人血量:${dummyBoss.HP}/10000`,
|
|
7957
|
-
|
|
8032
|
+
`🔋 假人能量:${dummyBoss.energy}/1000`,
|
|
7958
8033
|
options.tags?.length && `🏷️ 模拟标签:${tags.join(", ")}`,
|
|
7959
8034
|
options.passives?.length && `✨ 模拟被动:${passives.join(", ")}`,
|
|
7960
8035
|
layerDisplay,
|
|
@@ -8037,10 +8112,13 @@ ${testResult.passiveMessages.map((m) => `▸ ${m}`).join("\n")}`
|
|
|
8037
8112
|
} else {
|
|
8038
8113
|
result.push("➤ 无");
|
|
8039
8114
|
}
|
|
8040
|
-
const countingSkill = mainBoss.skills?.find((s) => ["
|
|
8115
|
+
const countingSkill = mainBoss.skills?.find((s) => ["岗哨机枪", "吸血唾液", "灼烧粘液", "光影之刃", "毒性唾液"].includes(s));
|
|
8041
8116
|
if (countingSkill) {
|
|
8042
8117
|
result.push(`📈 ${countingSkill}:${mainBoss.skillStacks}层`);
|
|
8043
8118
|
}
|
|
8119
|
+
if (mainBoss.skills.includes("冷适应")) {
|
|
8120
|
+
result.push(`🛡️ 冷适应:${mainBoss.statusLayers}层`);
|
|
8121
|
+
}
|
|
8044
8122
|
if (mainBoss.skills.includes("酸蚀池")) {
|
|
8045
8123
|
let acidText;
|
|
8046
8124
|
switch (mainBoss.skillStatus) {
|
|
@@ -8088,10 +8166,13 @@ ${testResult.passiveMessages.map((m) => `▸ ${m}`).join("\n")}`
|
|
|
8088
8166
|
} else {
|
|
8089
8167
|
minionInfo.push("➤ 无");
|
|
8090
8168
|
}
|
|
8091
|
-
const minionCountingSkill = minion.skills?.find((s) => ["
|
|
8169
|
+
const minionCountingSkill = minion.skills?.find((s) => ["岗哨机枪", "吸血唾液", "灼烧粘液", "光影之刃", "毒性唾液"].includes(s));
|
|
8092
8170
|
if (minionCountingSkill) {
|
|
8093
8171
|
minionInfo.push(`📈 ${minionCountingSkill}:${minion.skillStacks}层`);
|
|
8094
8172
|
}
|
|
8173
|
+
if (minion.skills.includes("冷适应")) {
|
|
8174
|
+
minionInfo.push(`🛡️ 冷适应:${minion.statusLayers}层`);
|
|
8175
|
+
}
|
|
8095
8176
|
if (minion.skills.includes("酸蚀池")) {
|
|
8096
8177
|
let acidText;
|
|
8097
8178
|
switch (minion.skillStatus) {
|
|
@@ -8783,7 +8864,8 @@ ${testResult.passiveMessages.map((m) => `▸ ${m}`).join("\n")}`
|
|
|
8783
8864
|
level: 0,
|
|
8784
8865
|
modificationSlots: 1,
|
|
8785
8866
|
installedMods: [],
|
|
8786
|
-
equipped: false
|
|
8867
|
+
equipped: false,
|
|
8868
|
+
comboCount: 0
|
|
8787
8869
|
});
|
|
8788
8870
|
const equippedCount = await ctx.database.select("ggcevo_weapons").where({ handle, equipped: true }).execute((row) => import_koishi.$.count(row.weaponId));
|
|
8789
8871
|
if (equippedCount === 0) {
|
|
@@ -9315,7 +9397,8 @@ ${Spacestationtechnology.map((t) => t.techname).join("、")}`;
|
|
|
9315
9397
|
level: 0,
|
|
9316
9398
|
modificationSlots: 1,
|
|
9317
9399
|
installedMods: [],
|
|
9318
|
-
equipped: false
|
|
9400
|
+
equipped: false,
|
|
9401
|
+
comboCount: 0
|
|
9319
9402
|
}]);
|
|
9320
9403
|
});
|
|
9321
9404
|
return [
|
package/lib/weapons.d.ts
CHANGED
|
@@ -56,7 +56,6 @@ export declare const weaponConfig: {
|
|
|
56
56
|
isantiair: boolean;
|
|
57
57
|
tagEffects: {
|
|
58
58
|
重甲: number;
|
|
59
|
-
机械: number;
|
|
60
59
|
护盾: number;
|
|
61
60
|
};
|
|
62
61
|
};
|
|
@@ -102,7 +101,6 @@ export declare const weaponConfig: {
|
|
|
102
101
|
redCrystalCost: number;
|
|
103
102
|
isantiair: boolean;
|
|
104
103
|
tagEffects: {
|
|
105
|
-
轻甲: number;
|
|
106
104
|
重甲: number;
|
|
107
105
|
};
|
|
108
106
|
};
|
|
@@ -235,7 +233,6 @@ export declare const weaponConfig: {
|
|
|
235
233
|
redCrystalCost: number;
|
|
236
234
|
isantiair: boolean;
|
|
237
235
|
tagEffects: {
|
|
238
|
-
生物: number;
|
|
239
236
|
护盾: number;
|
|
240
237
|
重甲: number;
|
|
241
238
|
};
|
|
@@ -423,4 +420,10 @@ export declare const modConfig: {
|
|
|
423
420
|
exclusiveTo: string;
|
|
424
421
|
isExclusive: boolean;
|
|
425
422
|
};
|
|
423
|
+
微型聚变核心: {
|
|
424
|
+
cost: number;
|
|
425
|
+
effect: string;
|
|
426
|
+
exclusiveTo: string;
|
|
427
|
+
isExclusive: boolean;
|
|
428
|
+
};
|
|
426
429
|
};
|