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/boss/boss.d.ts +32 -31
- package/lib/boss/passive.d.ts +108 -54
- package/lib/boss/passivehandler.d.ts +19 -13
- package/lib/index.js +262 -210
- package/lib/utils.d.ts +1 -1
- package/package.json +1 -1
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: "
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
1281
|
+
maxStacks: 0,
|
|
1282
|
+
description: "子代防御脆弱,所受伤害提升10%"
|
|
1281
1283
|
},
|
|
1282
1284
|
"异形甲壳": {
|
|
1283
1285
|
effect: -0.2,
|
|
1284
|
-
|
|
1286
|
+
maxStacks: 0,
|
|
1287
|
+
description: "强化生物甲壳提供防护,所受伤害降低20%"
|
|
1285
1288
|
},
|
|
1286
1289
|
"孤立无援": {
|
|
1287
1290
|
effect: 0.2,
|
|
1288
|
-
|
|
1291
|
+
maxStacks: 0,
|
|
1292
|
+
description: "无存活子代时,所受伤害提升20%"
|
|
1289
1293
|
},
|
|
1290
1294
|
"冰霜回复": {
|
|
1291
1295
|
effect: 0,
|
|
1292
|
-
|
|
1296
|
+
maxStacks: 0,
|
|
1297
|
+
description: "生命值降至30%以下时触发,立即回复自身40%最大生命值,并为其他存活异形回复10%最大生命值(触发后效果移除)"
|
|
1293
1298
|
},
|
|
1294
1299
|
"冰霜进化": {
|
|
1295
1300
|
effect: 0,
|
|
1296
|
-
|
|
1301
|
+
maxStacks: 0,
|
|
1302
|
+
description: "免疫冰霜类伤害,受到冰霜伤害时额外回复生命值"
|
|
1297
1303
|
},
|
|
1298
1304
|
"冰霜环绕": {
|
|
1299
1305
|
effect: 0,
|
|
1300
|
-
|
|
1306
|
+
maxStacks: 0,
|
|
1307
|
+
description: "生命值降至30%以下时触发,立即回复自身45%最大生命值(触发后效果移除)"
|
|
1301
1308
|
},
|
|
1302
1309
|
"寒霜地狱": {
|
|
1303
1310
|
effect: -0.3,
|
|
1304
|
-
|
|
1311
|
+
maxStacks: 0,
|
|
1312
|
+
description: "暴风雪笼罩战场,所受伤害降低30%"
|
|
1305
1313
|
},
|
|
1306
1314
|
"应激甲壳I": {
|
|
1307
1315
|
effect: -0.2,
|
|
1308
|
-
|
|
1316
|
+
maxStacks: 0,
|
|
1317
|
+
description: "基础应激甲壳生效,所受伤害降低20%"
|
|
1309
1318
|
},
|
|
1310
1319
|
"应激甲壳II": {
|
|
1311
1320
|
effect: -0.25,
|
|
1312
|
-
|
|
1321
|
+
maxStacks: 0,
|
|
1322
|
+
description: "进阶应激甲壳生效,所受伤害降低25%"
|
|
1313
1323
|
},
|
|
1314
1324
|
"求生本能I": {
|
|
1315
1325
|
effect: 0,
|
|
1316
|
-
|
|
1326
|
+
maxStacks: 0,
|
|
1327
|
+
description: "濒死状态下,快速回复30%最大生命值(触发后效果移除)"
|
|
1317
1328
|
},
|
|
1318
1329
|
"求生本能II": {
|
|
1319
1330
|
effect: 0,
|
|
1320
|
-
|
|
1331
|
+
maxStacks: 0,
|
|
1332
|
+
description: "濒死状态下,快速回复50%最大生命值(触发后效果移除)"
|
|
1321
1333
|
},
|
|
1322
1334
|
"冷适应": {
|
|
1323
1335
|
effect: 0,
|
|
1324
|
-
|
|
1336
|
+
maxStacks: 10,
|
|
1337
|
+
description: "累计承受10次寒冷伤害后,获得「惧热」标签并获得寒冷伤害免疫"
|
|
1325
1338
|
},
|
|
1326
1339
|
"感染空间站": {
|
|
1327
1340
|
effect: 0,
|
|
1328
|
-
|
|
1341
|
+
maxStacks: 0,
|
|
1342
|
+
description: "若「空间站哨枪塔」存活(该单位不计入子代),自身所受伤害降低50%"
|
|
1329
1343
|
},
|
|
1330
1344
|
"病毒云": {
|
|
1331
1345
|
effect: -0.1,
|
|
1332
|
-
|
|
1346
|
+
maxStacks: 0,
|
|
1347
|
+
description: "释放病毒云雾形成保护,所受伤害降低10%"
|
|
1333
1348
|
},
|
|
1334
1349
|
"霉菌滋生": {
|
|
1335
1350
|
effect: 0,
|
|
1336
|
-
|
|
1351
|
+
maxStacks: 0,
|
|
1352
|
+
description: "受到攻击后,若「空间站哨枪塔」存活,为其恢复1%最大生命值"
|
|
1337
1353
|
},
|
|
1338
1354
|
"岗哨机枪": {
|
|
1339
1355
|
effect: 0,
|
|
1340
|
-
|
|
1356
|
+
maxStacks: 10,
|
|
1357
|
+
description: "累计承受10次攻击后,为所有存活异形恢复其10%最大生命值(可重复触发)"
|
|
1341
1358
|
},
|
|
1342
1359
|
"结构装甲": {
|
|
1343
1360
|
effect: 0,
|
|
1344
|
-
|
|
1361
|
+
maxStacks: 0,
|
|
1362
|
+
description: "装备结构装甲,常规伤害降低20%;若伤害来源为热能武器,伤害降低提升至40%"
|
|
1345
1363
|
},
|
|
1346
1364
|
"吸血唾液": {
|
|
1347
1365
|
effect: 0,
|
|
1348
|
-
|
|
1366
|
+
maxStacks: 20,
|
|
1367
|
+
description: "受到攻击时叠加「吸血」层数,每层提供5%减伤(最多叠加20层)"
|
|
1349
1368
|
},
|
|
1350
1369
|
"进食": {
|
|
1351
1370
|
effect: 0,
|
|
1352
|
-
|
|
1371
|
+
maxStacks: 0,
|
|
1372
|
+
description: "当「吸血」层数达到20层时,下一次受击消耗所有层数并回复20%最大生命值"
|
|
1353
1373
|
},
|
|
1354
1374
|
"嗜血狂暴": {
|
|
1355
1375
|
effect: 0,
|
|
1356
|
-
|
|
1376
|
+
maxStacks: 0,
|
|
1377
|
+
description: "生命值低于50%时触发狂暴状态,每次受击额外叠加1层「吸血」,同时所受伤害降低20%"
|
|
1357
1378
|
},
|
|
1358
1379
|
"吐血": {
|
|
1359
1380
|
effect: 0,
|
|
1360
|
-
|
|
1381
|
+
maxStacks: 0,
|
|
1382
|
+
description: "无「吸血」层数时,所受伤害提升20%"
|
|
1361
1383
|
},
|
|
1362
1384
|
"电能导体": {
|
|
1363
1385
|
effect: 0,
|
|
1364
|
-
|
|
1386
|
+
maxStacks: 0,
|
|
1387
|
+
description: "生命值降至10%以下时,「护盾」标签转换为「重甲」标签"
|
|
1365
1388
|
},
|
|
1366
1389
|
"超导体": {
|
|
1367
1390
|
effect: 0,
|
|
1368
|
-
|
|
1391
|
+
maxStacks: 0,
|
|
1392
|
+
description: "生命值降至5%以下时,「护盾」标签转换为「重甲」标签"
|
|
1369
1393
|
},
|
|
1370
1394
|
"能量虹吸": {
|
|
1371
1395
|
effect: 0,
|
|
1372
|
-
|
|
1396
|
+
maxStacks: 0,
|
|
1397
|
+
description: "生命值≥70%时,所受伤害降低40%;生命值≥30%时,伤害降低20%"
|
|
1373
1398
|
},
|
|
1374
1399
|
"能源虹吸": {
|
|
1375
1400
|
effect: 0,
|
|
1376
|
-
|
|
1401
|
+
maxStacks: 0,
|
|
1402
|
+
description: "能量值≥80%时,所受伤害降低50%;能量值≥50%时,伤害降低30%"
|
|
1377
1403
|
},
|
|
1378
1404
|
"电能立场": {
|
|
1379
1405
|
effect: 0,
|
|
1380
|
-
|
|
1406
|
+
maxStacks: 0,
|
|
1407
|
+
description: "能量值≥30%时,每次受击有55%概率免疫该次伤害(无法免疫寒冷伤害);每存在1层「寒冷」状态,免疫概率降低5%"
|
|
1381
1408
|
},
|
|
1382
1409
|
"电能冲击波": {
|
|
1383
1410
|
effect: 0,
|
|
1384
|
-
|
|
1411
|
+
maxStacks: 0,
|
|
1412
|
+
description: "每次受击时,回复100点「能量」"
|
|
1385
1413
|
},
|
|
1386
1414
|
"脉冲": {
|
|
1387
1415
|
effect: 0,
|
|
1388
|
-
|
|
1416
|
+
maxStacks: 0,
|
|
1417
|
+
description: "能量值≥30%时,每次受击有60%概率为所有存活异形回复100点生命值;每存在1层「寒冷」状态,概率降低5%"
|
|
1389
1418
|
},
|
|
1390
1419
|
"能量黑洞": {
|
|
1391
1420
|
effect: -0.2,
|
|
1392
|
-
|
|
1421
|
+
maxStacks: 0,
|
|
1422
|
+
description: "存在「能量黑洞」时,所受伤害降低20%"
|
|
1393
1423
|
},
|
|
1394
1424
|
"火焰异形": {
|
|
1395
1425
|
effect: 0,
|
|
1396
|
-
|
|
1426
|
+
maxStacks: 0,
|
|
1427
|
+
description: "免疫火焰类伤害,受到火焰伤害时额外回复生命值"
|
|
1397
1428
|
},
|
|
1398
1429
|
"庞兽狂暴": {
|
|
1399
1430
|
effect: 0,
|
|
1400
|
-
|
|
1431
|
+
maxStacks: 0,
|
|
1432
|
+
description: "生命值低于50%时触发狂暴状态,所受伤害降低50%"
|
|
1401
1433
|
},
|
|
1402
1434
|
"灼烧粘液": {
|
|
1403
1435
|
effect: 0,
|
|
1404
|
-
|
|
1436
|
+
maxStacks: 20,
|
|
1437
|
+
description: "受到伤害时叠加「胆汁」层数;若存在「胆汁」层数时受到火焰攻击,立即清空层数并回复(层数×10)点生命值"
|
|
1405
1438
|
},
|
|
1406
1439
|
"腐蚀胆汁": {
|
|
1407
1440
|
effect: 0,
|
|
1408
|
-
|
|
1441
|
+
maxStacks: 0,
|
|
1442
|
+
description: "「胆汁」层数达到10层时,下一次受击为所有存活异形回复1000点生命值并清空层数"
|
|
1409
1443
|
},
|
|
1410
1444
|
"火焰吐息": {
|
|
1411
1445
|
effect: 0,
|
|
1412
|
-
|
|
1446
|
+
maxStacks: 0,
|
|
1447
|
+
description: "「胆汁」层数达到20层时,下一次攻击为所有存活异形回复50%最大生命值并清空层数"
|
|
1413
1448
|
},
|
|
1414
1449
|
"太阳耀斑": {
|
|
1415
1450
|
effect: 0,
|
|
1416
|
-
|
|
1451
|
+
maxStacks: 0,
|
|
1452
|
+
description: "所有子代阵亡后,移除「惧寒」标签及「孤立无援」并获得寒冷伤害免疫"
|
|
1417
1453
|
},
|
|
1418
1454
|
"燃烧潜地": {
|
|
1419
1455
|
effect: 0,
|
|
1420
|
-
|
|
1456
|
+
maxStacks: 0,
|
|
1457
|
+
description: "生命值降至10%以下时触发,立即回复50%最大生命值(触发后效果移除)"
|
|
1421
1458
|
},
|
|
1422
1459
|
"炼狱爆弹": {
|
|
1423
1460
|
effect: 0,
|
|
1424
|
-
|
|
1461
|
+
maxStacks: 0,
|
|
1462
|
+
description: "每存在1层「胆汁」,所受伤害降低5%;若存在存活子代,伤害降低效果额外提升5%(即每层「胆汁」总降低10%)"
|
|
1425
1463
|
},
|
|
1426
1464
|
"猎手异形": {
|
|
1427
1465
|
effect: 0,
|
|
1428
|
-
|
|
1466
|
+
maxStacks: 0,
|
|
1467
|
+
description: "存在其他存活异形时,所受伤害降低20%;无其他存活异形时,所受伤害提升20%;免疫火焰及寒冷伤害"
|
|
1429
1468
|
},
|
|
1430
1469
|
"狂暴": {
|
|
1431
1470
|
effect: 0,
|
|
1432
|
-
|
|
1471
|
+
maxStacks: 0,
|
|
1472
|
+
description: "生命值低于50%时触发狂暴状态,所受伤害降低50%"
|
|
1433
1473
|
},
|
|
1434
1474
|
"伪装": {
|
|
1435
1475
|
effect: 0,
|
|
1436
|
-
|
|
1476
|
+
maxStacks: 0,
|
|
1477
|
+
description: "受击时记录伤害来源的武器名称(仅保留最新),下次受到同名称武器伤害时伤害降低80%"
|
|
1437
1478
|
},
|
|
1438
1479
|
"致命一击": {
|
|
1439
1480
|
effect: 0,
|
|
1440
|
-
|
|
1481
|
+
maxStacks: 0,
|
|
1482
|
+
description: "受击时有5%概率免疫该次伤害"
|
|
1441
1483
|
},
|
|
1442
1484
|
"星界之风": {
|
|
1443
1485
|
effect: 0,
|
|
1444
|
-
|
|
1486
|
+
maxStacks: 0,
|
|
1487
|
+
description: "受击时有5%概率为所有存活异形回复200点生命值"
|
|
1445
1488
|
},
|
|
1446
1489
|
"心灵狂热": {
|
|
1447
1490
|
effect: 0,
|
|
1448
|
-
|
|
1491
|
+
maxStacks: 0,
|
|
1492
|
+
description: "生命值低于50%时进入心灵狂热状态,所受伤害降低20%,同时「星界之风」触发概率翻倍"
|
|
1449
1493
|
},
|
|
1450
1494
|
"宇宙能量": {
|
|
1451
1495
|
effect: 0,
|
|
1452
|
-
|
|
1496
|
+
maxStacks: 0,
|
|
1497
|
+
description: "受击时回复等同于本次伤害值的「能量」;若「能量」已满,则将溢出部分转换为自身生命值"
|
|
1453
1498
|
},
|
|
1454
1499
|
"复苏": {
|
|
1455
1500
|
effect: 0,
|
|
1456
|
-
|
|
1501
|
+
maxStacks: 0,
|
|
1502
|
+
description: "承受致命伤害时免疫死亡,立即回复50%最大生命值及100%「能量」,并获得「灵能构造炉」技能(触发后效果移除)"
|
|
1457
1503
|
},
|
|
1458
1504
|
"光影之刃": {
|
|
1459
1505
|
effect: 0,
|
|
1460
|
-
|
|
1506
|
+
maxStacks: 0,
|
|
1507
|
+
description: "受击后叠加「光影之刃」层数"
|
|
1461
1508
|
},
|
|
1462
1509
|
"远古预兆": {
|
|
1463
1510
|
effect: 0,
|
|
1464
|
-
|
|
1511
|
+
maxStacks: 0,
|
|
1512
|
+
description: "受击时有1%概率免疫该次伤害并回复100点「能量」"
|
|
1465
1513
|
},
|
|
1466
1514
|
"闪电冲锋": {
|
|
1467
1515
|
effect: 0,
|
|
1468
|
-
|
|
1516
|
+
maxStacks: 0,
|
|
1517
|
+
description: "每存在1层「光影之刃」,「远古预兆」「灵能构造炉」触发概率各提升0.5%"
|
|
1469
1518
|
},
|
|
1470
1519
|
"超视距穿梭": {
|
|
1471
1520
|
effect: 0,
|
|
1472
|
-
|
|
1521
|
+
maxStacks: 0,
|
|
1522
|
+
description: "能量值≥30%时,每层「光影之刃」降低5%所受伤害;能量值≥60%时,每层降低10%;能量值≤10%时,每层提升5%所受伤害"
|
|
1473
1523
|
},
|
|
1474
1524
|
"灵能构造炉": {
|
|
1475
1525
|
effect: 0,
|
|
1476
|
-
|
|
1526
|
+
maxStacks: 0,
|
|
1527
|
+
description: "受击后有5%概率随机获得以下技能之一:天启超载护盾、塌缩脉冲、地毯式轰炸、轰炸引导"
|
|
1477
1528
|
},
|
|
1478
1529
|
"天启超载护盾": {
|
|
1479
1530
|
effect: 0,
|
|
1480
|
-
|
|
1531
|
+
maxStacks: 0,
|
|
1532
|
+
description: "受击后有5%概率为所有存活异形回复(「光影之刃」层数×10)点生命值"
|
|
1481
1533
|
},
|
|
1482
1534
|
"塌缩脉冲": {
|
|
1483
1535
|
effect: 0,
|
|
1484
|
-
|
|
1536
|
+
maxStacks: 0,
|
|
1537
|
+
description: "受击后额外叠加1层「光影之刃」"
|
|
1485
1538
|
},
|
|
1486
1539
|
"地毯式轰炸": {
|
|
1487
1540
|
effect: 0,
|
|
1488
|
-
|
|
1541
|
+
maxStacks: 0,
|
|
1542
|
+
description: "触发时移除「孤立无援」,并使自身所受伤害降低100%(免疫所有伤害)"
|
|
1489
1543
|
},
|
|
1490
1544
|
"轰炸引导": {
|
|
1491
1545
|
effect: 0,
|
|
1492
|
-
|
|
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
|
|
1884
|
-
|
|
1885
|
-
|
|
1886
|
-
|
|
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
|
|
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.
|
|
1899
|
-
groupId: nextBossGroup.
|
|
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.
|
|
1912
|
-
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
|
|
2453
|
+
const actualHeal = Math.min(damage, maxHP - targetBoss.HP);
|
|
2394
2454
|
return {
|
|
2395
|
-
updatedHP:
|
|
2455
|
+
updatedHP: targetBoss.HP + actualHeal,
|
|
2396
2456
|
initialDamage: 0,
|
|
2397
2457
|
// 直接设置伤害为0
|
|
2398
|
-
messages: [`❄️ 【冰霜进化】生效:免疫寒冷伤害,${targetBoss.name}回复${
|
|
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
|
|
2443
|
-
const
|
|
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
|
-
|
|
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}
|
|
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
|
|
3166
|
-
let updatedHP = Math.min(targetBoss.HP +
|
|
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
|
-
|
|
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("
|
|
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
|
-
|
|
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:
|
|
3260
|
+
{ Skillcountpoints: 0, HP: updatedHP + actualHeal }
|
|
3199
3261
|
);
|
|
3200
3262
|
return {
|
|
3201
3263
|
messages: [
|
|
3202
|
-
`💥
|
|
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
|
|
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 =
|
|
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
|
|
3993
|
-
|
|
3994
|
-
|
|
3995
|
-
|
|
3996
|
-
|
|
3997
|
-
|
|
3998
|
-
|
|
3999
|
-
|
|
4000
|
-
|
|
4001
|
-
|
|
4002
|
-
|
|
4003
|
-
|
|
4004
|
-
|
|
4005
|
-
|
|
4006
|
-
|
|
4007
|
-
|
|
4008
|
-
|
|
4009
|
-
|
|
4010
|
-
|
|
4011
|
-
|
|
4012
|
-
|
|
4013
|
-
|
|
4014
|
-
|
|
4015
|
-
|
|
4016
|
-
|
|
4017
|
-
|
|
4018
|
-
|
|
4019
|
-
|
|
4020
|
-
|
|
4021
|
-
|
|
4022
|
-
|
|
4023
|
-
|
|
4024
|
-
|
|
4025
|
-
|
|
4026
|
-
|
|
4027
|
-
|
|
4028
|
-
|
|
4029
|
-
|
|
4030
|
-
|
|
4031
|
-
|
|
4032
|
-
|
|
4033
|
-
|
|
4034
|
-
|
|
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
|
-
|
|
4047
|
-
|
|
4048
|
-
|
|
4049
|
-
|
|
4050
|
-
|
|
4051
|
-
|
|
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
|
-
|
|
4056
|
-
|
|
4057
|
-
|
|
4058
|
-
|
|
4059
|
-
|
|
4060
|
-
|
|
4061
|
-
|
|
4062
|
-
|
|
4063
|
-
|
|
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,
|
|
5008
|
-
await ctx.broadcast(
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
-
|
|
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.
|
|
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.
|
|
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}
|
|
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 `⚠️
|
|
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
|
-
`🎉
|
|
8536
|
+
`🎉 成功完成 ${completableTimes} 次【${taskName}】任务!`
|
|
8479
8537
|
];
|
|
8480
8538
|
if (totalBonus > 0) {
|
|
8481
|
-
response.push(`💰
|
|
8539
|
+
response.push(`💰 获得奖励:${totalReward}金币 (基础值: ${baseTotal}金币)`);
|
|
8482
8540
|
} else {
|
|
8483
|
-
response.push(`💰
|
|
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);
|