koishi-plugin-ggcevo-game 1.4.31 → 1.4.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.
package/lib/index.js CHANGED
@@ -1031,7 +1031,7 @@ var Tasklist = {
1031
1031
  target: 1,
1032
1032
  price: 200,
1033
1033
  redCrystalCost: 0,
1034
- condition: "使用焚烧枪攻击异形并成功引爆其≥10层的胆汁"
1034
+ condition: "使用焚烧枪攻击目标并成功引爆其≥10层的胆汁"
1035
1035
  },
1036
1036
  "脉冲干扰": {
1037
1037
  id: 4,
@@ -1040,7 +1040,7 @@ var Tasklist = {
1040
1040
  target: 1,
1041
1041
  price: 75,
1042
1042
  redCrystalCost: 0,
1043
- condition: "使用脉冲扰乱枪攻击异形并成功减少其技能层数"
1043
+ condition: "使用脉冲扰乱枪攻击目标并成功减少其技能层数"
1044
1044
  },
1045
1045
  "弧能消耗": {
1046
1046
  id: 5,
@@ -1049,7 +1049,7 @@ var Tasklist = {
1049
1049
  target: 1,
1050
1050
  price: 75,
1051
1051
  redCrystalCost: 0,
1052
- condition: "使用弧焊枪攻击异形并成功消耗其能量"
1052
+ condition: "使用弧焊枪攻击目标并成功消耗其能量"
1053
1053
  }
1054
1054
  };
1055
1055
 
@@ -1059,12 +1059,13 @@ var asPassives = /* @__PURE__ */ __name((arr) => arr, "asPassives");
1059
1059
  var defineBoss = /* @__PURE__ */ __name((config) => config, "defineBoss");
1060
1060
  var bossPool = [
1061
1061
  defineBoss({
1062
+ id: 1,
1063
+ // ID放在BOSS组层级
1062
1064
  main: {
1063
- id: 1,
1064
1065
  name: "异齿猛兽首领",
1065
1066
  type: "主宰",
1066
1067
  maxHP: 15e3,
1067
- energy: 0,
1068
+ maxEnergy: 0,
1068
1069
  tags: asBossTags(["重甲", "生物", "异形"]),
1069
1070
  passive: asPassives(["异形甲壳"])
1070
1071
  },
@@ -1073,19 +1074,19 @@ var bossPool = [
1073
1074
  name: "异齿猛兽",
1074
1075
  type: "子代",
1075
1076
  maxHP: 5e3,
1076
- energy: 0,
1077
+ maxEnergy: 0,
1077
1078
  tags: asBossTags(["重甲", "生物", "重型", "异形"]),
1078
1079
  passive: asPassives(["弱化形态", "异形甲壳"])
1079
1080
  }
1080
1081
  ]
1081
1082
  }),
1082
1083
  defineBoss({
1084
+ id: 2,
1083
1085
  main: {
1084
- id: 2,
1085
1086
  name: "寒冰王蛇",
1086
1087
  type: "主宰",
1087
1088
  maxHP: 15e3,
1088
- energy: 0,
1089
+ maxEnergy: 0,
1089
1090
  tags: asBossTags(["重甲", "生物", "惧热", "重型", "异形"]),
1090
1091
  passive: asPassives(["冰霜环绕", "冰霜进化"])
1091
1092
  },
@@ -1094,19 +1095,19 @@ var bossPool = [
1094
1095
  name: "冰蛇",
1095
1096
  type: "子代",
1096
1097
  maxHP: 5e3,
1097
- energy: 0,
1098
+ maxEnergy: 0,
1098
1099
  tags: asBossTags(["生物", "惧热", "异形"]),
1099
1100
  passive: asPassives(["弱化形态", "冰霜回复", "冰霜进化"])
1100
1101
  }
1101
1102
  ]
1102
1103
  }),
1103
1104
  defineBoss({
1105
+ id: 3,
1104
1106
  main: {
1105
- id: 3,
1106
1107
  name: "莽兽",
1107
1108
  type: "主宰",
1108
1109
  maxHP: 12e3,
1109
- energy: 0,
1110
+ maxEnergy: 0,
1110
1111
  tags: asBossTags(["重甲", "生物", "重型", "异形"]),
1111
1112
  passive: asPassives(["应激甲壳II", "求生本能II", "冷适应"])
1112
1113
  },
@@ -1115,7 +1116,7 @@ var bossPool = [
1115
1116
  name: "狂暴畸变体",
1116
1117
  type: "子代",
1117
1118
  maxHP: 4e3,
1118
- energy: 0,
1119
+ maxEnergy: 0,
1119
1120
  tags: asBossTags(["重甲", "生物", "重型", "异形"]),
1120
1121
  passive: asPassives(["弱化形态", "应激甲壳I", "求生本能I", "冷适应"])
1121
1122
  },
@@ -1123,19 +1124,19 @@ var bossPool = [
1123
1124
  name: "剧毒畸变体",
1124
1125
  type: "子代",
1125
1126
  maxHP: 4e3,
1126
- energy: 0,
1127
+ maxEnergy: 0,
1127
1128
  tags: asBossTags(["重甲", "生物", "重型", "异形"]),
1128
1129
  passive: asPassives(["弱化形态", "应激甲壳I", "求生本能I", "冷适应"])
1129
1130
  }
1130
1131
  ]
1131
1132
  }),
1132
1133
  defineBoss({
1134
+ id: 4,
1133
1135
  main: {
1134
- id: 4,
1135
1136
  name: "空间站感染虫",
1136
1137
  type: "主宰",
1137
1138
  maxHP: 1e4,
1138
- energy: 0,
1139
+ maxEnergy: 0,
1139
1140
  tags: asBossTags(["重甲", "生物", "机械", "异形"]),
1140
1141
  passive: asPassives(["感染空间站", "病毒云", "霉菌滋生"])
1141
1142
  },
@@ -1144,7 +1145,7 @@ var bossPool = [
1144
1145
  name: "机械感染虫",
1145
1146
  type: "子代",
1146
1147
  maxHP: 3e3,
1147
- energy: 0,
1148
+ maxEnergy: 0,
1148
1149
  tags: asBossTags(["重甲", "生物", "机械", "异形"]),
1149
1150
  passive: asPassives(["弱化形态", "病毒云", "霉菌滋生"])
1150
1151
  },
@@ -1152,19 +1153,19 @@ var bossPool = [
1152
1153
  name: "空间站哨枪塔",
1153
1154
  type: "子代",
1154
1155
  maxHP: 5e3,
1155
- energy: 0,
1156
+ maxEnergy: 0,
1156
1157
  tags: asBossTags(["重甲", "机械", "建筑"]),
1157
1158
  passive: asPassives(["岗哨机枪", "结构装甲"])
1158
1159
  }
1159
1160
  ]
1160
1161
  }),
1161
1162
  defineBoss({
1163
+ id: 5,
1162
1164
  main: {
1163
- id: 5,
1164
1165
  name: "吸血蝙蝠首领",
1165
1166
  type: "主宰",
1166
1167
  maxHP: 12e3,
1167
- energy: 0,
1168
+ maxEnergy: 0,
1168
1169
  tags: asBossTags(["生物", "异形"]),
1169
1170
  passive: asPassives(["吸血唾液", "进食", "吐血", "嗜血狂暴"])
1170
1171
  },
@@ -1173,19 +1174,19 @@ var bossPool = [
1173
1174
  name: "吸血蝙蝠",
1174
1175
  type: "子代",
1175
1176
  maxHP: 4e3,
1176
- energy: 0,
1177
+ maxEnergy: 0,
1177
1178
  tags: asBossTags(["生物", "异形"]),
1178
1179
  passive: asPassives(["弱化形态", "吸血唾液", "进食", "吐血"])
1179
1180
  }
1180
1181
  ]
1181
1182
  }),
