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