koishi-plugin-ggcevo-game 1.4.30 → 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
@@ -1009,29 +1009,47 @@ var Tasklist = {
1009
1009
  "伽马辐射": {
1010
1010
  id: 1,
1011
1011
  type: "可重复任务",
1012
- description: "利用【伽马枪】武器对异形目标造成辐射伤害",
1012
+ description: "利用【伽马枪】武器对目标造成辐射伤害",
1013
1013
  target: 1,
1014
1014
  price: 50,
1015
1015
  redCrystalCost: 0,
1016
- condition: "使用伽马枪攻击异形并成功使辐射层数+1"
1016
+ condition: "使用伽马枪攻击目标并成功增加其辐射层数"
1017
1017
  },
1018
1018
  "绝对零度": {
1019
1019
  id: 2,
1020
1020
  type: "可重复任务",
1021
- description: "利用【零度之下】武器对异形目标造成寒冷伤害",
1021
+ description: "利用【零度之下】武器对目标造成寒冷伤害",
1022
1022
  target: 1,
1023
1023
  price: 50,
1024
1024
  redCrystalCost: 0,
1025
- condition: "使用零度之下攻击异形并成功使寒冷层数+1"
1025
+ condition: "使用零度之下攻击目标并成功增加其寒冷层数"
1026
1026
  },
1027
1027
  "胆汁引爆": {
1028
1028
  id: 3,
1029
1029
  type: "可重复任务",
1030
- description: "利用【焚烧枪】武器引爆异形目标的胆汁",
1030
+ description: "利用【焚烧枪】武器引爆目标的胆汁",
1031
1031
  target: 1,
1032
1032
  price: 200,
1033
1033
  redCrystalCost: 0,
1034
- condition: "使用焚烧枪攻击异形并成功引爆≥10层的胆汁"
1034
+ condition: "使用焚烧枪攻击目标并成功引爆其≥10层的胆汁"
1035
+ },
1036
+ "脉冲干扰": {
1037
+ id: 4,
1038
+ type: "可重复任务",
1039
+ description: "利用【脉冲扰乱枪】武器干扰目标的技能释放",
1040
+ target: 1,
1041
+ price: 75,
1042
+ redCrystalCost: 0,
1043
+ condition: "使用脉冲扰乱枪攻击目标并成功减少其技能层数"
1044
+ },
1045
+ "弧能消耗": {
1046
+ id: 5,
1047
+ type: "可重复任务",
1048
+ description: "利用【弧焊枪】武器消耗目标的能量",
1049
+ target: 1,
1050
+ price: 75,
1051
+ redCrystalCost: 0,
1052
+ condition: "使用弧焊枪攻击目标并成功消耗其能量"
1035
1053
  }
1036
1054
  };
1037
1055
 
@@ -1041,12 +1059,13 @@ var asPassives = /* @__PURE__ */ __name((arr) => arr, "asPassives");
1041
1059
  var defineBoss = /* @__PURE__ */ __name((config) => config, "defineBoss");
1042
1060
  var bossPool = [
1043
1061
  defineBoss({
1062
+ id: 1,
1063
+ // ID放在BOSS组层级
1044
1064
  main: {
1045
- id: 1,
1046
1065
  name: "异齿猛兽首领",
1047
1066
  type: "主宰",
1048
1067
  maxHP: 15e3,
1049
- energy: 0,
1068
+ maxEnergy: 0,
1050
1069
  tags: asBossTags(["重甲", "生物", "异形"]),
1051
1070
  passive: asPassives(["异形甲壳"])
1052
1071
  },
@@ -1055,19 +1074,19 @@ var bossPool = [
1055
1074
  name: "异齿猛兽",
1056
1075
  type: "子代",
1057
1076
  maxHP: 5e3,
1058
- energy: 0,
1077
+ maxEnergy: 0,
1059
1078
  tags: asBossTags(["重甲", "生物", "重型", "异形"]),
1060
1079
  passive: asPassives(["弱化形态", "异形甲壳"])
1061
1080
  }
1062
1081
  ]
1063
1082
  }),
1064
1083
  defineBoss({
1084
+ id: 2,
1065
1085
  main: {
1066
- id: 2,
1067
1086
  name: "寒冰王蛇",
1068
1087
  type: "主宰",
1069
1088
  maxHP: 15e3,
1070
- energy: 0,
1089
+ maxEnergy: 0,
1071
1090
  tags: asBossTags(["重甲", "生物", "惧热", "重型", "异形"]),
1072
1091
  passive: asPassives(["冰霜环绕", "冰霜进化"])
1073
1092
  },
@@ -1076,19 +1095,19 @@ var bossPool = [
1076
1095
  name: "冰蛇",
1077
1096
  type: "子代",
1078
1097
  maxHP: 5e3,
1079
- energy: 0,
1098
+ maxEnergy: 0,
1080
1099
  tags: asBossTags(["生物", "惧热", "异形"]),
1081
1100
  passive: asPassives(["弱化形态", "冰霜回复", "冰霜进化"])
1082
1101
  }
1083
1102
  ]
1084
1103
  }),
1085
1104
  defineBoss({
1105
+ id: 3,
1086
1106
  main: {
1087
- id: 3,
1088
1107
  name: "莽兽",
1089
1108
  type: "主宰",
1090
1109
  maxHP: 12e3,
1091
- energy: 0,
1110
+ maxEnergy: 0,
1092
1111
  tags: asBossTags(["重甲", "生物", "重型", "异形"]),
1093
1112
  passive: asPassives(["应激甲壳II", "求生本能II", "冷适应"])
1094
1113
  },
@@ -1097,7 +1116,7 @@ var bossPool = [
1097
1116
  name: "狂暴畸变体",
1098
1117
  type: "子代",
1099
1118
  maxHP: 4e3,
1100
- energy: 0,
1119
+ maxEnergy: 0,
1101
1120
  tags: asBossTags(["重甲", "生物", "重型", "异形"]),
1102
1121
  passive: asPassives(["弱化形态", "应激甲壳I", "求生本能I", "冷适应"])
1103
1122
  },
@@ -1105,19 +1124,19 @@ var bossPool = [
1105
1124
  name: "剧毒畸变体",
1106
1125
  type: "子代",
1107
1126
  maxHP: 4e3,
1108
- energy: 0,
1127
+ maxEnergy: 0,
1109
1128
  tags: asBossTags(["重甲", "生物", "重型", "异形"]),
1110
1129
  passive: asPassives(["弱化形态", "应激甲壳I", "求生本能I", "冷适应"])
1111
1130
  }
1112
1131
  ]
1113
1132
  }),
1114
1133
  defineBoss({
1134
+ id: 4,
1115
1135
  main: {
1116
- id: 4,
1117
1136
  name: "空间站感染虫",
1118
1137
  type: "主宰",
1119
1138
  maxHP: 1e4,
1120
- energy: 0,
1139
+ maxEnergy: 0,
1121
1140
  tags: asBossTags(["重甲", "生物", "机械", "异形"]),
1122
1141
  passive: asPassives(["感染空间站", "病毒云", "霉菌滋生"])
1123
1142
  },
@@ -1126,7 +1145,7 @@ var bossPool = [
1126
1145
  name: "机械感染虫",
1127
1146
  type: "子代",
1128
1147
  maxHP: 3e3,
1129
- energy: 0,
1148
+ maxEnergy: 0,
1130
1149
  tags: asBossTags(["重甲", "生物", "机械", "异形"]),
1131
1150
  passive: asPassives(["弱化形态", "病毒云", "霉菌滋生"])
1132
1151
  },
@@ -1134,19 +1153,19 @@ var bossPool = [
1134
1153
  name: "空间站哨枪塔",
1135
1154
  type: "子代",
1136
1155
  maxHP: 5e3,
1137
- energy: 0,
1156
+ maxEnergy: 0,
1138
1157
  tags: asBossTags(["重甲", "机械", "建筑"]),
1139
1158
  passive: asPassives(["岗哨机枪", "结构装甲"])
1140
1159
  }
1141
1160
  ]
1142
1161
  }),