1182
1183
  defineBoss({
1184
+ id: 6,
1183
1185
  main: {
1184
- id: 6,
1185
1186
  name: "亚电主宰者",
1186
1187
  type: "主宰",
1187
1188
  maxHP: 2e4,
1188
- energy: 1e3,
1189
+ maxEnergy: 1e3,
1189
1190
  tags: asBossTags(["护盾", "灵能", "重型", "异形"]),
1190
1191
  passive: asPassives(["超导体", "能源虹吸", "电能冲击波", "电能立场", "脉冲", "能量黑洞"])
1191
1192
  },
@@ -1194,19 +1195,19 @@ var bossPool = [
1194
1195
  name: "亚电能者",
1195
1196
  type: "子代",
1196
1197
  maxHP: 6e3,
1197
- energy: 0,
1198
+ maxEnergy: 0,
1198
1199
  tags: asBossTags(["护盾", "灵能", "异形"]),
1199
1200
  passive: asPassives(["弱化形态", "超导体", "能量虹吸", "能量黑洞"])
1200
1201
  }
1201
1202
  ]
1202
1203
  }),
1203
1204
  defineBoss({
1205
+ id: 7,
1204
1206
  main: {
1205
- id: 7,
1206
1207
  name: "烈焰庞兽",
1207
1208
  type: "主宰",
1208
1209
  maxHP: 2e4,
1209
- energy: 0,
1210
+ maxEnergy: 0,
1210
1211
  tags: asBossTags(["重甲", "生物", "惧寒", "重型", "异形"]),
1211
1212
  passive: asPassives(["火焰异形", "庞兽狂暴", "灼烧粘液", "炼狱爆弹", "火焰吐息", "太阳耀斑"])
1212
1213
  },
@@ -1215,19 +1216,19 @@ var bossPool = [
1215
1216
  name: "火焰甲虫",
1216
1217
  type: "子代",
1217
1218
  maxHP: 5e3,
1218
- energy: 0,
1219
+ maxEnergy: 0,
1219
1220
  tags: asBossTags(["重甲", "生物", "惧寒", "异形"]),
1220
1221
  passive: asPassives(["弱化形态", "火焰异形", "灼烧粘液", "腐蚀胆汁", "燃烧潜地"])
1221
1222
  }
1222
1223
  ]
1223
1224
  }),
1224
1225
  defineBoss({
1226
+ id: 8,
1225
1227
  main: {
1226
- id: 8,
1227
1228
  name: "狂猎猛禽首领",
1228
1229
  type: "主宰",
1229
1230
  maxHP: 2e4,
1230
- energy: 0,
1231
+ maxEnergy: 0,
1231
1232
  tags: asBossTags(["生物", "异形"]),
1232
1233
  passive: asPassives(["猎手异形", "致命一击", "狂暴", "伪装"])
1233
1234
  },
@@ -1236,7 +1237,7 @@ var bossPool = [
1236
1237
  name: "狂猎猛禽1",
1237
1238
  type: "子代",
1238
1239
  maxHP: 5e3,
1239
- energy: 0,
1240
+ maxEnergy: 0,
1240
1241
  tags: asBossTags(["生物", "异形"]),
1241
1242
  passive: asPassives(["弱化形态", "猎手异形", "狂暴", "伪装"])
1242
1243
  },
@@ -1244,19 +1245,19 @@ var bossPool = [
1244
1245
  name: "狂猎猛禽2",
1245
1246
  type: "子代",
1246
1247
  maxHP: 5e3,
1247
- energy: 0,
1248
+ maxEnergy: 0,
1248
1249
  tags: asBossTags(["生物", "异形"]),
1249
1250
  passive: asPassives(["弱化形态", "猎手异形", "狂暴", "伪装"])
1250
1251
  }
1251
1252
  ]
1252
1253
  }),