1143
1162
  defineBoss({
1163
+ id: 5,
1144
1164
  main: {
1145
- id: 5,
1146
1165
  name: "吸血蝙蝠首领",
1147
1166
  type: "主宰",
1148
1167
  maxHP: 12e3,
1149
- energy: 0,
1168
+ maxEnergy: 0,
1150
1169
  tags: asBossTags(["生物", "异形"]),
1151
1170
  passive: asPassives(["吸血唾液", "进食", "吐血", "嗜血狂暴"])
1152
1171
  },
@@ -1155,19 +1174,19 @@ var bossPool = [
1155
1174
  name: "吸血蝙蝠",
1156
1175
  type: "子代",
1157
1176
  maxHP: 4e3,
1158
- energy: 0,
1177
+ maxEnergy: 0,
1159
1178
  tags: asBossTags(["生物", "异形"]),
1160
1179
  passive: asPassives(["弱化形态", "吸血唾液", "进食", "吐血"])
1161
1180
  }
1162
1181
  ]
1163
1182
  }),
1164
1183
  defineBoss({
1184
+ id: 6,
1165
1185
  main: {
1166
- id: 6,
1167
1186
  name: "亚电主宰者",
1168
1187
  type: "主宰",
1169
1188
  maxHP: 2e4,
1170
- energy: 1e3,
1189
+ maxEnergy: 1e3,
1171
1190
  tags: asBossTags(["护盾", "灵能", "重型", "异形"]),
1172
1191
  passive: asPassives(["超导体", "能源虹吸", "电能冲击波", "电能立场", "脉冲", "能量黑洞"])
1173
1192
  },
@@ -1176,19 +1195,19 @@ var bossPool = [
1176
1195
  name: "亚电能者",
1177
1196
  type: "子代",
1178
1197
  maxHP: 6e3,
1179
- energy: 0,
1198
+ maxEnergy: 0,
1180
1199
  tags: asBossTags(["护盾", "灵能", "异形"]),
1181
1200
  passive: asPassives(["弱化形态", "超导体", "能量虹吸", "能量黑洞"])
1182
1201
  }
1183
1202
  ]
1184
1203
  }),
1185
1204
  defineBoss({
1205
+ id: 7,
1186
1206
  main: {
1187
- id: 7,
1188
1207
  name: "烈焰庞兽",
1189
1208
  type: "主宰",
1190
1209
  maxHP: 2e4,
1191
- energy: 0,
1210
+ maxEnergy: 0,
1192
1211
  tags: asBossTags(["重甲", "生物", "惧寒", "重型", "异形"]),
1193
1212
  passive: asPassives(["火焰异形", "庞兽狂暴", "灼烧粘液", "炼狱爆弹", "火焰吐息", "太阳耀斑"])
1194
1213
  },
@@ -1197,19 +1216,19 @@ var bossPool = [
1197
1216
  name: "火焰甲虫",
1198
1217
  type: "子代",
1199
1218
  maxHP: 5e3,
1200
- energy: 0,
1219
+ maxEnergy: 0,
1201
1220
  tags: asBossTags(["重甲", "生物", "惧寒", "异形"]),
1202
1221
  passive: asPassives(["弱化形态", "火焰异形", "灼烧粘液", "腐蚀胆汁", "燃烧潜地"])
1203
1222
  }
1204
1223
  ]
1205
1224
  }),
1206
1225
  defineBoss({
1226
+ id: 8,
1207
1227
  main: {
1208
- id: 8,
1209
1228
  name: "狂猎猛禽首领",
1210
1229
  type: "主宰",
1211
1230
  maxHP: 2e4,
1212
- energy: 0,
1231
+ maxEnergy: 0,
1213
1232
  tags: asBossTags(["生物", "异形"]),
1214
1233
  passive: asPassives(["猎手异形", "致命一击", "狂暴", "伪装"])
1215
1234
  },
@@ -1218,7 +1237,7 @@ var bossPool = [
1218
1237
  name: "狂猎猛禽1",
1219
1238
  type: "子代",
1220
1239
  maxHP: 5e3,
1221
- energy: 0,
1240
+ maxEnergy: 0,
1222
1241
  tags: asBossTags(["生物", "异形"]),
1223
1242
  passive: asPassives(["弱化形态", "猎手异形", "狂暴", "伪装"])
1224
1243
  },
@@ -1226,19 +1245,19 @@ var bossPool = [
1226
1245
  name: "狂猎猛禽2",
1227
1246
  type: "子代",
1228
1247
  maxHP: 5e3,
1229
- energy: 0,
1248
+ maxEnergy: 0,
1230
1249
  tags: asBossTags(["生物", "异形"]),
1231
1250
  passive: asPassives(["弱化形态", "猎手异形", "狂暴", "伪装"])
1232
1251
  }
1233
1252
  ]
1234
1253
  }),
1235
1254
  defineBoss({
1255
+ id: 9,
1236
1256
  main: {
1237
- id: 9,
1238
1257
  name: "宇宙界主",
1239
1258
  type: "主宰",
1240
1259
  maxHP: 2e4,
1241
- energy: 1e3,
1260
+ maxEnergy: 1e3,
1242
1261
  tags: asBossTags(["重甲", "护盾", "生物", "灵能", "异形"]),
1243
1262
  passive: asPassives(["宇宙能量", "复苏", "光影之刃", "闪电冲锋", "远古预兆", "星界之风", "超视距穿梭"])
1244
1263
  },
@@ -1247,7 +1266,7 @@ var bossPool = [
1247
1266
  name: "宇宙战将",
1248
1267
  type: "子代",
1249
1268
  maxHP: 5e3,
1250
- energy: 0,
1269
+ maxEnergy: 0,
1251
1270
  tags: asBossTags(["重甲", "护盾", "生物", "灵能", "异形"]),
1252
1271
  passive: asPassives(["弱化形态", "心灵狂热", "星界之风"])
1253
1272
  }
@@ -1259,219 +1278,273 @@ var bossPool = [
1259
1278
  var passiveConfig = {
1260
1279
  "弱化形态": {
1261
1280
  effect: 0.1,
1262
- description: "子代的防御薄弱,受到的伤害+10%"
1281
+ maxStacks: 0,
1282
+ description: "子代防御脆弱,所受伤害提升10%"
1263
1283
  },
1264
1284
  "异形甲壳": {
1265
1285
  effect: -0.2,
1266
- description: "拥有坚硬的生物甲壳,受到的伤害-20%"
1286
+ maxStacks: 0,
1287
+ description: "强化生物甲壳提供防护,所受伤害降低20%"
1267
1288
  },
1268
1289
  "孤立无援": {
1269
1290
  effect: 0.2,
1270
- description: "没有存活的子代,受到的伤害+20%"
1291
+ maxStacks: 0,
1292
+ description: "无存活子代时,所受伤害提升20%"
1271
1293
  },
1272
1294
  "冰霜回复": {
1273
1295
  effect: 0,
1274
- description: "血量降低到30%以下时触发,回复自身40%的最大生命值,并且回复主宰10%的最大生命值(触发后移除)"
1296
+ maxStacks: 0,
1297
+ description: "生命值降至30%以下时触发,立即回复自身40%最大生命值,并为其他存活异形回复10%最大生命值(触发后效果移除)"
1275
1298
  },
1276
1299
  "冰霜进化": {
1277
1300
  effect: 0,
1278
- description: "免疫冰霜伤害,受到冰霜伤害会回复生命值"
1301
+ maxStacks: 0,
1302
+ description: "免疫冰霜类伤害,受到冰霜伤害时额外回复生命值"
1279
1303
  },
1280
1304
  "冰霜环绕": {
1281
1305
  effect: 0,
1282
- description: "血量降低到30%以下时触发,回复自身45%的最大生命值(触发后移除)"
1306
+ maxStacks: 0,
1307
+ description: "生命值降至30%以下时触发,立即回复自身45%最大生命值(触发后效果移除)"
1283
1308
  },
1284
1309
  "寒霜地狱": {
1285
1310
  effect: -0.3,
1286
- description: "灾难的暴风雪降临,受到的伤害-30%"
1311
+ maxStacks: 0,
1312
+ description: "暴风雪笼罩战场,所受伤害降低30%"
1287
1313
  },
1288
1314
  "应激甲壳I": {
1289
1315
  effect: -0.2,
1290
- description: "拥有自适应甲壳,受到的伤害-20%"
1316
+ maxStacks: 0,
1317
+ description: "基础应激甲壳生效,所受伤害降低20%"
1291
1318
  },
1292
1319
  "应激甲壳II": {
1293
1320
  effect: -0.25,
1294
- description: "拥有自适应甲壳,受到的伤害-25%"
1321
+ maxStacks: 0,
1322
+ description: "进阶应激甲壳生效,所受伤害降低25%"
1295
1323
  },
1296
1324
  "求生本能I": {
1297
1325
  effect: 0,
1298
- description: "濒死时,畸变体会迅速回复30%的最大生命值(触发后移除)"
1326
+ maxStacks: 0,
1327
+ description: "濒死状态下,快速回复30%最大生命值(触发后效果移除)"
1299
1328
  },
1300
1329
  "求生本能II": {
1301
1330
  effect: 0,
1302
- description: "濒死时,畸变体会迅速回复50%的最大生命值(触发后移除)"
1331
+ maxStacks: 0,
1332
+ description: "濒死状态下,快速回复50%最大生命值(触发后效果移除)"
1303
1333
  },
1304
1334
  "冷适应": {
1305
1335
  effect: 0,
1306
- description: "受到10次寒冷伤害后,自身获得“惧热”标签,并且免疫寒冷伤害"
1336
+ maxStacks: 10,
1337
+ description: "累计承受10次寒冷伤害后,获得「惧热」标签并获得寒冷伤害免疫"
1307
1338
  },
1308
1339
  "感染空间站": {
1309
1340
  effect: 0,
1310
- description: "若“空间站哨枪塔”存活,则自身受到的伤害-50%(空间站哨枪塔不属于子代)"
1341
+ maxStacks: 0,
1342
+ description: "若「空间站哨枪塔」存活(该单位不计入子代),自身所受伤害降低50%"
1311
1343
  },
1312
1344
  "病毒云": {
1313
1345
  effect: -0.1,
1314
- description: "释放病毒云雾保护自身,受到的伤害-10%"
1346
+ maxStacks: 0,
1347
+ description: "释放病毒云雾形成保护,所受伤害降低10%"
1315
1348
  },
1316
1349
  "霉菌滋生": {
1317
1350
  effect: 0,
1318
- description: "受到攻击后,若“空间站哨枪塔”存活,则为其回复1%的最大生命值"
1351
+ maxStacks: 0,
1352
+ description: "受到攻击后,若「空间站哨枪塔」存活,为其恢复1%最大生命值"
1319
1353
  },
1320
1354
  "岗哨机枪": {
1321
1355
  effect: 0,
1322
- description: "受到10次攻击后,为存活的异形回复其10%的最大生命值(可重复触发)"
1356
+ maxStacks: 10,
1357
+ description: "累计承受10次攻击后,为所有存活异形恢复其10%最大生命值(可重复触发)"
1323
1358
  },
1324
1359
  "结构装甲": {
1325
1360
  effect: 0,
1326
- description: "拥有结构装甲,受到的伤害-20%; 若伤害来源于热能武器,则受到的伤害-40%"
1361
+ maxStacks: 0,
1362
+ description: "装备结构装甲,常规伤害降低20%;若伤害来源为热能武器,伤害降低提升至40%"
1327
1363
  },
1328
1364
  "吸血唾液": {
1329
1365
  effect: 0,
1330
- description: "受到攻击将会获得一层“吸血”,每层“吸血”提供5%的减伤(至多20层)"
1366
+ maxStacks: 20,
1367
+ description: "受到攻击时叠加「吸血」层数,每层提供5%减伤(最多叠加20层)"
1331
1368
  },
1332
1369
  "进食": {
1333
1370
  effect: 0,
1334
- description: "当“吸血”达到20层后,下一次受到攻击将会消耗所有层数回复自身20%的最大生命值"
1371
+ maxStacks: 0,
1372
+ description: "当「吸血」层数达到20层时,下一次受击消耗所有层数并回复20%最大生命值"
1335
1373
  },
1336
1374
  "嗜血狂暴": {
1337
1375
  effect: 0,
1338
- description: "血量低于50%时,进入狂暴状态,每次受到攻击将会额外获得一层“吸血”,并且受到的伤害-20%"
1376
+ maxStacks: 0,
1377
+ description: "生命值低于50%时触发狂暴状态,每次受击额外叠加1层「吸血」,同时所受伤害降低20%"
1339
1378
  },
1340
1379
  "吐血": {
1341
1380
  effect: 0,
1342
- description: "当无“吸血”层数时,受到的伤害+20%"
1381
+ maxStacks: 0,
1382
+ description: "无「吸血」层数时,所受伤害提升20%"
1343
1383
  },
1344
1384
  "电能导体": {
1345
1385
  effect: 0,
1346
- description: "当血量降低到10%以下时,“护盾”标签变为“重甲”标签;"
1386
+ maxStacks: 0,
1387
+ description: "生命值降至10%以下时,「护盾」标签转换为「重甲」标签"
1347
1388
  },
1348
1389
  "超导体": {
1349
1390
  effect: 0,
1350
- description: "当血量降低到5%以下时,“护盾”标签变为“重甲”标签;"
1391
+ maxStacks: 0,
1392
+ description: "生命值降至5%以下时,「护盾」标签转换为「重甲」标签"
1351
1393
  },
1352
1394
  "能量虹吸": {
1353
1395
  effect: 0,
1354
- description: "当血量≥70%的时候,受到的伤害-40%; 当血量≥30%的时候,受到的伤害-20%"
1396
+ maxStacks: 0,
1397
+ description: "生命值≥70%时,所受伤害降低40%;生命值≥30%时,伤害降低20%"
1355
1398
  },
1356
1399
  "能源虹吸": {
1357
1400
  effect: 0,
1358
- description: "当“能量”≥80%的时候,受到的伤害-50%; 当“能量”≥50%的时候,受到的伤害-30%"
1401
+ maxStacks: 0,
1402
+ description: "能量值≥80%时,所受伤害降低50%;能量值≥50%时,伤害降低30%"
1359
1403
  },
1360
1404
  "电能立场": {
1361
1405
  effect: 0,
1362
- description: "当“能量”≥30%的时候,每次受到攻击有55%的概率免疫此次伤害(无法免疫寒冷伤害); 每拥有一层“寒冷”则降低5%的概率"
1406
+ maxStacks: 0,
1407
+ description: "能量值≥30%时,每次受击有55%概率免疫该次伤害(无法免疫寒冷伤害);每存在1层「寒冷」状态,免疫概率降低5%"
1363
1408
  },
1364
1409
  "电能冲击波": {
1365
1410
  effect: 0,
1366
- description: "每次受到攻击时,自身回复100点“能量”"
1411
+ maxStacks: 0,
1412
+ description: "每次受击时,回复100点「能量」"
1367
1413
  },
1368
1414
  "脉冲": {
1369
1415
  effect: 0,
1370
- description: "当“能量”≥30%的时候,每次受到攻击有60%的概率回复所有存活的异形100点血量; 每拥有一层“寒冷”则降低5%的概率"
1416
+ maxStacks: 0,
1417
+ description: "能量值≥30%时,每次受击有60%概率为所有存活异形回复100点生命值;每存在1层「寒冷」状态,概率降低5%"
1371
1418
  },
1372
1419
  "能量黑洞": {
1373
1420
  effect: -0.2,
1374
- description: "存在“能量黑洞”,受到的伤害-20%"
1421
+ maxStacks: 0,
1422
+ description: "存在「能量黑洞」时,所受伤害降低20%"
1375
1423
  },
1376
1424
  "火焰异形": {
1377
1425
  effect: 0,
1378
- description: "免疫火焰伤害,受到火焰伤害时会回复生命值"
1426
+ maxStacks: 0,
1427
+ description: "免疫火焰类伤害,受到火焰伤害时额外回复生命值"
1379
1428
  },
1380
1429
  "庞兽狂暴": {
1381
1430
  effect: 0,
1382
- description: "血量低于50%时,进入狂暴状态,受到的伤害-50%"
1431
+ maxStacks: 0,
1432
+ description: "生命值低于50%时触发狂暴状态,所受伤害降低50%"
1383
1433
  },
1384
1434
  "灼烧粘液": {
1385
1435
  effect: 0,
1386
- description: "受到伤害时,会获得一层“胆汁”; 若存在“胆汁”层数时受到火焰攻击,将立刻清空层数并回复X点生命值(X为“胆汁”层数 x 10)"
1436
+ maxStacks: 20,
1437
+ description: "受到伤害时叠加「胆汁」层数;若存在「胆汁」层数时受到火焰攻击,立即清空层数并回复(层数×10)点生命值"
1387
1438
  },
1388
1439
  "腐蚀胆汁": {
1389
1440
  effect: 0,
1390
- description: "当“胆汁”达到10层后,下一次受到攻击将回复所有存活异形1000点血量并清空层数"
1441
+ maxStacks: 0,
1442
+ description: "「胆汁」层数达到10层时,下一次受击为所有存活异形回复1000点生命值并清空层数"
1391
1443
  },
1392
1444
  "火焰吐息": {
1393
1445
  effect: 0,
1394
- description: "当“胆汁”达到20层后,下一次攻击将回复所有存活异形50%的最大生命值并清空层数"
1446
+ maxStacks: 0,
1447
+ description: "「胆汁」层数达到20层时,下一次攻击为所有存活异形回复50%最大生命值并清空层数"
1395
1448
  },
1396
1449
  "太阳耀斑": {
1397
1450
  effect: 0,
1398
- description: "当所有子代阵亡后,自身将移除“惧寒”标签和“孤立无援”并且免疫寒冷伤害"
1451
+ maxStacks: 0,
1452
+ description: "所有子代阵亡后,移除「惧寒」标签及「孤立无援」并获得寒冷伤害免疫"
1399
1453
  },
1400
1454
  "燃烧潜地": {
1401
1455
  effect: 0,
1402
- description: "血量降低到10%以下时触发,回复自身50%的最大生命值(触发后移除)"
1456
+ maxStacks: 0,
1457
+ description: "生命值降至10%以下时触发,立即回复50%最大生命值(触发后效果移除)"
1403
1458
  },
1404
1459
  "炼狱爆弹": {
1405
1460
  effect: 0,
1406
- description: "每拥有一层“胆汁”,受到的伤害-5%; 若有存活的子代,则每层“胆汁”使受到的伤害额外-5%"
1461
+ maxStacks: 0,
1462
+ description: "每存在1层「胆汁」,所受伤害降低5%;若存在存活子代,伤害降低效果额外提升5%(即每层「胆汁」总降低10%)"
1407
1463
  },
1408
1464
  "猎手异形": {
1409
1465
  effect: 0,
1410
- description: "若有存活的其他异形,则受到的伤害-20%; 若没有存活的其他异形,则受到的伤害+20%; 免疫火焰伤害; 免疫寒冷伤害"
1466
+ maxStacks: 0,
1467
+ description: "存在其他存活异形时,所受伤害降低20%;无其他存活异形时,所受伤害提升20%;免疫火焰及寒冷伤害"
1411
1468
  },
1412
1469
  "狂暴": {
1413
1470
  effect: 0,
1414
- description: "血量低于50%时,进入狂暴状态,受到的伤害-50%"
1471
+ maxStacks: 0,
1472
+ description: "生命值低于50%时触发狂暴状态,所受伤害降低50%"
1415
1473
  },
1416
1474
  "伪装": {
1417
1475
  effect: 0,
1418
- description: "受到伤害时,记录伤害来源的武器名称(最多一种,新记录会替换旧记录),下次受到相同武器伤害时伤害减少80%"
1476
+ maxStacks: 0,
1477
+ description: "受击时记录伤害来源的武器名称(仅保留最新),下次受到同名称武器伤害时伤害降低80%"
1419
1478
  },
1420
1479
  "致命一击": {
1421
1480
  effect: 0,
1422
- description: "受到伤害时,有5%的概率免疫此次伤害"
1481
+ maxStacks: 0,
1482
+ description: "受击时有5%概率免疫该次伤害"
1423
1483
  },
1424
1484
  "星界之风": {
1425
1485
  effect: 0,
1426
- description: "受到伤害时,有5%的概率回复所有存活异形200点血量"
1486
+ maxStacks: 0,
1487
+ description: "受击时有5%概率为所有存活异形回复200点生命值"
1427
1488
  },
1428
1489
  "心灵狂热": {
1429
1490
  effect: 0,
1430
- description: "当血量低于50%时,进入心灵狂热状态,受到的伤害-20%,并且触发“星界之风”技能的概率翻倍"
1491
+ maxStacks: 0,
1492
+ description: "生命值低于50%时进入心灵狂热状态,所受伤害降低20%,同时「星界之风」触发概率翻倍"
1431
1493
  },
1432
1494
  "宇宙能量": {
1433
1495
  effect: 0,
1434
- description: "受到攻击时回复与该攻击伤害等额的“能量”; 若“能量”已满,则回复溢出伤害值的血量"
1496
+ maxStacks: 0,
1497
+ description: "受击时回复等同于本次伤害值的「能量」;若「能量」已满,则将溢出部分转换为自身生命值"
1435
1498
  },
1436
1499
  "复苏": {
1437
1500
  effect: 0,
1438
- description: "受到致命伤害时,免于死亡,快速回复自身50%的最大生命值和100%的“能量”,并且获得“灵能构造炉”技能(触发后移除)"
1501
+ maxStacks: 0,
1502
+ description: "承受致命伤害时免疫死亡,立即回复50%最大生命值及100%「能量」,并获得「灵能构造炉」技能(触发后效果移除)"
1439
1503
  },
1440
1504
  "光影之刃": {
1441
1505
  effect: 0,
1442
- description: "受到伤害后,获得一层“光影之刃”"
1506
+ maxStacks: 0,
1507
+ description: "受击后叠加「光影之刃」层数"
1443
1508
  },
1444
1509
  "远古预兆": {
1445
1510
  effect: 0,
1446
- description: "受到伤害时,有1%的概率免疫此次伤害并且回复100点“能量”"
1511
+ maxStacks: 0,
1512
+ description: "受击时有1%概率免疫该次伤害并回复100点「能量」"
1447
1513
  },
1448
1514
  "闪电冲锋": {
1449
1515
  effect: 0,
1450
- description: "每层“光影之刃”使触发“星界之风”,“远古预兆”和“灵能构造炉”技能的概率+1%"
1516
+ maxStacks: 0,
1517
+ description: "每存在1层「光影之刃」,「远古预兆」「灵能构造炉」触发概率各提升0.5%"
1451
1518
  },
1452
1519
  "超视距穿梭": {
1453
1520
  effect: 0,
1454
- description: "当“能量”≥30%时,每层“光影之刃”使受到的伤害-5%; 当“能量”≥60%时,每层“光影之刃”使受到的伤害-10%; 当“能量”≤10%时,每层“光影之刃”使受到的伤害+5%"
1521
+ maxStacks: 0,
1522
+ description: "能量值≥30%时,每层「光影之刃」降低5%所受伤害;能量值≥60%时,每层降低10%;能量值≤10%时,每层提升5%所受伤害"
1455
1523
  },
1456
1524
  "灵能构造炉": {
1457
1525
  effect: 0,
1458
- description: "受到攻击后,有1%的概率会随机获得以下4个技能之一(天启超载护盾,塌缩脉冲,地毯式轰炸,轰炸引导)"
1526
+ maxStacks: 0,
1527
+ description: "受击后有5%概率随机获得以下技能之一:天启超载护盾、塌缩脉冲、地毯式轰炸、轰炸引导"
1459
1528
  },
1460
1529
  "天启超载护盾": {
1461
1530
  effect: 0,
1462
- description: "受到伤害后,有5%的概率回复所有存活异形X点血量(X为“光影之刃”层数 x 10)"
1531
+ maxStacks: 0,
1532
+ description: "受击后有5%概率为所有存活异形回复(「光影之刃」层数×10)点生命值"
1463
1533
  },
1464
1534
  "塌缩脉冲": {
1465
1535
  effect: 0,
1466
- description: "受到伤害后,额外获得一层“光影之刃”"
1536
+ maxStacks: 0,
1537
+ description: "受击后额外叠加1层「光影之刃」"
1467
1538
  },
1468
1539
  "地毯式轰炸": {
1469
1540
  effect: 0,
1470
- description: "我心中的怒火胜过千万个太阳!移除自身的“孤立无援”,并使受到的伤害-100%"
1541
+ maxStacks: 0,
1542
+ description: "触发时移除「孤立无援」,并使自身所受伤害降低100%(免疫所有伤害)"
1471
1543
  },
1472
1544
  "轰炸引导": {
1473
1545
  effect: 0,
1474
- description: "受到伤害后,有10%的概率概率回复自身X点“能量”(X为“光影之刃”层数 x 50)"
1546
+ maxStacks: 0,
1547
+ description: "受击后有10%概率回复(「光影之刃」层数×50)点「能量」"
1475
1548
  }
1476
1549
  };
1477
1550
 
@@ -1862,14 +1935,17 @@ function createHpBar(current, max) {
1862
1935
  }
1863
1936
  __name(createHpBar, "createHpBar");
1864
1937
  async function activateNextBossGroup(ctx, currentBossId = null) {
1865
- let nextIndex = 0;
1866
- if (currentBossId !== null) {
1867
- const currentIndex = bossPool.findIndex((b) => b.main.id === currentBossId);
1868
- if (currentIndex !== -1) {
1869
- nextIndex = (currentIndex + 1) % bossPool.length;
1938
+ let availableIndices = [];
1939
+ bossPool.forEach((bossGroup, index) => {
1940
+ if (currentBossId === null || bossGroup.id !== currentBossId) {
1941
+ availableIndices.push(index);
1870
1942
  }
1943
+ });
1944
+ if (availableIndices.length === 0) {
1945
+ availableIndices = Array.from({ length: bossPool.length }, (_, i) => i);
1871
1946
  }
1872
- const nextBossGroup = bossPool[nextIndex];
1947
+ const randomIndex = availableIndices[Math.floor(Math.random() * availableIndices.length)];
1948
+ const nextBossGroup = bossPool[randomIndex];
1873
1949
  const mainBoss = await ctx.database.create("ggcevo_boss", {
1874
1950
  name: nextBossGroup.main.name,
1875
1951
  type: nextBossGroup.main.type,
@@ -1877,8 +1953,8 @@ async function activateNextBossGroup(ctx, currentBossId = null) {
1877
1953
  tags: nextBossGroup.main.tags,
1878
1954
  // 新增标签字段
1879
1955
  skills: [...nextBossGroup.main.passive],
1880
- energy: nextBossGroup.main.energy,
1881
- groupId: nextBossGroup.main.id,
1956
+ energy: nextBossGroup.main.maxEnergy,
1957
+ groupId: nextBossGroup.id,
1882
1958
  isActive: true,
1883
1959
  respawnTime: /* @__PURE__ */ new Date()
1884
1960
  });
@@ -1890,8 +1966,8 @@ async function activateNextBossGroup(ctx, currentBossId = null) {
1890
1966
  tags: minion.tags,
1891
1967
  // 新增标签字段
1892
1968
  skills: [...minion.passive],
1893
- energy: minion.energy,
1894
- groupId: mainBoss.groupId,
1969
+ energy: minion.maxEnergy,
1970
+ groupId: nextBossGroup.id,
1895
1971
  isActive: true,
1896
1972
  respawnTime: /* @__PURE__ */ new Date()
1897
1973
  });
@@ -2369,15 +2445,17 @@ __name(getRankInfo, "getRankInfo");
2369
2445
 
2370
2446
  // src/boss/passivehandler.ts
2371
2447
  var PassiveHandler = {
2448
+ // 在PassiveHandler中增强统计数组结构
2449
+ processingResults: [],
2372
2450
  // 冰霜进化处理(免疫冰霜伤害)
2373
2451
  handleFrostEvolution: /* @__PURE__ */ __name(function(targetBoss, weaponName, damage, maxHP) {
2374
2452
  if (targetBoss.skills.includes("冰霜进化") && weaponName === "零度之下") {
2375
- const healAmount = damage;
2453
+ const actualHeal = Math.min(damage, maxHP - targetBoss.HP);
2376
2454
  return {
2377
- updatedHP: Math.min(targetBoss.HP + healAmount, maxHP),
2455
+ updatedHP: targetBoss.HP + actualHeal,
2378
2456
  initialDamage: 0,
2379
2457
  // 直接设置伤害为0
2380
- messages: [`❄️ 【冰霜进化】生效:免疫寒冷伤害,${targetBoss.name}回复${healAmount}生命值`]
2458
+ messages: [`❄️ 【冰霜进化】生效:免疫寒冷伤害,${targetBoss.name}回复${actualHeal}生命值`]
2381
2459
  };
2382
2460
  }
2383
2461
  return null;
@@ -2421,15 +2499,17 @@ var PassiveHandler = {
2421
2499
  currentHP / maxHP > 0.3) {
2422
2500
  return null;
2423
2501
  }
2424
- const selfHeal = Math.floor(maxHP * 0.4);
2425
- 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;
2426
2505
  let mainHeal = 0;
2427
2506
  const mainBoss = activeBosses.find(
2428
2507
  (b) => b.groupId === targetBoss.groupId && b.type === "主宰"
2429
2508
  );
2430
2509
  if (mainBoss) {
2431
2510
  const mainMaxHP = bossGroup.main.maxHP;
2432
- mainHeal = Math.floor(mainMaxHP * 0.1);
2511
+ const mainHealMax = Math.floor(mainMaxHP * 0.1);
2512
+ mainHeal = Math.min(mainHealMax, mainMaxHP - mainBoss.HP);
2433
2513
  await ctx.database.set(
2434
2514
  "ggcevo_boss",
2435
2515
  { name: mainBoss.name },
@@ -2443,8 +2523,9 @@ var PassiveHandler = {
2443
2523
  remove: ["冰霜回复"]
2444
2524
  }],
2445
2525
  messages: [
2446
- `❄️ 【冰霜回复】生效,${targetBoss.name}回复40%最大生命值(+${selfHeal}HP),${mainBoss.name}回复10%最大生命值(+${mainHeal}HP)`
2447
- ]
2526
+ `❄️ 【冰霜回复】生效,${targetBoss.name}回复${actualSelfHeal}生命值(理论40%最大HP)`,
2527
+ mainBoss ? `,${mainBoss.name}回复${mainHeal}生命值(理论10%最大HP)` : ""
2528
+ ].filter(Boolean)
2448
2529
  };
2449
2530
  }, "handleFrostRecovery"),
2450
2531
  // 冷适应计数处理
@@ -2934,6 +3015,7 @@ var PassiveHandler = {
2934
3015
  if (weaponName !== "弧焊枪") return null;
2935
3016
  const currentEnergy = targetBoss.energy || 0;
2936
3017
  const messages = [];
3018
+ let arcApplied = false;
2937
3019
  if (currentEnergy > 0) {
2938
3020
  const energyDrain = Math.min(200, currentEnergy);
2939
3021
  const newEnergy = currentEnergy - energyDrain;
@@ -2942,11 +3024,12 @@ var PassiveHandler = {
2942
3024
  { name: targetBoss.name },
2943
3025
  { energy: newEnergy }
2944
3026
  );
3027
+ arcApplied = true;
2945
3028
  messages.push(`⚡ 【弧焊枪】武器效果:消耗目标200点能量`);
2946
3029
  } else {
2947
3030
  return null;
2948
3031
  }
2949
- return { messages };
3032
+ return { messages, arcApplied };
2950
3033
  }, "handleArcWelderEffect"),
2951
3034
  // 在 PassiveHandler 对象中添加新的处理函数
2952
3035
  handleArcRifleEffect: /* @__PURE__ */ __name(async function(ctx, targetBoss, weaponName, messages) {
@@ -3142,11 +3225,11 @@ var PassiveHandler = {
3142
3225
  if (targetBoss.skills.includes("火焰异形") && weaponName === "焚烧枪") {
3143
3226
  const maxHP = this.getMemberMaxHP(targetBoss.name, bossGroup);
3144
3227
  if (!maxHP) return null;
3145
- const healAmount = Math.min(initialDamage, maxHP - targetBoss.HP);
3146
- 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);
3147
3230
  const messages = [
3148
3231
  `🔥 【火焰异形】生效:免疫火焰伤害`,
3149
- healAmount > 0 ? `${targetBoss.name}回复${healAmount}点生命值` : ""
3232
+ actualHeal > 0 ? `${targetBoss.name}回复${actualHeal}点生命值` : ""
3150
3233
  ].filter(Boolean);
3151
3234
  const bileResult = await this.handleBileIgnition(ctx, targetBoss, bossGroup, updatedHP);
3152
3235
  if (bileResult) {
@@ -3165,23 +3248,22 @@ var PassiveHandler = {
3165
3248
  }, "handleFireEvolution"),
3166
3249
  // 修改后的灼烧粘液引爆
3167
3250
  handleBileIgnition: /* @__PURE__ */ __name(async function(ctx, targetBoss, bossGroup, updatedHP) {
3168
- if (!targetBoss.skills.includes("灼烧粘液")) return null;
3251
+ if (!targetBoss.skills.includes("腐蚀胆汁")) return null;
3169
3252
  const bileStacks = targetBoss.Skillcountpoints || 0;
3170
3253
  if (bileStacks < 1) return null;
3254
+ const theoreticalHeal = bileStacks * 10;
3171
3255
  const maxHP = this.getMemberMaxHP(targetBoss.name, bossGroup);
3172
- if (!maxHP) return null;
3173
- const healAmount = bileStacks * 10;
3174
- const newHP = Math.min(updatedHP + healAmount, maxHP);
3256
+ const actualHeal = Math.min(theoreticalHeal, maxHP - updatedHP);
3175
3257
  await ctx.database.set(
3176
3258
  "ggcevo_boss",
3177
3259
  { name: targetBoss.name },
3178
- { Skillcountpoints: 0, HP: newHP }
3260
+ { Skillcountpoints: 0, HP: updatedHP + actualHeal }
3179
3261
  );
3180
3262
  return {
3181
3263
  messages: [
3182
- `💥 【灼烧粘液】引爆:消耗${bileStacks}层"胆汁",${targetBoss.name}回复${healAmount}点生命值`
3264
+ `💥 【腐蚀胆汁】引爆:消耗${bileStacks}层"胆汁",${targetBoss.name}回复${actualHeal}点生命值`
3183
3265
  ],
3184
- newHP,
3266
+ newHP: updatedHP + actualHeal,
3185
3267
  bileStacks
3186
3268
  };
3187
3269
  }, "handleBileIgnition"),
@@ -3366,6 +3448,7 @@ var PassiveHandler = {
3366
3448
  return null;
3367
3449
  }
3368
3450
  const currentSkillCount = targetBoss.Skillcountpoints || 0;
3451
+ let pulseApplied = false;
3369
3452
  if (currentSkillCount <= 0) {
3370
3453
  return null;
3371
3454
  }
@@ -3375,11 +3458,12 @@ var PassiveHandler = {
3375
3458
  { name: targetBoss.name },
3376
3459
  { Skillcountpoints: newCount }
3377
3460
  );
3378
- targetBoss.Skillcountpoints = newCount;
3461
+ pulseApplied = true;
3379
3462
  return {
3380
3463
  messages: [
3381
- `⚡ 【脉冲扰乱枪】武器效果:使${targetBoss.name}的技能层数减少2层(当前${newCount}层)`
3382
- ]
3464
+ `⚡ 【脉冲扰乱枪】武器效果:使${targetBoss.name}的技能层数减少2层`
3465
+ ],
3466
+ pulseApplied
3383
3467
  };
3384
3468
  }, "handlePulseDisruptor"),
3385
3469
  // === 星界之风 ===
@@ -3393,7 +3477,6 @@ var PassiveHandler = {
3393
3477
  }
3394
3478
  let lightbladeStacks = 0;
3395
3479
  if (targetBoss.skills.includes("闪电冲锋")) {
3396
- lightbladeStacks = targetBoss?.Skillcountpoints || 0;
3397
3480
  }
3398
3481
  const triggerChance = baseChance + lightbladeStacks;
3399
3482
  if (Math.random() * 100 < triggerChance) {
@@ -3461,7 +3544,8 @@ var PassiveHandler = {
3461
3544
  if (newEnergy >= maxEnergy) {
3462
3545
  const overflow = initialDamage - energyToAdd;
3463
3546
  if (overflow > 0) {
3464
- const maxHP = PassiveHandler.getMemberConfig(targetBoss.name, bossGroup)?.maxHP || 0;
3547
+ const memberConfig = PassiveHandler.getMemberConfig(targetBoss.name, bossGroup);
3548
+ const maxHP = memberConfig?.maxHP || 0;
3465
3549
  if (maxHP > 0) {
3466
3550
  healAmount = Math.min(overflow, maxHP - targetBoss.HP);
3467
3551
  messages.push(`能量溢出回复${healAmount}点生命值`);
@@ -3502,7 +3586,7 @@ var PassiveHandler = {
3502
3586
  if (targetBoss.skills.includes("闪电冲锋")) {
3503
3587
  lightbladeStacks = targetBoss?.Skillcountpoints || 0;
3504
3588
  }
3505
- const totalChance = 1 + lightbladeStacks;
3589
+ const totalChance = 1 + lightbladeStacks * 0.5;
3506
3590
  if (Math.random() * 100 < totalChance) {
3507
3591
  const maxEnergy = 1e3;
3508
3592
  const currentEnergy = targetBoss.energy || 0;
@@ -3599,7 +3683,7 @@ var PassiveHandler = {
3599
3683
  if (targetBoss.skills.includes("闪电冲锋")) {
3600
3684
  lightbladeStacks = targetBoss.Skillcountpoints || 0;
3601
3685
  }
3602
- const totalChance = 1 + lightbladeStacks;
3686
+ const totalChance = 5 + lightbladeStacks * 0.5;
3603
3687
  if (Math.random() * 100 < totalChance) {
3604
3688
  const availableSkills = allSkills.filter(
3605
3689
  (skill) => !targetBoss.skills.includes(skill)
@@ -3742,7 +3826,10 @@ var PassiveHandler = {
3742
3826
  let nerfMultiplier = 0;
3743
3827
  let radiationApplied = false;
3744
3828
  let freezing = false;
3829
+ let pulseApplied = false;
3830
+ let arcApplied = false;
3745
3831
  let bileStacks = 0;
3832
+ let skipBileStacking = false;
3746
3833
  const activeBosses = await ctx.database.get("ggcevo_boss", { isActive: true });
3747
3834
  const solarFlareResult = await this.handleSolarFlare(ctx, targetBoss, weaponName);
3748
3835
  if (solarFlareResult.immune) {
@@ -3965,78 +4052,69 @@ var PassiveHandler = {
3965
4052
  `⚡ 减伤效果:${(nerfMultiplier * 100).toFixed(0)}% → ${(effectiveNerf * 100).toFixed(0)}%`
3966
4053
  );
3967
4054
  }
3968
- if (currentHP <= 0 && !targetBoss.skills.includes("求生本能I") && !targetBoss.skills.includes("求生本能II") && !targetBoss.skills.includes("复苏")) {
3969
- return {
3970
- currentHP,
3971
- messages,
3972
- skillUpdates,
3973
- initialDamage: finalDamage,
3974
- radiationApplied,
3975
- freezing
3976
- };
3977
- }
3978
- const frostSurroundResult = await this.handleFrostSurround(ctx, targetBoss, currentHP, maxHP);
3979
- if (frostSurroundResult) {
3980
- currentHP = frostSurroundResult.updatedHP;
3981
- messages.push(...frostSurroundResult.messages);
3982
- skillUpdates.push(...frostSurroundResult.skillUpdates);
3983
- }
3984
- const frostRecoveryResult = await this.handleFrostRecovery(ctx, targetBoss, currentHP, maxHP, activeBosses, bossGroup);
3985
- if (frostRecoveryResult) {
3986
- currentHP = frostRecoveryResult.updatedHP;
3987
- messages.push(...frostRecoveryResult.messages);
3988
- skillUpdates.push(...frostRecoveryResult.skillUpdates);
3989
- }
3990
- const burningBurrowResult = await this.handleBurningBurrow(ctx, targetBoss, currentHP, maxHP);
3991
- if (burningBurrowResult) {
3992
- currentHP = burningBurrowResult.updatedHP;
3993
- messages.push(...burningBurrowResult.messages);
3994
- skillUpdates.push(...burningBurrowResult.skillUpdates);
3995
- }
3996
- const moldResult = await this.handleMoldGrowth(ctx, targetBoss, bossGroup);
3997
- if (moldResult) {
3998
- messages.push(...moldResult.messages);
3999
- }
4000
- const pulseResult = await this.handlePulse(
4001
- ctx,
4002
- targetBoss,
4003
- activeBosses,
4004
- bossGroup,
4005
- currentHP
4006
- // 传入当前HP值
4007
- );
4008
- if (pulseResult) {
4009
- currentHP = pulseResult.newHP;
4010
- messages.push(...pulseResult.messages);
4011
- }
4012
- let skipBileStacking = false;
4013
- if (weaponName !== "焚烧枪") {
4014
- if (targetBoss.skills.includes("腐蚀胆汁")) {
4015
- const bileTriggered = await this.handleCorrosiveBile(ctx, targetBoss, bossGroup, currentHP);
4016
- if (bileTriggered) {
4017
- currentHP = bileTriggered.currentHP;
4018
- skipBileStacking = true;
4019
- 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
+ }
4020
4098
  }
4021
- }
4022
- if (targetBoss.skills.includes("火焰吐息")) {
4023
- const breathTriggered = await this.handleFireBreath(ctx, targetBoss, bossGroup, currentHP);
4024
- if (breathTriggered) {
4025
- currentHP = breathTriggered.currentHP;
4026
- skipBileStacking = true;
4027
- 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
+ }
4028
4106
  }
4029
4107
  }
4030
- }
4031
- const stellarWindResult = await this.handleStellarWind(ctx, targetBoss, initialDamage, currentHP, maxHP, activeBosses, bossGroup);
4032
- if (stellarWindResult) {
4033
- currentHP = stellarWindResult.updatedHP;
4034
- messages.push(...stellarWindResult.messages);
4035
- }
4036
- const shieldResult = await this.handleTyrsShield(ctx, targetBoss, currentHP, activeBosses, bossGroup);
4037
- if (shieldResult) {
4038
- currentHP = shieldResult.updatedHP;
4039
- 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
+ }
4040
4118
  }
4041
4119
  const survivalResult = this.handleSurvivalInstinct(targetBoss, currentHP, maxHP);
4042
4120
  if (survivalResult) {
@@ -4056,10 +4134,12 @@ var PassiveHandler = {
4056
4134
  );
4057
4135
  if (pulseDisruptorResult) {
4058
4136
  messages.push(...pulseDisruptorResult.messages);
4137
+ pulseApplied = pulseDisruptorResult.pulseApplied;
4059
4138
  }
4060
4139
  const arcResult = await this.handleArcWelderEffect(ctx, targetBoss, weaponName);
4061
4140
  if (arcResult) {
4062
4141
  messages.push(...arcResult.messages);
4142
+ arcApplied = arcResult.arcApplied;
4063
4143
  }
4064
4144
  const arcRifleResult = await this.handleArcRifleEffect(ctx, targetBoss, weaponName, messages);
4065
4145
  if (arcRifleResult) {
@@ -4130,7 +4210,9 @@ var PassiveHandler = {
4130
4210
  initialDamage: finalDamage,
4131
4211
  radiationApplied,
4132
4212
  // 新增返回辐射应用标记
4133
- freezing
4213
+ freezing,
4214
+ pulseApplied,
4215
+ arcApplied
4134
4216
  };
4135
4217
  }, "handlePassives"),
4136
4218
  // 应用技能更新到数据库(优化合并同名boss的更新)
@@ -4371,7 +4453,9 @@ async function handlePrimaryAttack(ctx, session, config, handle, equippedWeapon,
4371
4453
  passiveMessages: passiveResult.messages,
4372
4454
  radiationApplied: passiveResult.radiationApplied,
4373
4455
  freezing: passiveResult.freezing,
4374
- bileStacks: passiveResult.bileStacks
4456
+ bileStacks: passiveResult.bileStacks,
4457
+ pulseApplied: passiveResult.pulseApplied,
4458
+ arcApplied: passiveResult.arcApplied
4375
4459
  };
4376
4460
  }
4377
4461
  __name(handlePrimaryAttack, "handlePrimaryAttack");
@@ -4427,6 +4511,12 @@ async function handleScatterAttack(ctx, session, config, handle, equippedWeapon,
4427
4511
  if (passiveResult.bileStacks >= 10) {
4428
4512
  taskUpdates.push({ taskId: 3, count: 1 });
4429
4513
  }
4514
+ if (passiveResult.pulseApplied) {
4515
+ taskUpdates.push({ taskId: 4, count: 1 });
4516
+ }
4517
+ if (passiveResult.arcApplied) {
4518
+ taskUpdates.push({ taskId: 5, count: 1 });
4519
+ }
4430
4520
  const isDead = newHP <= 0;
4431
4521
  await ctx.database.set("ggcevo_boss", { name: secondaryTarget.name }, {
4432
4522
  HP: Math.max(newHP, 0),
@@ -4870,13 +4960,13 @@ function apply(ctx, config) {
4870
4960
  name: "string",
4871
4961
  type: "string",
4872
4962
  HP: "unsigned",
4963
+ energy: "unsigned",
4873
4964
  tags: { type: "list", initial: [] },
4874
4965
  skills: { type: "list", initial: [] },
4875
4966
  // 明确数组元素类型
4876
4967
  Skillcountpoints: "unsigned",
4877
4968
  Vulnerability: "unsigned",
4878
4969
  freezing: "unsigned",
4879
- energy: "unsigned",
4880
4970
  lastWeaponName: "string",
4881
4971
  // 新增字段,记录伪装技能的信息
4882
4972
  groupId: "unsigned",
@@ -4955,8 +5045,8 @@ function apply(ctx, config) {
4955
5045
  const totalBosses = await ctx.database.select("ggcevo_boss").execute((row) => import_koishi.$.count(row.name));
4956
5046
  const groupId = [...config.groupId];
4957
5047
  if (totalBosses === 0) {
4958
- await activateNextBossGroup(ctx);
4959
- await ctx.broadcast(groupId, `🔄 咕咕之战系统已初始化,首个主宰已登场!`);
5048
+ const firstBoss = await activateNextBossGroup(ctx);
5049
+ await ctx.broadcast(groupId, `🔄 咕咕之战系统已初始化,首个主宰【${firstBoss.name}】已登场!`);
4960
5050
  return;
4961
5051
  }
4962
5052
  const now = /* @__PURE__ */ new Date();
@@ -4966,10 +5056,14 @@ function apply(ctx, config) {
4966
5056
  isActive: false
4967
5057
  }).execute();
4968
5058
  for (const group of expiredGroups) {
5059
+ const currentGroupId = group.groupId;
4969
5060
  await ctx.database.remove("ggcevo_boss_damage", {});
4970
5061
  await ctx.database.remove("ggcevo_boss", {});
4971
- await activateNextBossGroup(ctx, group.groupId);
4972
- await ctx.broadcast(groupId, `🔄 ${group.name}主宰组已刷新,快去挑战吧!`);
5062
+ const newBossGroup = await activateNextBossGroup(ctx, currentGroupId);
5063
+ await ctx.broadcast(
5064
+ groupId,
5065
+ `🔄 新的主宰【${newBossGroup.name}】组已刷新,快去挑战吧!`
5066
+ );
4973
5067
  }
4974
5068
  }, 60 * 1e3);
4975
5069
  ctx.setInterval(async () => {
@@ -7256,6 +7350,12 @@ ${validTypes.join("、")}`;
7256
7350
  if (primaryAttackResult.bileStacks >= 10) {
7257
7351
  taskUpdates.push({ taskId: 3, count: 1 });
7258
7352
  }
7353
+ if (primaryAttackResult.pulseApplied) {
7354
+ taskUpdates.push({ taskId: 4, count: 1 });
7355
+ }
7356
+ if (primaryAttackResult.arcApplied) {
7357
+ taskUpdates.push({ taskId: 5, count: 1 });
7358
+ }
7259
7359
  if (scatterResult && scatterResult.taskUpdates) {
7260
7360
  scatterResult.taskUpdates.forEach((update) => {
7261
7361
  taskUpdates.push(update);
@@ -7334,7 +7434,7 @@ ${validTypes.join("、")}`;
7334
7434
  // 这里添加符号
7335
7435
  ] : [],
7336
7436
  `📊 理论伤害值:${damage}${hasCrit ? " (✨ 暴击)" : ""}`,
7337
- "💡 提示:使用 -t 重甲,生物(标签之间用英文逗号分隔) 添加测试标签"
7437
+ "💡 提示:添加测试标签: -t 重甲,生物(标签之间用英文逗号分隔)"
7338
7438
  ].filter((line) => line).join("\n");
7339
7439
  });
7340
7440
  ctx.command("ggcevo/伤害榜 [page]", "查看当前主宰伤害排名").usage("输入 伤害榜 [页码] 查看对应页的排行榜,每页10条").action(async (_, page) => {
@@ -7379,7 +7479,7 @@ ${validTypes.join("、")}`;
7379
7479
  `🔴 主宰:${mainBoss.name}`,
7380
7480
  `${mainBossHpBar} (${mainBoss.HP}/${bossGroup.main.maxHP})`
7381
7481
  ];
7382
- if (bossGroup.main.energy > 0) {
7482
+ if (bossGroup.main.maxEnergy > 0) {
7383
7483
  result.push(`⚡ 能量:${mainBoss.energy}/1000`);
7384
7484
  }
7385
7485
  result.push(`🏷️ 标签:${mainBoss.tags?.join("、") || "无"}`);
@@ -7412,7 +7512,7 @@ ${validTypes.join("、")}`;
7412
7512
  `❤️ ${minion.name}`,
7413
7513
  `${minionHpBar} (${minion.HP}/${minionConfig?.maxHP || "未知"})`
7414
7514
  ];
7415
- if (minionConfig && minionConfig.energy > 0) {
7515
+ if (minionConfig && minionConfig.maxEnergy > 0) {
7416
7516
  minionInfo.push(`⚡ 能量:${minion.energy}/1000`);
7417
7517
  }
7418
7518
  minionInfo.push(`🏷️ 标签:${minion.tags?.join("、") || "无"}`);
@@ -7443,19 +7543,19 @@ ${validTypes.join("、")}`;
7443
7543
  });
7444
7544
  ctx.command("ggcevo/初始化异形 <groupid:number>", "初始化指定主宰组", { authority: 3 }).alias("初始化yx").action(async (_, groupid) => {
7445
7545
  if (!groupid) groupid = 1;
7446
- const bossConfig = bossPool.find((g) => g.main.id === groupid);
7546
+ const bossConfig = bossPool.find((g) => g.id === groupid);
7447
7547
  if (!bossConfig) {
7448
7548
  return `未找到groupid为${groupid}的异形配置`;
7449
7549
  }
7450
7550
  await ctx.database.remove("ggcevo_boss_damage", {});
7451
7551
  await ctx.database.remove("ggcevo_boss", {});
7452
- const mainBoss = await ctx.database.create("ggcevo_boss", {
7552
+ await ctx.database.create("ggcevo_boss", {
7453
7553
  name: bossConfig.main.name,
7454
7554
  type: "主宰",
7455
7555
  HP: bossConfig.main.maxHP,
7456
7556
  tags: bossConfig.main.tags,
7457
7557
  skills: [...bossConfig.main.passive],
7458
- energy: bossConfig.main.energy,
7558
+ energy: bossConfig.main.maxEnergy,
7459
7559
  groupId: groupid,
7460
7560
  isActive: true,
7461
7561
  respawnTime: /* @__PURE__ */ new Date()
@@ -7467,13 +7567,13 @@ ${validTypes.join("、")}`;
7467
7567
  HP: minion.maxHP,
7468
7568
  tags: minion.tags,
7469
7569
  skills: [...minion.passive],
7470
- energy: minion.energy,
7570
+ energy: minion.maxEnergy,
7471
7571
  groupId: groupid,
7472
7572
  isActive: true,
7473
7573
  respawnTime: /* @__PURE__ */ new Date()
7474
7574
  });
7475
7575
  }
7476
- return `✅ 异形初始化成功!当前主宰:${bossConfig.main.name}(HP:${bossConfig.main.maxHP})`;
7576
+ return `✅ 异形初始化成功!当前主宰:${bossConfig.main.name}`;
7477
7577
  });
7478
7578
  ctx.command("ggcevo/祈愿").action(async (argv) => {
7479
7579
  const session = argv.session;
@@ -8401,7 +8501,7 @@ ${Spacestationtechnology.map((t) => t.techname).join("、")}`;
8401
8501
  handle,
8402
8502
  taskId: taskConfig.id
8403
8503
  });
8404
- if (!taskData) return `⚠️ 任务进度不足!无法完成"${taskName}"任务`;
8504
+ if (!taskData) return `⚠️ 任务进度不足!当前进度:0/${taskConfig.target}`;
8405
8505
  if (taskData.progress < taskConfig.target) {
8406
8506
  return `⚠️ 任务进度不足!当前进度:${taskData.progress}/${taskConfig.target}`;
8407
8507
  }
@@ -8433,12 +8533,12 @@ ${Spacestationtechnology.map((t) => t.techname).join("、")}`;
8433
8533
  totalRewards: newTotalRewards
8434
8534
  }], ["handle"]);
8435
8535
  const response = [
8436
- `🎉 成功完成【${taskName}】任务!`
8536
+ `🎉 成功完成 ${completableTimes} 次【${taskName}】任务!`
8437
8537
  ];
8438
8538
  if (totalBonus > 0) {
8439
- response.push(`💰 获得总奖励:${totalReward}金币 (基础值: ${baseTotal}金币)`);
8539
+ response.push(`💰 获得奖励:${totalReward}金币 (基础值: ${baseTotal}金币)`);
8440
8540
  } else {
8441
- response.push(`💰 获得总奖励:${totalReward}金币`);
8541
+ response.push(`💰 获得奖励:${totalReward}金币`);
8442
8542
  }
8443
8543
  if (totalBonus > 0) {
8444
8544
  response.push(`⚡ 加成效果:`);
@@ -8453,12 +8553,6 @@ ${Spacestationtechnology.map((t) => t.techname).join("、")}`;
8453
8553
  `📊 累计完成次数: ${newCompletions}次`,
8454
8554
  `⚙️ 剩余进度点数: ${remainingProgress}/${taskConfig.target}`
8455
8555
  );
8456
- if (remainingProgress > 0) {
8457
- response.push(`💡 剩余进度可完成 ${Math.floor(remainingProgress / taskConfig.target)} 次`);
8458
- }
8459
- if (completableTimes > 1) {
8460
- response.push(`💡 成功完成${completableTimes}次任务,已发放全部奖励`);
8461
- }
8462
8556
  return response.join("\n");
8463
8557
  } catch (error) {
8464
8558
  console.error("完成任务命令时发生错误:", error);