1253
1254
  defineBoss({
1255
+ id: 9,
1254
1256
  main: {
1255
- id: 9,
1256
1257
  name: "宇宙界主",
1257
1258
  type: "主宰",
1258
1259
  maxHP: 2e4,
1259
- energy: 1e3,
1260
+ maxEnergy: 1e3,
1260
1261
  tags: asBossTags(["重甲", "护盾", "生物", "灵能", "异形"]),
1261
1262
  passive: asPassives(["宇宙能量", "复苏", "光影之刃", "闪电冲锋", "远古预兆", "星界之风", "超视距穿梭"])
1262
1263
  },
@@ -1265,7 +1266,7 @@ var bossPool = [
1265
1266
  name: "宇宙战将",
1266
1267
  type: "子代",
1267
1268
  maxHP: 5e3,
1268
- energy: 0,
1269
+ maxEnergy: 0,
1269
1270
  tags: asBossTags(["重甲", "护盾", "生物", "灵能", "异形"]),
1270
1271
  passive: asPassives(["弱化形态", "心灵狂热", "星界之风"])
1271
1272
  }
@@ -1277,219 +1278,273 @@ var bossPool = [
1277
1278
  var passiveConfig = {
1278
1279
  "弱化形态": {
1279
1280
  effect: 0.1,
1280
- description: "子代的防御薄弱,受到的伤害+10%"
1281
+ maxStacks: 0,
1282
+ description: "子代防御脆弱,所受伤害提升10%"
1281
1283
  },
1282
1284
  "异形甲壳": {
1283
1285
  effect: -0.2,
1284
- description: "拥有坚硬的生物甲壳,受到的伤害-20%"
1286
+ maxStacks: 0,
1287
+ description: "强化生物甲壳提供防护,所受伤害降低20%"
1285
1288
  },
1286
1289
  "孤立无援": {
1287
1290
  effect: 0.2,
1288
- description: "没有存活的子代,受到的伤害+20%"
1291
+ maxStacks: 0,
1292
+ description: "无存活子代时,所受伤害提升20%"
1289
1293
  },
1290
1294
  "冰霜回复": {
1291
1295
  effect: 0,
1292
- description: "血量降低到30%以下时触发,回复自身40%的最大生命值,并且回复主宰10%的最大生命值(触发后移除)"
1296
+ maxStacks: 0,
1297
+ description: "生命值降至30%以下时触发,立即回复自身40%最大生命值,并为其他存活异形回复10%最大生命值(触发后效果移除)"
1293
1298
  },
1294
1299
  "冰霜进化": {
1295
1300
  effect: 0,
1296
- description: "免疫冰霜伤害,受到冰霜伤害会回复生命值"
1301
+ maxStacks: 0,
1302
+ description: "免疫冰霜类伤害,受到冰霜伤害时额外回复生命值"
1297
1303
  },
1298
1304
  "冰霜环绕": {
1299
1305
  effect: 0,
1300
- description: "血量降低到30%以下时触发,回复自身45%的最大生命值(触发后移除)"
1306
+ maxStacks: 0,
1307
+ description: "生命值降至30%以下时触发,立即回复自身45%最大生命值(触发后效果移除)"
1301
1308
  },
1302
1309
  "寒霜地狱": {
1303
1310
  effect: -0.3,
1304
- description: "灾难的暴风雪降临,受到的伤害-30%"
1311
+ maxStacks: 0,
1312
+ description: "暴风雪笼罩战场,所受伤害降低30%"
1305
1313
  },
1306
1314
  "应激甲壳I": {
1307
1315
  effect: -0.2,
1308
- description: "拥有自适应甲壳,受到的伤害-20%"
1316
+ maxStacks: 0,
1317
+ description: "基础应激甲壳生效,所受伤害降低20%"
1309
1318
  },
1310
1319
  "应激甲壳II": {
1311
1320
  effect: -0.25,
1312
- description: "拥有自适应甲壳,受到的伤害-25%"
1321
+ maxStacks: 0,
1322
+ description: "进阶应激甲壳生效,所受伤害降低25%"
1313
1323
  },
1314
1324
  "求生本能I": {
1315
1325
  effect: 0,
1316
- description: "濒死时,畸变体会迅速回复30%的最大生命值(触发后移除)"
1326
+ maxStacks: 0,
1327
+ description: "濒死状态下,快速回复30%最大生命值(触发后效果移除)"
1317
1328
  },
1318
1329
  "求生本能II": {
1319
1330
  effect: 0,
1320
- description: "濒死时,畸变体会迅速回复50%的最大生命值(触发后移除)"
1331
+ maxStacks: 0,
1332
+ description: "濒死状态下,快速回复50%最大生命值(触发后效果移除)"
1321
1333
  },
1322
1334
  "冷适应": {
1323
1335
  effect: 0,
1324
- description: "受到10次寒冷伤害后,自身获得“惧热”标签,并且免疫寒冷伤害"
1336
+ maxStacks: 10,
1337
+ description: "累计承受10次寒冷伤害后,获得「惧热」标签并获得寒冷伤害免疫"
1325
1338
  },
1326
1339
  "感染空间站": {
1327
1340
  effect: 0,
1328
- description: "若“空间站哨枪塔”存活,则自身受到的伤害-50%(空间站哨枪塔不属于子代)"
1341
+ maxStacks: 0,
1342
+ description: "若「空间站哨枪塔」存活(该单位不计入子代),自身所受伤害降低50%"
1329
1343
  },
1330
1344
  "病毒云": {
1331
1345
  effect: -0.1,
1332
- description: "释放病毒云雾保护自身,受到的伤害-10%"
1346
+ maxStacks: 0,
1347
+ description: "释放病毒云雾形成保护,所受伤害降低10%"
1333
1348
  },
1334
1349
  "霉菌滋生": {
1335
1350
  effect: 0,
1336
- description: "受到攻击后,若“空间站哨枪塔”存活,则为其回复1%的最大生命值"
1351
+ maxStacks: 0,
1352
+ description: "受到攻击后,若「空间站哨枪塔」存活,为其恢复1%最大生命值"
1337
1353
  },
1338
1354
  "岗哨机枪": {
1339
1355
  effect: 0,
1340
- description: "受到10次攻击后,为存活的异形回复其10%的最大生命值(可重复触发)"
1356
+ maxStacks: 10,
1357
+ description: "累计承受10次攻击后,为所有存活异形恢复其10%最大生命值(可重复触发)"
1341
1358
  },
1342
1359
  "结构装甲": {
1343
1360
  effect: 0,
1344
- description: "拥有结构装甲,受到的伤害-20%; 若伤害来源于热能武器,则受到的伤害-40%"
1361
+ maxStacks: 0,
1362
+ description: "装备结构装甲,常规伤害降低20%;若伤害来源为热能武器,伤害降低提升至40%"
1345
1363
  },
1346
1364
  "吸血唾液": {
1347
1365
  effect: 0,
1348
- description: "受到攻击将会获得一层“吸血”,每层“吸血”提供5%的减伤(至多20层)"
1366
+ maxStacks: 20,
1367
+ description: "受到攻击时叠加「吸血」层数,每层提供5%减伤(最多叠加20层)"
1349
1368
  },
1350
1369
  "进食": {
1351
1370
  effect: 0,
1352
- description: "当“吸血”达到20层后,下一次受到攻击将会消耗所有层数回复自身20%的最大生命值"
1371
+ maxStacks: 0,
1372
+ description: "当「吸血」层数达到20层时,下一次受击消耗所有层数并回复20%最大生命值"
1353
1373
  },
1354
1374
  "嗜血狂暴": {
1355
1375
  effect: 0,
1356
- description: "血量低于50%时,进入狂暴状态,每次受到攻击将会额外获得一层“吸血”,并且受到的伤害-20%"
1376
+ maxStacks: 0,
1377
+ description: "生命值低于50%时触发狂暴状态,每次受击额外叠加1层「吸血」,同时所受伤害降低20%"
1357
1378
  },
1358
1379
  "吐血": {
1359
1380
  effect: 0,
1360
- description: "当无“吸血”层数时,受到的伤害+20%"
1381
+ maxStacks: 0,
1382
+ description: "无「吸血」层数时,所受伤害提升20%"
1361
1383
  },
1362
1384
  "电能导体": {
1363
1385
  effect: 0,
1364
- description: "当血量降低到10%以下时,“护盾”标签变为“重甲”标签;"
1386
+ maxStacks: 0,
1387
+ description: "生命值降至10%以下时,「护盾」标签转换为「重甲」标签"
1365
1388
  },
1366
1389
  "超导体": {
1367
1390
  effect: 0,
1368
- description: "当血量降低到5%以下时,“护盾”标签变为“重甲”标签;"
1391
+ maxStacks: 0,
1392
+ description: "生命值降至5%以下时,「护盾」标签转换为「重甲」标签"
1369
1393
  },
1370
1394
  "能量虹吸": {
1371
1395
  effect: 0,
1372
- description: "当血量≥70%的时候,受到的伤害-40%; 当血量≥30%的时候,受到的伤害-20%"
1396
+ maxStacks: 0,
1397
+ description: "生命值≥70%时,所受伤害降低40%;生命值≥30%时,伤害降低20%"
1373
1398
  },
1374
1399
  "能源虹吸": {
1375
1400
  effect: 0,
1376
- description: "当“能量”≥80%的时候,受到的伤害-50%; 当“能量”≥50%的时候,受到的伤害-30%"
1401
+ maxStacks: 0,
1402
+ description: "能量值≥80%时,所受伤害降低50%;能量值≥50%时,伤害降低30%"
1377
1403
  },
1378
1404
  "电能立场": {
1379
1405
  effect: 0,
1380
- description: "当“能量”≥30%的时候,每次受到攻击有55%的概率免疫此次伤害(无法免疫寒冷伤害); 每拥有一层“寒冷”则降低5%的概率"
1406
+ maxStacks: 0,
1407
+ description: "能量值≥30%时,每次受击有55%概率免疫该次伤害(无法免疫寒冷伤害);每存在1层「寒冷」状态,免疫概率降低5%"
1381
1408
  },
1382
1409
  "电能冲击波": {
1383
1410
  effect: 0,
1384
- description: "每次受到攻击时,自身回复100点“能量”"
1411
+ maxStacks: 0,
1412
+ description: "每次受击时,回复100点「能量」"
1385
1413
  },
1386
1414
  "脉冲": {
1387
1415
  effect: 0,
1388
- description: "当“能量”≥30%的时候,每次受到攻击有60%的概率回复所有存活的异形100点血量; 每拥有一层“寒冷”则降低5%的概率"
1416
+ maxStacks: 0,
1417
+ description: "能量值≥30%时,每次受击有60%概率为所有存活异形回复100点生命值;每存在1层「寒冷」状态,概率降低5%"
1389
1418
  },
1390
1419
  "能量黑洞": {
1391
1420
  effect: -0.2,
1392
- description: "存在“能量黑洞”,受到的伤害-20%"
1421
+ maxStacks: 0,
1422
+ description: "存在「能量黑洞」时,所受伤害降低20%"
1393
1423
  },
1394
1424
  "火焰异形": {
1395
1425
  effect: 0,
1396
- description: "免疫火焰伤害,受到火焰伤害时会回复生命值"
1426
+ maxStacks: 0,
1427
+ description: "免疫火焰类伤害,受到火焰伤害时额外回复生命值"
1397
1428
  },
1398
1429
  "庞兽狂暴": {
1399
1430
  effect: 0,
1400
- description: "血量低于50%时,进入狂暴状态,受到的伤害-50%"
1431
+ maxStacks: 0,
1432
+ description: "生命值低于50%时触发狂暴状态,所受伤害降低50%"
1401
1433
  },
1402
1434
  "灼烧粘液": {
1403
1435
  effect: 0,
1404
- description: "受到伤害时,会获得一层“胆汁”; 若存在“胆汁”层数时受到火焰攻击,将立刻清空层数并回复X点生命值(X为“胆汁”层数 x 10)"
1436
+ maxStacks: 20,
1437
+ description: "受到伤害时叠加「胆汁」层数;若存在「胆汁」层数时受到火焰攻击,立即清空层数并回复(层数×10)点生命值"
1405
1438
  },
1406
1439
  "腐蚀胆汁": {
1407
1440
  effect: 0,
1408
- description: "当“胆汁”达到10层后,下一次受到攻击将回复所有存活异形1000点血量并清空层数"
1441
+ maxStacks: 0,
1442
+ description: "「胆汁」层数达到10层时,下一次受击为所有存活异形回复1000点生命值并清空层数"
1409
1443
  },
1410
1444
  "火焰吐息": {
1411
1445
  effect: 0,
1412
- description: "当“胆汁”达到20层后,下一次攻击将回复所有存活异形50%的最大生命值并清空层数"
1446
+ maxStacks: 0,
1447
+ description: "「胆汁」层数达到20层时,下一次攻击为所有存活异形回复50%最大生命值并清空层数"
1413
1448
  },
1414
1449
  "太阳耀斑": {
1415
1450
  effect: 0,
1416
- description: "当所有子代阵亡后,自身将移除“惧寒”标签和“孤立无援”并且免疫寒冷伤害"
1451
+ maxStacks: 0,
1452
+ description: "所有子代阵亡后,移除「惧寒」标签及「孤立无援」并获得寒冷伤害免疫"
1417
1453
  },
1418
1454
  "燃烧潜地": {
1419
1455
  effect: 0,
1420
- description: "血量降低到10%以下时触发,回复自身50%的最大生命值(触发后移除)"
1456
+ maxStacks: 0,
1457
+ description: "生命值降至10%以下时触发,立即回复50%最大生命值(触发后效果移除)"
1421
1458
  },
1422
1459
  "炼狱爆弹": {
1423
1460
  effect: 0,
1424
- description: "每拥有一层“胆汁”,受到的伤害-5%; 若有存活的子代,则每层“胆汁”使受到的伤害额外-5%"
1461
+ maxStacks: 0,
1462
+ description: "每存在1层「胆汁」,所受伤害降低5%;若存在存活子代,伤害降低效果额外提升5%(即每层「胆汁」总降低10%)"
1425
1463
  },
1426
1464
  "猎手异形": {
1427
1465
  effect: 0,
1428
- description: "若有存活的其他异形,则受到的伤害-20%; 若没有存活的其他异形,则受到的伤害+20%; 免疫火焰伤害; 免疫寒冷伤害"
1466
+ maxStacks: 0,
1467
+ description: "存在其他存活异形时,所受伤害降低20%;无其他存活异形时,所受伤害提升20%;免疫火焰及寒冷伤害"
1429
1468
  },
1430
1469
  "狂暴": {
1431
1470
  effect: 0,
1432
- description: "血量低于50%时,进入狂暴状态,受到的伤害-50%"
1471
+ maxStacks: 0,
1472
+ description: "生命值低于50%时触发狂暴状态,所受伤害降低50%"
1433
1473
  },
1434
1474
  "伪装": {
1435
1475
  effect: 0,
1436
- description: "受到伤害时,记录伤害来源的武器名称(最多一种,新记录会替换旧记录),下次受到相同武器伤害时伤害减少80%"
1476
+ maxStacks: 0,
1477
+ description: "受击时记录伤害来源的武器名称(仅保留最新),下次受到同名称武器伤害时伤害降低80%"
1437
1478
  },
1438
1479
  "致命一击": {
1439
1480
  effect: 0,
1440
- description: "受到伤害时,有5%的概率免疫此次伤害"
1481
+ maxStacks: 0,
1482
+ description: "受击时有5%概率免疫该次伤害"
1441
1483
  },
1442
1484
  "星界之风": {
1443
1485
  effect: 0,
1444
- description: "受到伤害时,有5%的概率回复所有存活异形200点血量"
1486
+ maxStacks: 0,
1487
+ description: "受击时有5%概率为所有存活异形回复200点生命值"
1445
1488
  },
1446
1489
  "心灵狂热": {
1447
1490
  effect: 0,
1448
- description: "当血量低于50%时,进入心灵狂热状态,受到的伤害-20%,并且触发“星界之风”技能的概率翻倍"
1491
+ maxStacks: 0,
1492
+ description: "生命值低于50%时进入心灵狂热状态,所受伤害降低20%,同时「星界之风」触发概率翻倍"
1449
1493
  },
1450
1494
  "宇宙能量": {
1451
1495
  effect: 0,
1452
- description: "受到攻击时回复与该攻击伤害等额的“能量”; 若“能量”已满,则回复溢出伤害值的血量"
1496
+ maxStacks: 0,
1497
+ description: "受击时回复等同于本次伤害值的「能量」;若「能量」已满,则将溢出部分转换为自身生命值"
1453
1498
  },
1454
1499
  "复苏": {
1455
1500
  effect: 0,
1456
- description: "受到致命伤害时,免于死亡,快速回复自身50%的最大生命值和100%的“能量”,并且获得“灵能构造炉”技能(触发后移除)"
1501
+ maxStacks: 0,
1502
+ description: "承受致命伤害时免疫死亡,立即回复50%最大生命值及100%「能量」,并获得「灵能构造炉」技能(触发后效果移除)"
1457
1503
  },
1458
1504
  "光影之刃": {
1459
1505
  effect: 0,
1460
- description: "受到伤害后,获得一层“光影之刃”"
1506
+ maxStacks: 0,
1507
+ description: "受击后叠加「光影之刃」层数"
1461
1508
  },
1462
1509
  "远古预兆": {
1463
1510
  effect: 0,
1464
- description: "受到伤害时,有1%的概率免疫此次伤害并且回复100点“能量”"
1511
+ maxStacks: 0,
1512
+ description: "受击时有1%概率免疫该次伤害并回复100点「能量」"
1465
1513
  },
1466
1514
  "闪电冲锋": {
1467
1515
  effect: 0,
1468
- description: "每层“光影之刃”使触发“星界之风”,“远古预兆”和“灵能构造炉”技能的概率+1%"
1516
+ maxStacks: 0,
1517
+ description: "每存在1层「光影之刃」,「远古预兆」「灵能构造炉」触发概率各提升0.5%"
1469
1518
  },
1470
1519
  "超视距穿梭": {
1471
1520
  effect: 0,
1472
- description: "当“能量”≥30%时,每层“光影之刃”使受到的伤害-5%; 当“能量”≥60%时,每层“光影之刃”使受到的伤害-10%; 当“能量”≤10%时,每层“光影之刃”使受到的伤害+5%"
1521
+ maxStacks: 0,
1522
+ description: "能量值≥30%时,每层「光影之刃」降低5%所受伤害;能量值≥60%时,每层降低10%;能量值≤10%时,每层提升5%所受伤害"
1473
1523
  },
1474
1524
  "灵能构造炉": {
1475
1525
  effect: 0,
1476
- description: "受到攻击后,有1%的概率会随机获得以下4个技能之一(天启超载护盾,塌缩脉冲,地毯式轰炸,轰炸引导)"
1526
+ maxStacks: 0,
1527
+ description: "受击后有5%概率随机获得以下技能之一:天启超载护盾、塌缩脉冲、地毯式轰炸、轰炸引导"
1477
1528
  },
1478
1529
  "天启超载护盾": {
1479
1530
  effect: 0,
1480
- description: "受到伤害后,有5%的概率回复所有存活异形X点血量(X为“光影之刃”层数 x 10)"
1531
+ maxStacks: 0,
1532
+ description: "受击后有5%概率为所有存活异形回复(「光影之刃」层数×10)点生命值"
1481
1533
  },
1482
1534
  "塌缩脉冲": {
1483
1535
  effect: 0,
1484
- description: "受到伤害后,额外获得一层“光影之刃”"
1536
+ maxStacks: 0,
1537
+ description: "受击后额外叠加1层「光影之刃」"
1485
1538
  },
1486
1539
  "地毯式轰炸": {
1487
1540
  effect: 0,
1488
- description: "我心中的怒火胜过千万个太阳!移除自身的“孤立无援”,并使受到的伤害-100%"
1541
+ maxStacks: 0,
1542
+ description: "触发时移除「孤立无援」,并使自身所受伤害降低100%(免疫所有伤害)"
1489
1543
  },
1490
1544
  "轰炸引导": {
1491
1545
  effect: 0,
1492
- description: "受到伤害后,有10%的概率概率回复自身X点“能量”(X为“光影之刃”层数 x 50)"
1546
+ maxStacks: 0,
1547
+ description: "受击后有10%概率回复(「光影之刃」层数×50)点「能量」"
1493
1548
  }
1494
1549
  };
1495
1550
 
@@ -1880,14 +1935,17 @@ function createHpBar(current, max) {
1880
1935
  }
1881
1936
  __name(createHpBar, "createHpBar");
1882
1937
  async function activateNextBossGroup(ctx, currentBossId = null) {
1883
- let nextIndex = 0;
1884
- if (currentBossId !== null) {
1885
- const currentIndex = bossPool.findIndex((b) => b.main.id === currentBossId);
1886
- if (currentIndex !== -1) {
1887
- nextIndex = (currentIndex + 1) % bossPool.length;
1938
+ let availableIndices = [];
1939
+ bossPool.forEach((bossGroup, index) => {
1940
+ if (currentBossId === null || bossGroup.id !== currentBossId) {
1941
+ availableIndices.push(index);
1888
1942
  }
1943
+ });
1944
+ if (availableIndices.length === 0) {
1945
+ availableIndices = Array.from({ length: bossPool.length }, (_, i) => i);
1889
1946
  }
1890
- const nextBossGroup = bossPool[nextIndex];
1947
+ const randomIndex = availableIndices[Math.floor(Math.random() * availableIndices.length)];
1948
+ const nextBossGroup = bossPool[randomIndex];
1891
1949
  const mainBoss = await ctx.database.create("ggcevo_boss", {
1892
1950
  name: nextBossGroup.main.name,
1893
1951
  type: nextBossGroup.main.type,
@@ -1895,8 +1953,8 @@ async function activateNextBossGroup(ctx, currentBossId = null) {
1895
1953
  tags: nextBossGroup.main.tags,
1896
1954
  // 新增标签字段
1897
1955
  skills: [...nextBossGroup.main.passive],
1898
- energy: nextBossGroup.main.energy,
1899
- groupId: nextBossGroup.main.id,
1956
+ energy: nextBossGroup.main.maxEnergy,
1957
+ groupId: nextBossGroup.id,
1900
1958
  isActive: true,
1901
1959
  respawnTime: /* @__PURE__ */ new Date()
1902
1960
  });
@@ -1908,8 +1966,8 @@ async function activateNextBossGroup(ctx, currentBossId = null) {
1908
1966
  tags: minion.tags,
1909
1967
  // 新增标签字段
1910
1968
  skills: [...minion.passive],
1911
- energy: minion.energy,
1912
- groupId: mainBoss.groupId,
1969
+ energy: minion.maxEnergy,
1970
+ groupId: nextBossGroup.id,
1913
1971
  isActive: true,
1914
1972
  respawnTime: /* @__PURE__ */ new Date()
1915
1973
  });
@@ -2387,15 +2445,17 @@ __name(getRankInfo, "getRankInfo");
2387
2445
 
2388
2446
  // src/boss/passivehandler.ts
2389
2447
  var PassiveHandler = {
2448
+ // 在PassiveHandler中增强统计数组结构
2449
+ processingResults: [],
2390
2450
  // 冰霜进化处理(免疫冰霜伤害)
2391
2451
  handleFrostEvolution: /* @__PURE__ */ __name(function(targetBoss, weaponName, damage, maxHP) {
2392
2452
  if (targetBoss.skills.includes("冰霜进化") && weaponName === "零度之下") {
2393
- const healAmount = damage;
2453
+ const actualHeal = Math.min(damage, maxHP - targetBoss.HP);
2394
2454
  return {
2395
- updatedHP: Math.min(targetBoss.HP + healAmount, maxHP),
2455
+ updatedHP: targetBoss.HP + actualHeal,
2396
2456
  initialDamage: 0,
2397
2457
  // 直接设置伤害为0
2398
- messages: [`❄️ 【冰霜进化】生效:免疫寒冷伤害,${targetBoss.name}回复${healAmount}生命值`]
2458
+ messages: [`❄️ 【冰霜进化】生效:免疫寒冷伤害,${targetBoss.name}回复${actualHeal}生命值`]
2399
2459
  };
2400
2460
  }
2401
2461
  return null;
@@ -2439,15 +2499,17 @@ var PassiveHandler = {
2439
2499
  currentHP / maxHP > 0.3) {
2440
2500
  return null;
2441
2501
  }
2442
- const selfHeal = Math.floor(maxHP * 0.4);
2443
- const updatedHP = Math.min(currentHP + selfHeal, maxHP);
2502
+ const selfHealMax = Math.floor(maxHP * 0.4);
2503
+ const actualSelfHeal = Math.min(selfHealMax, maxHP - currentHP);
2504
+ const updatedHP = currentHP + actualSelfHeal;
2444
2505
  let mainHeal = 0;
2445
2506
  const mainBoss = activeBosses.find(
2446
2507
  (b) => b.groupId === targetBoss.groupId && b.type === "主宰"
2447
2508
  );
2448
2509
  if (mainBoss) {
2449
2510
  const mainMaxHP = bossGroup.main.maxHP;
2450
- mainHeal = Math.floor(mainMaxHP * 0.1);
2511
+ const mainHealMax = Math.floor(mainMaxHP * 0.1);
2512
+ mainHeal = Math.min(mainHealMax, mainMaxHP - mainBoss.HP);
2451
2513
  await ctx.database.set(
2452
2514
  "ggcevo_boss",
2453
2515
  { name: mainBoss.name },
@@ -2461,8 +2523,9 @@ var PassiveHandler = {
2461
2523
  remove: ["冰霜回复"]
2462
2524
  }],
2463
2525
  messages: [
2464
- `❄️ 【冰霜回复】生效,${targetBoss.name}回复40%最大生命值(+${selfHeal}HP),${mainBoss.name}回复10%最大生命值(+${mainHeal}HP)`
2465
- ]
2526
+ `❄️ 【冰霜回复】生效,${targetBoss.name}回复${actualSelfHeal}生命值(理论40%最大HP)`,
2527
+ mainBoss ? `,${mainBoss.name}回复${mainHeal}生命值(理论10%最大HP)` : ""
2528
+ ].filter(Boolean)
2466
2529
  };
2467
2530
  }, "handleFrostRecovery"),
2468
2531
  // 冷适应计数处理
@@ -3162,11 +3225,11 @@ var PassiveHandler = {
3162
3225
  if (targetBoss.skills.includes("火焰异形") && weaponName === "焚烧枪") {
3163
3226
  const maxHP = this.getMemberMaxHP(targetBoss.name, bossGroup);
3164
3227
  if (!maxHP) return null;
3165
- const healAmount = Math.min(initialDamage, maxHP - targetBoss.HP);
3166
- let updatedHP = Math.min(targetBoss.HP + healAmount, maxHP);
3228
+ const actualHeal = Math.min(initialDamage, maxHP - targetBoss.HP);
3229
+ let updatedHP = Math.min(targetBoss.HP + actualHeal, maxHP);
3167
3230
  const messages = [
3168
3231
  `🔥 【火焰异形】生效:免疫火焰伤害`,
3169
- healAmount > 0 ? `${targetBoss.name}回复${healAmount}点生命值` : ""
3232
+ actualHeal > 0 ? `${targetBoss.name}回复${actualHeal}点生命值` : ""
3170
3233
  ].filter(Boolean);
3171
3234
  const bileResult = await this.handleBileIgnition(ctx, targetBoss, bossGroup, updatedHP);
3172
3235
  if (bileResult) {
@@ -3185,23 +3248,22 @@ var PassiveHandler = {
3185
3248
  }, "handleFireEvolution"),
3186
3249
  // 修改后的灼烧粘液引爆
3187
3250
  handleBileIgnition: /* @__PURE__ */ __name(async function(ctx, targetBoss, bossGroup, updatedHP) {
3188
- if (!targetBoss.skills.includes("灼烧粘液")) return null;
3251
+ if (!targetBoss.skills.includes("腐蚀胆汁")) return null;
3189
3252
  const bileStacks = targetBoss.Skillcountpoints || 0;
3190
3253
  if (bileStacks < 1) return null;
3254
+ const theoreticalHeal = bileStacks * 10;
3191
3255
  const maxHP = this.getMemberMaxHP(targetBoss.name, bossGroup);
3192
- if (!maxHP) return null;
3193
- const healAmount = bileStacks * 10;
3194
- const newHP = Math.min(updatedHP + healAmount, maxHP);
3256
+ const actualHeal = Math.min(theoreticalHeal, maxHP - updatedHP);
3195
3257
  await ctx.database.set(
3196
3258
  "ggcevo_boss",
3197
3259
  { name: targetBoss.name },
3198
- { Skillcountpoints: 0, HP: newHP }
3260
+ { Skillcountpoints: 0, HP: updatedHP + actualHeal }
3199
3261
  );
3200
3262
  return {
3201
3263
  messages: [
3202
- `💥 【灼烧粘液】引爆:消耗${bileStacks}层"胆汁",${targetBoss.name}回复${healAmount}点生命值`
3264
+ `💥 【腐蚀胆汁】引爆:消耗${bileStacks}层"胆汁",${targetBoss.name}回复${actualHeal}点生命值`
3203
3265
  ],
3204
- newHP,
3266
+ newHP: updatedHP + actualHeal,
3205
3267
  bileStacks
3206
3268
  };
3207
3269
  }, "handleBileIgnition"),
@@ -3415,7 +3477,6 @@ var PassiveHandler = {
3415
3477
  }
3416
3478
  let lightbladeStacks = 0;
3417
3479
  if (targetBoss.skills.includes("闪电冲锋")) {
3418
- lightbladeStacks = targetBoss?.Skillcountpoints || 0;
3419
3480
  }
3420
3481
  const triggerChance = baseChance + lightbladeStacks;
3421
3482
  if (Math.random() * 100 < triggerChance) {
@@ -3483,7 +3544,8 @@ var PassiveHandler = {
3483
3544
  if (newEnergy >= maxEnergy) {
3484
3545
  const overflow = initialDamage - energyToAdd;
3485
3546
  if (overflow > 0) {
3486
- const maxHP = PassiveHandler.getMemberConfig(targetBoss.name, bossGroup)?.maxHP || 0;
3547
+ const memberConfig = PassiveHandler.getMemberConfig(targetBoss.name, bossGroup);
3548
+ const maxHP = memberConfig?.maxHP || 0;
3487
3549
  if (maxHP > 0) {
3488
3550
  healAmount = Math.min(overflow, maxHP - targetBoss.HP);
3489
3551
  messages.push(`能量溢出回复${healAmount}点生命值`);
@@ -3524,7 +3586,7 @@ var PassiveHandler = {
3524
3586
  if (targetBoss.skills.includes("闪电冲锋")) {
3525
3587
  lightbladeStacks = targetBoss?.Skillcountpoints || 0;
3526
3588
  }
3527
- const totalChance = 1 + lightbladeStacks;
3589
+ const totalChance = 1 + lightbladeStacks * 0.5;
3528
3590
  if (Math.random() * 100 < totalChance) {
3529
3591
  const maxEnergy = 1e3;
3530
3592
  const currentEnergy = targetBoss.energy || 0;
@@ -3621,7 +3683,7 @@ var PassiveHandler = {
3621
3683
  if (targetBoss.skills.includes("闪电冲锋")) {
3622
3684
  lightbladeStacks = targetBoss.Skillcountpoints || 0;
3623
3685
  }
3624
- const totalChance = 1 + lightbladeStacks;
3686
+ const totalChance = 5 + lightbladeStacks * 0.5;
3625
3687
  if (Math.random() * 100 < totalChance) {
3626
3688
  const availableSkills = allSkills.filter(
3627
3689
  (skill) => !targetBoss.skills.includes(skill)
@@ -3767,6 +3829,7 @@ var PassiveHandler = {
3767
3829
  let pulseApplied = false;
3768
3830
  let arcApplied = false;
3769
3831
  let bileStacks = 0;
3832
+ let skipBileStacking = false;
3770
3833
  const activeBosses = await ctx.database.get("ggcevo_boss", { isActive: true });
3771
3834
  const solarFlareResult = await this.handleSolarFlare(ctx, targetBoss, weaponName);
3772
3835
  if (solarFlareResult.immune) {
@@ -3989,78 +4052,69 @@ var PassiveHandler = {
3989
4052
  `⚡ 减伤效果:${(nerfMultiplier * 100).toFixed(0)}% → ${(effectiveNerf * 100).toFixed(0)}%`
3990
4053
  );
3991
4054
  }
3992
- if (currentHP <= 0 && !targetBoss.skills.includes("求生本能I") && !targetBoss.skills.includes("求生本能II") && !targetBoss.skills.includes("复苏")) {
3993
- return {
3994
- currentHP,
3995
- messages,
3996
- skillUpdates,
3997
- initialDamage: finalDamage,
3998
- radiationApplied,
3999
- freezing
4000
- };
4001
- }
4002
- const frostSurroundResult = await this.handleFrostSurround(ctx, targetBoss, currentHP, maxHP);
4003
- if (frostSurroundResult) {
4004
- currentHP = frostSurroundResult.updatedHP;
4005
- messages.push(...frostSurroundResult.messages);
4006
- skillUpdates.push(...frostSurroundResult.skillUpdates);
4007
- }
4008
- const frostRecoveryResult = await this.handleFrostRecovery(ctx, targetBoss, currentHP, maxHP, activeBosses, bossGroup);
4009
- if (frostRecoveryResult) {
4010
- currentHP = frostRecoveryResult.updatedHP;
4011
- messages.push(...frostRecoveryResult.messages);
4012
- skillUpdates.push(...frostRecoveryResult.skillUpdates);
4013
- }
4014
- const burningBurrowResult = await this.handleBurningBurrow(ctx, targetBoss, currentHP, maxHP);
4015
- if (burningBurrowResult) {
4016
- currentHP = burningBurrowResult.updatedHP;
4017
- messages.push(...burningBurrowResult.messages);
4018
- skillUpdates.push(...burningBurrowResult.skillUpdates);
4019
- }
4020
- const moldResult = await this.handleMoldGrowth(ctx, targetBoss, bossGroup);
4021
- if (moldResult) {
4022
- messages.push(...moldResult.messages);
4023
- }
4024
- const pulseResult = await this.handlePulse(
4025
- ctx,
4026
- targetBoss,
4027
- activeBosses,
4028
- bossGroup,
4029
- currentHP
4030
- // 传入当前HP值
4031
- );
4032
- if (pulseResult) {
4033
- currentHP = pulseResult.newHP;
4034
- messages.push(...pulseResult.messages);
4035
- }
4036
- let skipBileStacking = false;
4037
- if (weaponName !== "焚烧枪") {
4038
- if (targetBoss.skills.includes("腐蚀胆汁")) {
4039
- const bileTriggered = await this.handleCorrosiveBile(ctx, targetBoss, bossGroup, currentHP);
4040
- if (bileTriggered) {
4041
- currentHP = bileTriggered.currentHP;
4042
- skipBileStacking = true;
4043
- messages.push(...bileTriggered.messages);
4055
+ if (currentHP > 0) {
4056
+ const frostSurroundResult = await this.handleFrostSurround(ctx, targetBoss, currentHP, maxHP);
4057
+ if (frostSurroundResult) {
4058
+ currentHP = frostSurroundResult.updatedHP;
4059
+ messages.push(...frostSurroundResult.messages);
4060
+ skillUpdates.push(...frostSurroundResult.skillUpdates);
4061
+ }
4062
+ const frostRecoveryResult = await this.handleFrostRecovery(ctx, targetBoss, currentHP, maxHP, activeBosses, bossGroup);
4063
+ if (frostRecoveryResult) {
4064
+ currentHP = frostRecoveryResult.updatedHP;
4065
+ messages.push(...frostRecoveryResult.messages);
4066
+ skillUpdates.push(...frostRecoveryResult.skillUpdates);
4067
+ }
4068
+ const burningBurrowResult = await this.handleBurningBurrow(ctx, targetBoss, currentHP, maxHP);
4069
+ if (burningBurrowResult) {
4070
+ currentHP = burningBurrowResult.updatedHP;
4071
+ messages.push(...burningBurrowResult.messages);
4072
+ skillUpdates.push(...burningBurrowResult.skillUpdates);
4073
+ }
4074
+ const moldResult = await this.handleMoldGrowth(ctx, targetBoss, bossGroup);
4075
+ if (moldResult) {
4076
+ messages.push(...moldResult.messages);
4077
+ }
4078
+ const pulseResult = await this.handlePulse(
4079
+ ctx,
4080
+ targetBoss,
4081
+ activeBosses,
4082
+ bossGroup,
4083
+ currentHP
4084
+ // 传入当前HP值
4085
+ );
4086
+ if (pulseResult) {
4087
+ currentHP = pulseResult.newHP;
4088
+ messages.push(...pulseResult.messages);
4089
+ }
4090
+ if (weaponName !== "焚烧枪") {
4091
+ if (targetBoss.skills.includes("腐蚀胆汁")) {
4092
+ const bileTriggered = await this.handleCorrosiveBile(ctx, targetBoss, bossGroup, currentHP);
4093
+ if (bileTriggered) {
4094
+ currentHP = bileTriggered.currentHP;
4095
+ skipBileStacking = true;
4096
+ messages.push(...bileTriggered.messages);
4097
+ }
4044
4098
  }
4045
- }
4046
- if (targetBoss.skills.includes("火焰吐息")) {
4047
- const breathTriggered = await this.handleFireBreath(ctx, targetBoss, bossGroup, currentHP);
4048
- if (breathTriggered) {
4049
- currentHP = breathTriggered.currentHP;
4050
- skipBileStacking = true;
4051
- messages.push(...breathTriggered.messages);
4099
+ if (targetBoss.skills.includes("火焰吐息")) {
4100
+ const breathTriggered = await this.handleFireBreath(ctx, targetBoss, bossGroup, currentHP);
4101
+ if (breathTriggered) {
4102
+ currentHP = breathTriggered.currentHP;
4103
+ skipBileStacking = true;
4104
+ messages.push(...breathTriggered.messages);
4105
+ }
4052
4106
  }
4053
4107
  }
4054
- }
4055
- const stellarWindResult = await this.handleStellarWind(ctx, targetBoss, initialDamage, currentHP, maxHP, activeBosses, bossGroup);
4056
- if (stellarWindResult) {
4057
- currentHP = stellarWindResult.updatedHP;
4058
- messages.push(...stellarWindResult.messages);
4059
- }
4060
- const shieldResult = await this.handleTyrsShield(ctx, targetBoss, currentHP, activeBosses, bossGroup);
4061
- if (shieldResult) {
4062
- currentHP = shieldResult.updatedHP;
4063
- messages.push(...shieldResult.messages);
4108
+ const stellarWindResult = await this.handleStellarWind(ctx, targetBoss, initialDamage, currentHP, maxHP, activeBosses, bossGroup);
4109
+ if (stellarWindResult) {
4110
+ currentHP = stellarWindResult.updatedHP;
4111
+ messages.push(...stellarWindResult.messages);
4112
+ }
4113
+ const shieldResult = await this.handleTyrsShield(ctx, targetBoss, currentHP, activeBosses, bossGroup);
4114
+ if (shieldResult) {
4115
+ currentHP = shieldResult.updatedHP;
4116
+ messages.push(...shieldResult.messages);
4117
+ }
4064
4118
  }
4065
4119
  const survivalResult = this.handleSurvivalInstinct(targetBoss, currentHP, maxHP);
4066
4120
  if (survivalResult) {
@@ -4906,13 +4960,13 @@ function apply(ctx, config) {
4906
4960
  name: "string",
4907
4961
  type: "string",
4908
4962
  HP: "unsigned",
4963
+ energy: "unsigned",
4909
4964
  tags: { type: "list", initial: [] },
4910
4965
  skills: { type: "list", initial: [] },
4911
4966
  // 明确数组元素类型
4912
4967
  Skillcountpoints: "unsigned",
4913
4968
  Vulnerability: "unsigned",
4914
4969
  freezing: "unsigned",
4915
- energy: "unsigned",
4916
4970
  lastWeaponName: "string",
4917
4971
  // 新增字段,记录伪装技能的信息
4918
4972
  groupId: "unsigned",
@@ -4991,8 +5045,8 @@ function apply(ctx, config) {
4991
5045
  const totalBosses = await ctx.database.select("ggcevo_boss").execute((row) => import_koishi.$.count(row.name));
4992
5046
  const groupId = [...config.groupId];
4993
5047
  if (totalBosses === 0) {
4994
- await activateNextBossGroup(ctx);
4995
- await ctx.broadcast(groupId, `🔄 咕咕之战系统已初始化,首个主宰已登场!`);
5048
+ const firstBoss = await activateNextBossGroup(ctx);
5049
+ await ctx.broadcast(groupId, `🔄 咕咕之战系统已初始化,首个主宰【${firstBoss.name}】已登场!`);
4996
5050
  return;
4997
5051
  }
4998
5052
  const now = /* @__PURE__ */ new Date();
@@ -5002,10 +5056,14 @@ function apply(ctx, config) {
5002
5056
  isActive: false
5003
5057
  }).execute();
5004
5058
  for (const group of expiredGroups) {
5059
+ const currentGroupId = group.groupId;
5005
5060
  await ctx.database.remove("ggcevo_boss_damage", {});
5006
5061
  await ctx.database.remove("ggcevo_boss", {});
5007
- await activateNextBossGroup(ctx, group.groupId);
5008
- await ctx.broadcast(groupId, `🔄 ${group.name}主宰组已刷新,快去挑战吧!`);
5062
+ const newBossGroup = await activateNextBossGroup(ctx, currentGroupId);
5063
+ await ctx.broadcast(
5064
+ groupId,
5065
+ `🔄 新的主宰【${newBossGroup.name}】组已刷新,快去挑战吧!`
5066
+ );
5009
5067
  }
5010
5068
  }, 60 * 1e3);
5011
5069
  ctx.setInterval(async () => {
@@ -7421,7 +7479,7 @@ ${validTypes.join("、")}`;
7421
7479
  `🔴 主宰:${mainBoss.name}`,
7422
7480
  `${mainBossHpBar} (${mainBoss.HP}/${bossGroup.main.maxHP})`
7423
7481
  ];
7424
- if (bossGroup.main.energy > 0) {
7482
+ if (bossGroup.main.maxEnergy > 0) {
7425
7483
  result.push(`⚡ 能量:${mainBoss.energy}/1000`);
7426
7484
  }
7427
7485
  result.push(`🏷️ 标签:${mainBoss.tags?.join("、") || "无"}`);
@@ -7454,7 +7512,7 @@ ${validTypes.join("、")}`;
7454
7512
  `❤️ ${minion.name}`,
7455
7513
  `${minionHpBar} (${minion.HP}/${minionConfig?.maxHP || "未知"})`
7456
7514
  ];
7457
- if (minionConfig && minionConfig.energy > 0) {
7515
+ if (minionConfig && minionConfig.maxEnergy > 0) {
7458
7516
  minionInfo.push(`⚡ 能量:${minion.energy}/1000`);
7459
7517
  }
7460
7518
  minionInfo.push(`🏷️ 标签:${minion.tags?.join("、") || "无"}`);
@@ -7485,19 +7543,19 @@ ${validTypes.join("、")}`;
7485
7543
  });
7486
7544
  ctx.command("ggcevo/初始化异形 <groupid:number>", "初始化指定主宰组", { authority: 3 }).alias("初始化yx").action(async (_, groupid) => {
7487
7545
  if (!groupid) groupid = 1;
7488
- const bossConfig = bossPool.find((g) => g.main.id === groupid);
7546
+ const bossConfig = bossPool.find((g) => g.id === groupid);
7489
7547
  if (!bossConfig) {
7490
7548
  return `未找到groupid为${groupid}的异形配置`;
7491
7549
  }
7492
7550
  await ctx.database.remove("ggcevo_boss_damage", {});
7493
7551
  await ctx.database.remove("ggcevo_boss", {});
7494
- const mainBoss = await ctx.database.create("ggcevo_boss", {
7552
+ await ctx.database.create("ggcevo_boss", {
7495
7553
  name: bossConfig.main.name,
7496
7554
  type: "主宰",
7497
7555
  HP: bossConfig.main.maxHP,
7498
7556
  tags: bossConfig.main.tags,
7499
7557
  skills: [...bossConfig.main.passive],
7500
- energy: bossConfig.main.energy,
7558
+ energy: bossConfig.main.maxEnergy,
7501
7559
  groupId: groupid,
7502
7560
  isActive: true,
7503
7561
  respawnTime: /* @__PURE__ */ new Date()
@@ -7509,13 +7567,13 @@ ${validTypes.join("、")}`;
7509
7567
  HP: minion.maxHP,
7510
7568
  tags: minion.tags,
7511
7569
  skills: [...minion.passive],
7512
- energy: minion.energy,
7570
+ energy: minion.maxEnergy,
7513
7571
  groupId: groupid,
7514
7572
  isActive: true,
7515
7573
  respawnTime: /* @__PURE__ */ new Date()
7516
7574
  });
7517
7575
  }
7518
- return `✅ 异形初始化成功!当前主宰:${bossConfig.main.name}(HP:${bossConfig.main.maxHP})`;
7576
+ return `✅ 异形初始化成功!当前主宰:${bossConfig.main.name}`;
7519
7577
  });
7520
7578
  ctx.command("ggcevo/祈愿").action(async (argv) => {
7521
7579
  const session = argv.session;
@@ -8443,7 +8501,7 @@ ${Spacestationtechnology.map((t) => t.techname).join("、")}`;
8443
8501
  handle,
8444
8502
  taskId: taskConfig.id
8445
8503
  });
8446
- if (!taskData) return `⚠️ 任务进度不足!无法完成"${taskName}"任务`;
8504
+ if (!taskData) return `⚠️ 任务进度不足!当前进度:0/${taskConfig.target}`;
8447
8505
  if (taskData.progress < taskConfig.target) {
8448
8506
  return `⚠️ 任务进度不足!当前进度:${taskData.progress}/${taskConfig.target}`;
8449
8507
  }
@@ -8475,12 +8533,12 @@ ${Spacestationtechnology.map((t) => t.techname).join("、")}`;
8475
8533
  totalRewards: newTotalRewards
8476
8534
  }], ["handle"]);
8477
8535
  const response = [
8478
- `🎉 成功完成【${taskName}】任务!`
8536
+ `🎉 成功完成 ${completableTimes} 次【${taskName}】任务!`
8479
8537
  ];
8480
8538
  if (totalBonus > 0) {
8481
- response.push(`💰 获得总奖励:${totalReward}金币 (基础值: ${baseTotal}金币)`);
8539
+ response.push(`💰 获得奖励:${totalReward}金币 (基础值: ${baseTotal}金币)`);
8482
8540
  } else {
8483
- response.push(`💰 获得总奖励:${totalReward}金币`);
8541
+ response.push(`💰 获得奖励:${totalReward}金币`);
8484
8542
  }
8485
8543
  if (totalBonus > 0) {
8486
8544
  response.push(`⚡ 加成效果:`);
@@ -8495,12 +8553,6 @@ ${Spacestationtechnology.map((t) => t.techname).join("、")}`;
8495
8553
  `📊 累计完成次数: ${newCompletions}次`,
8496
8554
  `⚙️ 剩余进度点数: ${remainingProgress}/${taskConfig.target}`
8497
8555
  );
8498
- if (remainingProgress > 0) {
8499
- response.push(`💡 剩余进度可完成 ${Math.floor(remainingProgress / taskConfig.target)} 次`);
8500
- }
8501
- if (completableTimes > 1) {
8502
- response.push(`💡 成功完成${completableTimes}次任务,已发放全部奖励`);
8503
- }
8504
8556
  return response.join("\n");
8505
8557
  } catch (error) {
8506
8558
  console.error("完成任务命令时发生错误:", error);