koishi-plugin-ggcevo-game 1.4.26 → 1.4.27
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 +18 -0
- package/lib/boss/passive.d.ts +51 -3
- package/lib/boss/passivehandler.d.ts +43 -1
- package/lib/index.js +515 -46
- package/package.json +1 -1
package/lib/boss/boss.d.ts
CHANGED
|
@@ -164,4 +164,22 @@ export declare const bossPool: readonly [{
|
|
|
164
164
|
tags: ("生物" | "异形")[];
|
|
165
165
|
passive: ("弱化形态" | "猎手异形" | "狂暴" | "伪装")[];
|
|
166
166
|
}[];
|
|
167
|
+
}, {
|
|
168
|
+
main: {
|
|
169
|
+
id: number;
|
|
170
|
+
name: string;
|
|
171
|
+
type: "主宰";
|
|
172
|
+
maxHP: number;
|
|
173
|
+
energy: number;
|
|
174
|
+
tags: ("重甲" | "护盾" | "生物" | "灵能" | "异形")[];
|
|
175
|
+
passive: ("星界之风" | "宇宙能量" | "复苏" | "光影之刃" | "远古预兆" | "超视距穿梭")[];
|
|
176
|
+
};
|
|
177
|
+
minions: {
|
|
178
|
+
name: string;
|
|
179
|
+
type: "子代";
|
|
180
|
+
maxHP: number;
|
|
181
|
+
energy: number;
|
|
182
|
+
tags: ("重甲" | "护盾" | "生物" | "灵能" | "异形")[];
|
|
183
|
+
passive: ("弱化形态" | "星界之风" | "心灵狂热")[];
|
|
184
|
+
}[];
|
|
167
185
|
}];
|
package/lib/boss/passive.d.ts
CHANGED
|
@@ -97,11 +97,11 @@ export declare const passiveConfig: {
|
|
|
97
97
|
};
|
|
98
98
|
readonly 能源虹吸: {
|
|
99
99
|
readonly effect: 0;
|
|
100
|
-
readonly description: "
|
|
100
|
+
readonly description: "拥有“能量”机制。当“能量”≥80%的时候,受到的伤害-50%; 当“能量”≥50%的时候,受到的伤害-30%";
|
|
101
101
|
};
|
|
102
102
|
readonly 电能立场: {
|
|
103
103
|
readonly effect: 0;
|
|
104
|
-
readonly description: "当“能量”≥
|
|
104
|
+
readonly description: "当“能量”≥30%的时候,每次受到攻击有55%的概率免疫此次伤害(无法免疫寒冷伤害); 每拥有一层“寒冷”则降低5%的概率";
|
|
105
105
|
};
|
|
106
106
|
readonly 电能冲击波: {
|
|
107
107
|
readonly effect: 0;
|
|
@@ -109,7 +109,7 @@ export declare const passiveConfig: {
|
|
|
109
109
|
};
|
|
110
110
|
readonly 脉冲: {
|
|
111
111
|
readonly effect: 0;
|
|
112
|
-
readonly description: "当“能量”≥
|
|
112
|
+
readonly description: "当“能量”≥30%的时候,每次受到攻击有60%的概率回复所有存活的异形100点血量; 每拥有一层“寒冷”则降低5%的概率";
|
|
113
113
|
};
|
|
114
114
|
readonly 能量黑洞: {
|
|
115
115
|
readonly effect: -0.2;
|
|
@@ -163,4 +163,52 @@ export declare const passiveConfig: {
|
|
|
163
163
|
readonly effect: 0;
|
|
164
164
|
readonly description: "受到伤害时,有5%的概率免疫此次伤害";
|
|
165
165
|
};
|
|
166
|
+
readonly 星界之风: {
|
|
167
|
+
readonly effect: 0;
|
|
168
|
+
readonly description: "受到伤害时,有5%的概率回复所有存活异形500点血量";
|
|
169
|
+
};
|
|
170
|
+
readonly 心灵狂热: {
|
|
171
|
+
readonly effect: 0;
|
|
172
|
+
readonly description: "当血量低于50%时,进入心灵狂热状态,受到的伤害-50%";
|
|
173
|
+
};
|
|
174
|
+
readonly 宇宙能量: {
|
|
175
|
+
readonly effect: 0;
|
|
176
|
+
readonly description: "拥有“能量”机制; 受到攻击时回复与该攻击伤害等额的“能量”; 若“能量”已满,则回复与该攻击伤害等额的血量";
|
|
177
|
+
};
|
|
178
|
+
readonly 复苏: {
|
|
179
|
+
readonly effect: 0;
|
|
180
|
+
readonly description: "受到致命伤害时,免于死亡并且快速回复50%的血量和100%的能量,并且获得“灵能构造炉”技能(触发后移除)";
|
|
181
|
+
};
|
|
182
|
+
readonly 光影之刃: {
|
|
183
|
+
readonly effect: 0;
|
|
184
|
+
readonly description: "受到伤害后,获得一层“光影之刃”";
|
|
185
|
+
};
|
|
186
|
+
readonly 远古预兆: {
|
|
187
|
+
readonly effect: 0;
|
|
188
|
+
readonly description: "受到伤害时,有5%的概率免疫此次伤害并且回复100点“能量”,每层“光影之刃”额外提供1%的概率";
|
|
189
|
+
};
|
|
190
|
+
readonly 超视距穿梭: {
|
|
191
|
+
readonly effect: 0;
|
|
192
|
+
readonly description: "当“能量”≥30%时,每层“光影之刃”使受到的伤害-5%";
|
|
193
|
+
};
|
|
194
|
+
readonly 灵能构造炉: {
|
|
195
|
+
readonly effect: 0;
|
|
196
|
+
readonly description: "受到攻击后,有5%的概率会随机获得以下4个技能之一(天启超载护盾,塌缩脉冲,地毯式轰炸,轰炸引导),每层“光影之刃”额外提供1%的概率";
|
|
197
|
+
};
|
|
198
|
+
readonly 天启超载护盾: {
|
|
199
|
+
readonly effect: 0;
|
|
200
|
+
readonly description: "受到伤害后,有10%的概率消耗所有“光影之刃”层数,回复所有存活异形X点血量(X为“光影之刃”层数 x 100)";
|
|
201
|
+
};
|
|
202
|
+
readonly 塌缩脉冲: {
|
|
203
|
+
readonly effect: 0;
|
|
204
|
+
readonly description: "受到伤害后,额外获得一层“光影之刃”";
|
|
205
|
+
};
|
|
206
|
+
readonly 地毯式轰炸: {
|
|
207
|
+
readonly effect: 0;
|
|
208
|
+
readonly description: "我心中的怒火胜过千万个太阳!移除自身的“孤立无援”,并使受到的伤害-50%";
|
|
209
|
+
};
|
|
210
|
+
readonly 轰炸引导: {
|
|
211
|
+
readonly effect: 0;
|
|
212
|
+
readonly description: "受到伤害后,有10%的概率概率消耗所有“光影之刃”层数,回复自身X点“能量”(X为“光影之刃”层数 x 100)";
|
|
213
|
+
};
|
|
166
214
|
};
|
|
@@ -38,7 +38,7 @@ export declare const PassiveHandler: {
|
|
|
38
38
|
messages: string[];
|
|
39
39
|
skillUpdates: {
|
|
40
40
|
name: any;
|
|
41
|
-
remove: ("冰霜环绕" | "寒霜地狱" | "冰霜回复" | "弱化形态" | "异形甲壳" | "孤立无援" | "冰霜进化" | "应激甲壳I" | "应激甲壳II" | "求生本能I" | "求生本能II" | "冷适应" | "感染空间站" | "病毒云" | "霉菌滋生" | "岗哨机枪" | "结构装甲" | "吸血唾液" | "进食" | "嗜血狂暴" | "吐血" | "电能导体" | "超导体" | "能量虹吸" | "能源虹吸" | "电能立场" | "电能冲击波" | "脉冲" | "能量黑洞" | "火焰异形" | "庞兽狂暴" | "灼烧粘液" | "腐蚀胆汁" | "火焰吐息" | "太阳耀斑" | "燃烧潜地" | "炼狱爆弹" | "猎手异形" | "狂暴" | "伪装" | "致命一击")[];
|
|
41
|
+
remove: ("冰霜环绕" | "寒霜地狱" | "冰霜回复" | "弱化形态" | "异形甲壳" | "孤立无援" | "冰霜进化" | "应激甲壳I" | "应激甲壳II" | "求生本能I" | "求生本能II" | "冷适应" | "感染空间站" | "病毒云" | "霉菌滋生" | "岗哨机枪" | "结构装甲" | "吸血唾液" | "进食" | "嗜血狂暴" | "吐血" | "电能导体" | "超导体" | "能量虹吸" | "能源虹吸" | "电能立场" | "电能冲击波" | "脉冲" | "能量黑洞" | "火焰异形" | "庞兽狂暴" | "灼烧粘液" | "腐蚀胆汁" | "火焰吐息" | "太阳耀斑" | "燃烧潜地" | "炼狱爆弹" | "猎手异形" | "狂暴" | "伪装" | "致命一击" | "星界之风" | "心灵狂热" | "宇宙能量" | "复苏" | "光影之刃" | "远古预兆" | "超视距穿梭" | "灵能构造炉" | "天启超载护盾" | "塌缩脉冲" | "地毯式轰炸" | "轰炸引导")[];
|
|
42
42
|
}[];
|
|
43
43
|
};
|
|
44
44
|
handleInfectedStation: (ctx: Context, targetBoss: any) => Promise<{
|
|
@@ -181,6 +181,48 @@ export declare const PassiveHandler: {
|
|
|
181
181
|
handlePulseDisruptor: (ctx: Context, targetBoss: any, weaponName: string) => Promise<{
|
|
182
182
|
messages: string[];
|
|
183
183
|
}>;
|
|
184
|
+
handleStellarWind: (ctx: Context, targetBoss: any, initialDamage: number, activeBosses: any[], bossGroup: BossPoolItem) => Promise<{
|
|
185
|
+
messages: string[];
|
|
186
|
+
}>;
|
|
187
|
+
handlePsychicFrenzy: (targetBoss: any, currentHP: number, maxHP: number) => {
|
|
188
|
+
damageMultiplier: number;
|
|
189
|
+
messages: string[];
|
|
190
|
+
};
|
|
191
|
+
handleCosmicEnergy: (ctx: Context, targetBoss: any, initialDamage: number, bossGroup: any) => Promise<{
|
|
192
|
+
messages: string[];
|
|
193
|
+
healAmount: number;
|
|
194
|
+
}>;
|
|
195
|
+
handleLightblade: (ctx: Context, targetBoss: any) => Promise<{
|
|
196
|
+
messages: string[];
|
|
197
|
+
}>;
|
|
198
|
+
handleAncientOmen: (ctx: Context, targetBoss: any) => Promise<{
|
|
199
|
+
immune: boolean;
|
|
200
|
+
messages: string[];
|
|
201
|
+
}>;
|
|
202
|
+
handleHyperspaceSkip: (targetBoss: any) => {
|
|
203
|
+
damageMultiplier: number;
|
|
204
|
+
messages: string[];
|
|
205
|
+
};
|
|
206
|
+
handleRevival: (ctx: Context, targetBoss: any, currentHP: number, maxHP: number) => Promise<{
|
|
207
|
+
updatedHP: number;
|
|
208
|
+
messages: string[];
|
|
209
|
+
}>;
|
|
210
|
+
handleConstructor: (ctx: Context, targetBoss: any) => Promise<{
|
|
211
|
+
messages: string[];
|
|
212
|
+
}>;
|
|
213
|
+
handleTyrsShield: (ctx: Context, targetBoss: any, activeBosses: any[], bossGroup: BossPoolItem) => Promise<{
|
|
214
|
+
messages: string[];
|
|
215
|
+
}>;
|
|
216
|
+
handleCollapsePulse: (ctx: Context, targetBoss: any) => Promise<{
|
|
217
|
+
messages: string[];
|
|
218
|
+
}>;
|
|
219
|
+
handleCarpetBombing: (ctx: Context, targetBoss: any) => Promise<{
|
|
220
|
+
messages: string[];
|
|
221
|
+
damageMultiplier: number;
|
|
222
|
+
}>;
|
|
223
|
+
handleBombardmentGuidance: (ctx: Context, targetBoss: any) => Promise<{
|
|
224
|
+
messages: string[];
|
|
225
|
+
}>;
|
|
184
226
|
handlePassives: (ctx: Context, handle: string, targetBoss: any, initialDamage: number, currentHP: number, maxHP: number, weaponName: string, weaponData: any, bossGroup: any) => Promise<{
|
|
185
227
|
currentHP: any;
|
|
186
228
|
messages: any;
|
package/lib/index.js
CHANGED
|
@@ -437,7 +437,7 @@ var SyndicatedItems = {
|
|
|
437
437
|
price: 75,
|
|
438
438
|
redCrystalCost: 0,
|
|
439
439
|
condition: "目标无建筑标签和重型标签",
|
|
440
|
-
effects: "
|
|
440
|
+
effects: "使目标的技能层数减少10层"
|
|
441
441
|
},
|
|
442
442
|
"CRED-17": {
|
|
443
443
|
id: 3,
|
|
@@ -1231,6 +1231,27 @@ var bossPool = [
|
|
|
1231
1231
|
passive: asPassives(["弱化形态", "猎手异形", "狂暴", "伪装"])
|
|
1232
1232
|
}
|
|
1233
1233
|
]
|
|
1234
|
+
}),
|
|
1235
|
+
defineBoss({
|
|
1236
|
+
main: {
|
|
1237
|
+
id: 9,
|
|
1238
|
+
name: "宇宙界主",
|
|
1239
|
+
type: "主宰",
|
|
1240
|
+
maxHP: 25e3,
|
|
1241
|
+
energy: 1e3,
|
|
1242
|
+
tags: asBossTags(["重甲", "护盾", "生物", "灵能", "异形"]),
|
|
1243
|
+
passive: asPassives(["宇宙能量", "复苏", "光影之刃", "远古预兆", "星界之风", "超视距穿梭"])
|
|
1244
|
+
},
|
|
1245
|
+
minions: [
|
|
1246
|
+
{
|
|
1247
|
+
name: "宇宙战将",
|
|
1248
|
+
type: "子代",
|
|
1249
|
+
maxHP: 7500,
|
|
1250
|
+
energy: 0,
|
|
1251
|
+
tags: asBossTags(["重甲", "护盾", "生物", "灵能", "异形"]),
|
|
1252
|
+
passive: asPassives(["弱化形态", "心灵狂热", "星界之风"])
|
|
1253
|
+
}
|
|
1254
|
+
]
|
|
1234
1255
|
})
|
|
1235
1256
|
];
|
|
1236
1257
|
|
|
@@ -1334,11 +1355,11 @@ var passiveConfig = {
|
|
|
1334
1355
|
},
|
|
1335
1356
|
"能源虹吸": {
|
|
1336
1357
|
effect: 0,
|
|
1337
|
-
description: "
|
|
1358
|
+
description: "拥有“能量”机制。当“能量”≥80%的时候,受到的伤害-50%; 当“能量”≥50%的时候,受到的伤害-30%"
|
|
1338
1359
|
},
|
|
1339
1360
|
"电能立场": {
|
|
1340
1361
|
effect: 0,
|
|
1341
|
-
description: "当“能量”≥
|
|
1362
|
+
description: "当“能量”≥30%的时候,每次受到攻击有55%的概率免疫此次伤害(无法免疫寒冷伤害); 每拥有一层“寒冷”则降低5%的概率"
|
|
1342
1363
|
},
|
|
1343
1364
|
"电能冲击波": {
|
|
1344
1365
|
effect: 0,
|
|
@@ -1346,7 +1367,7 @@ var passiveConfig = {
|
|
|
1346
1367
|
},
|
|
1347
1368
|
"脉冲": {
|
|
1348
1369
|
effect: 0,
|
|
1349
|
-
description: "当“能量”≥
|
|
1370
|
+
description: "当“能量”≥30%的时候,每次受到攻击有60%的概率回复所有存活的异形100点血量; 每拥有一层“寒冷”则降低5%的概率"
|
|
1350
1371
|
},
|
|
1351
1372
|
"能量黑洞": {
|
|
1352
1373
|
effect: -0.2,
|
|
@@ -1399,6 +1420,54 @@ var passiveConfig = {
|
|
|
1399
1420
|
"致命一击": {
|
|
1400
1421
|
effect: 0,
|
|
1401
1422
|
description: "受到伤害时,有5%的概率免疫此次伤害"
|
|
1423
|
+
},
|
|
1424
|
+
"星界之风": {
|
|
1425
|
+
effect: 0,
|
|
1426
|
+
description: "受到伤害时,有5%的概率回复所有存活异形500点血量"
|
|
1427
|
+
},
|
|
1428
|
+
"心灵狂热": {
|
|
1429
|
+
effect: 0,
|
|
1430
|
+
description: "当血量低于50%时,进入心灵狂热状态,受到的伤害-50%"
|
|
1431
|
+
},
|
|
1432
|
+
"宇宙能量": {
|
|
1433
|
+
effect: 0,
|
|
1434
|
+
description: "拥有“能量”机制; 受到攻击时回复与该攻击伤害等额的“能量”; 若“能量”已满,则回复与该攻击伤害等额的血量"
|
|
1435
|
+
},
|
|
1436
|
+
"复苏": {
|
|
1437
|
+
effect: 0,
|
|
1438
|
+
description: "受到致命伤害时,免于死亡并且快速回复50%的血量和100%的能量,并且获得“灵能构造炉”技能(触发后移除)"
|
|
1439
|
+
},
|
|
1440
|
+
"光影之刃": {
|
|
1441
|
+
effect: 0,
|
|
1442
|
+
description: "受到伤害后,获得一层“光影之刃”"
|
|
1443
|
+
},
|
|
1444
|
+
"远古预兆": {
|
|
1445
|
+
effect: 0,
|
|
1446
|
+
description: "受到伤害时,有5%的概率免疫此次伤害并且回复100点“能量”,每层“光影之刃”额外提供1%的概率"
|
|
1447
|
+
},
|
|
1448
|
+
"超视距穿梭": {
|
|
1449
|
+
effect: 0,
|
|
1450
|
+
description: "当“能量”≥30%时,每层“光影之刃”使受到的伤害-5%"
|
|
1451
|
+
},
|
|
1452
|
+
"灵能构造炉": {
|
|
1453
|
+
effect: 0,
|
|
1454
|
+
description: "受到攻击后,有5%的概率会随机获得以下4个技能之一(天启超载护盾,塌缩脉冲,地毯式轰炸,轰炸引导),每层“光影之刃”额外提供1%的概率"
|
|
1455
|
+
},
|
|
1456
|
+
"天启超载护盾": {
|
|
1457
|
+
effect: 0,
|
|
1458
|
+
description: "受到伤害后,有10%的概率消耗所有“光影之刃”层数,回复所有存活异形X点血量(X为“光影之刃”层数 x 100)"
|
|
1459
|
+
},
|
|
1460
|
+
"塌缩脉冲": {
|
|
1461
|
+
effect: 0,
|
|
1462
|
+
description: "受到伤害后,额外获得一层“光影之刃”"
|
|
1463
|
+
},
|
|
1464
|
+
"地毯式轰炸": {
|
|
1465
|
+
effect: 0,
|
|
1466
|
+
description: "我心中的怒火胜过千万个太阳!移除自身的“孤立无援”,并使受到的伤害-50%"
|
|
1467
|
+
},
|
|
1468
|
+
"轰炸引导": {
|
|
1469
|
+
effect: 0,
|
|
1470
|
+
description: "受到伤害后,有10%的概率概率消耗所有“光影之刃”层数,回复自身X点“能量”(X为“光影之刃”层数 x 100)"
|
|
1402
1471
|
}
|
|
1403
1472
|
};
|
|
1404
1473
|
|
|
@@ -1570,28 +1639,28 @@ async function calculateCareerAdditive(ctx, handle, weaponType, weaponId) {
|
|
|
1570
1639
|
let message = "";
|
|
1571
1640
|
if (careerData?.career === "警卫长") {
|
|
1572
1641
|
value += 0.05;
|
|
1573
|
-
message = "⚔️
|
|
1642
|
+
message = "⚔️ 警卫长职业:攻击伤害+5%";
|
|
1574
1643
|
}
|
|
1575
1644
|
if (careerData?.career === "武器中士") {
|
|
1576
1645
|
value += 0.15;
|
|
1577
|
-
message = "⚔️
|
|
1646
|
+
message = "⚔️ 武器中士职业:攻击伤害+15%";
|
|
1578
1647
|
}
|
|
1579
1648
|
if (careerData?.career === "能量武器专家") {
|
|
1580
1649
|
if (weaponType === "能量武器") {
|
|
1581
1650
|
value += 0.2;
|
|
1582
|
-
message = "⚔️
|
|
1651
|
+
message = "⚔️ 能量武器专家职业:能量武器攻击伤害+20%";
|
|
1583
1652
|
}
|
|
1584
1653
|
}
|
|
1585
1654
|
if (careerData?.career === "纵火狂") {
|
|
1586
1655
|
if (weaponType === "热能武器") {
|
|
1587
1656
|
value += 0.2;
|
|
1588
|
-
message = "⚔️
|
|
1657
|
+
message = "⚔️ 纵火狂职业:热能武器攻击伤害+20%";
|
|
1589
1658
|
}
|
|
1590
1659
|
}
|
|
1591
1660
|
if (careerData?.career === "猩红杀手") {
|
|
1592
1661
|
if (weaponId === 7) {
|
|
1593
1662
|
value += 0.15;
|
|
1594
|
-
message = "⚔️
|
|
1663
|
+
message = "⚔️ 猩红杀手职业:侦察步枪攻击伤害+15%";
|
|
1595
1664
|
}
|
|
1596
1665
|
}
|
|
1597
1666
|
return { value, message };
|
|
@@ -1608,7 +1677,7 @@ async function calculateWishAdditive(ctx, handle, weapon) {
|
|
|
1608
1677
|
});
|
|
1609
1678
|
if (sovereign) {
|
|
1610
1679
|
value += 0.1;
|
|
1611
|
-
messages.push("👑
|
|
1680
|
+
messages.push("👑 王权增幅祈愿:攻击伤害+10%");
|
|
1612
1681
|
}
|
|
1613
1682
|
const [lament] = await ctx.database.get("ggcevo_Wish_Record", {
|
|
1614
1683
|
handle,
|
|
@@ -1619,7 +1688,7 @@ async function calculateWishAdditive(ctx, handle, weapon) {
|
|
|
1619
1688
|
if (lament) {
|
|
1620
1689
|
const levelBonus = 0.1 * (weapon.level + 1);
|
|
1621
1690
|
value += levelBonus;
|
|
1622
|
-
messages.push(`🗡️
|
|
1691
|
+
messages.push(`🗡️ 悲鸣之锋祈愿:攻击伤害+${Math.round(levelBonus * 100)}%`);
|
|
1623
1692
|
}
|
|
1624
1693
|
const [critRhythm] = await ctx.database.get("ggcevo_Wish_Record", {
|
|
1625
1694
|
handle,
|
|
@@ -1628,7 +1697,7 @@ async function calculateWishAdditive(ctx, handle, weapon) {
|
|
|
1628
1697
|
endTime: { $gte: /* @__PURE__ */ new Date() }
|
|
1629
1698
|
});
|
|
1630
1699
|
if (critRhythm) {
|
|
1631
|
-
messages.push("🎵
|
|
1700
|
+
messages.push("🎵 暴击韵律祈愿:攻击暴击率+20%");
|
|
1632
1701
|
}
|
|
1633
1702
|
return {
|
|
1634
1703
|
value,
|
|
@@ -1920,18 +1989,33 @@ async function applyItemEffect(ctx, session, handle, itemConfig2, target) {
|
|
|
1920
1989
|
name: target,
|
|
1921
1990
|
isActive: true
|
|
1922
1991
|
});
|
|
1923
|
-
if (!targetboss
|
|
1992
|
+
if (!targetboss) return {
|
|
1924
1993
|
success: false,
|
|
1925
|
-
message: "
|
|
1994
|
+
message: "无法找到指定的目标。"
|
|
1926
1995
|
};
|
|
1996
|
+
if (targetboss.tags.includes("建筑") || targetboss.tags.includes("重型")) {
|
|
1997
|
+
return {
|
|
1998
|
+
success: false,
|
|
1999
|
+
message: `目标${target}拥有"${targetboss.tags.includes("建筑") ? "建筑" : "重型"}"标签,无法使用此物品。`
|
|
2000
|
+
};
|
|
2001
|
+
}
|
|
2002
|
+
const currentCount = targetboss.Skillcountpoints || 0;
|
|
2003
|
+
if (currentCount <= 0) {
|
|
2004
|
+
return {
|
|
2005
|
+
success: false,
|
|
2006
|
+
message: `目标${target}的技能层数已为0,无需使用此物品。`
|
|
2007
|
+
};
|
|
2008
|
+
}
|
|
2009
|
+
const newCount = Math.max(0, currentCount - 10);
|
|
2010
|
+
const reducedAmount = currentCount - newCount;
|
|
1927
2011
|
await ctx.database.set(
|
|
1928
2012
|
"ggcevo_boss",
|
|
1929
2013
|
{ name: target },
|
|
1930
|
-
{ Skillcountpoints:
|
|
2014
|
+
{ Skillcountpoints: newCount }
|
|
1931
2015
|
);
|
|
1932
2016
|
return {
|
|
1933
2017
|
success: true,
|
|
1934
|
-
message: `成功使用${itemName}
|
|
2018
|
+
message: `成功使用${itemName},使${target}的技能层数减少${reducedAmount}层(当前:${newCount}层)。`
|
|
1935
2019
|
};
|
|
1936
2020
|
}
|
|
1937
2021
|
if (itemConfig2.id === 3 || itemConfig2.id === 5) {
|
|
@@ -1951,7 +2035,7 @@ async function applyItemEffect(ctx, session, handle, itemConfig2, target) {
|
|
|
1951
2035
|
});
|
|
1952
2036
|
if (!targetboss || targetboss?.energy === 0) return {
|
|
1953
2037
|
success: false,
|
|
1954
|
-
message: "
|
|
2038
|
+
message: "您无法对没有能量的目标使用。"
|
|
1955
2039
|
};
|
|
1956
2040
|
await ctx.database.set(
|
|
1957
2041
|
"ggcevo_boss",
|
|
@@ -2606,7 +2690,7 @@ var PassiveHandler = {
|
|
|
2606
2690
|
{ name: targetBoss.name },
|
|
2607
2691
|
{ Vulnerability: newLayers }
|
|
2608
2692
|
);
|
|
2609
|
-
messages.push(`☢️ ${targetBoss.name}获得1
|
|
2693
|
+
messages.push(`☢️ ${targetBoss.name}获得1层“辐射”`);
|
|
2610
2694
|
radiationApplied = true;
|
|
2611
2695
|
return {
|
|
2612
2696
|
messages,
|
|
@@ -2621,7 +2705,7 @@ var PassiveHandler = {
|
|
|
2621
2705
|
const damageIncrease = effectiveLayers * 2.5;
|
|
2622
2706
|
const maxIncrease = 50;
|
|
2623
2707
|
const messages = [];
|
|
2624
|
-
let statusMsg = `☢️ 【辐射】生效:当前${radiationLayers}
|
|
2708
|
+
let statusMsg = `☢️ 【辐射】生效:当前${radiationLayers}层“辐射”`;
|
|
2625
2709
|
statusMsg += `,受到的伤害+${damageIncrease}%`;
|
|
2626
2710
|
if (damageIncrease >= maxIncrease) {
|
|
2627
2711
|
statusMsg += ``;
|
|
@@ -2647,7 +2731,7 @@ var PassiveHandler = {
|
|
|
2647
2731
|
{ name: targetBoss.name },
|
|
2648
2732
|
{ freezing: newFreezing }
|
|
2649
2733
|
);
|
|
2650
|
-
messages.push(`❄️ ${targetBoss.name} 获得1
|
|
2734
|
+
messages.push(`❄️ ${targetBoss.name} 获得1层“寒冷”`);
|
|
2651
2735
|
freezing = true;
|
|
2652
2736
|
return {
|
|
2653
2737
|
messages,
|
|
@@ -2662,7 +2746,7 @@ var PassiveHandler = {
|
|
|
2662
2746
|
const damageIncrease = effectiveLayers * 2.5;
|
|
2663
2747
|
const maxIncrease = 50;
|
|
2664
2748
|
const messages = [];
|
|
2665
|
-
let statusMsg = `❄️ 【寒冷】生效:当前${freezingLayers}
|
|
2749
|
+
let statusMsg = `❄️ 【寒冷】生效:当前${freezingLayers}层“寒冷”`;
|
|
2666
2750
|
statusMsg += `,受到的伤害+${damageIncrease}%`;
|
|
2667
2751
|
if (damageIncrease >= maxIncrease) {
|
|
2668
2752
|
statusMsg += ``;
|
|
@@ -2761,7 +2845,7 @@ var PassiveHandler = {
|
|
|
2761
2845
|
const currentFreezing = targetBoss.freezing || 0;
|
|
2762
2846
|
let immuneChance = 55 - currentFreezing * 5;
|
|
2763
2847
|
immuneChance = Math.max(immuneChance, 5);
|
|
2764
|
-
if (currentEnergy <
|
|
2848
|
+
if (currentEnergy < 300) {
|
|
2765
2849
|
return null;
|
|
2766
2850
|
}
|
|
2767
2851
|
const roll = Math.random() * 100;
|
|
@@ -2789,7 +2873,7 @@ var PassiveHandler = {
|
|
|
2789
2873
|
const currentEnergy = targetBoss.energy || 0;
|
|
2790
2874
|
const currentFreezing = targetBoss.freezing || 0;
|
|
2791
2875
|
const maxEnergy = 1e3;
|
|
2792
|
-
if (currentEnergy < maxEnergy * 0.
|
|
2876
|
+
if (currentEnergy < maxEnergy * 0.3) {
|
|
2793
2877
|
return null;
|
|
2794
2878
|
}
|
|
2795
2879
|
let triggerChance = 60 - currentFreezing * 5;
|
|
@@ -3288,10 +3372,322 @@ var PassiveHandler = {
|
|
|
3288
3372
|
targetBoss.Skillcountpoints = newCount;
|
|
3289
3373
|
return {
|
|
3290
3374
|
messages: [
|
|
3291
|
-
`⚡
|
|
3375
|
+
`⚡ 【脉冲扰乱枪】武器效果:使${targetBoss.name}的技能层数减少2层(当前${newCount}层)`
|
|
3292
3376
|
]
|
|
3293
3377
|
};
|
|
3294
3378
|
}, "handlePulseDisruptor"),
|
|
3379
|
+
// === 星界之风 ===
|
|
3380
|
+
handleStellarWind: /* @__PURE__ */ __name(async (ctx, targetBoss, initialDamage, activeBosses, bossGroup) => {
|
|
3381
|
+
if (!targetBoss.skills.includes("星界之风") || initialDamage === 0) return null;
|
|
3382
|
+
if (Math.random() * 100 < 5) {
|
|
3383
|
+
const groupMembers = activeBosses.filter(
|
|
3384
|
+
(b) => b.groupId === targetBoss.groupId && b.HP > 0
|
|
3385
|
+
);
|
|
3386
|
+
const updates = [];
|
|
3387
|
+
const messages = ["🌠 【星界之风】生效:治疗所有存活异形500点血量"];
|
|
3388
|
+
for (const member of groupMembers) {
|
|
3389
|
+
const maxHP = PassiveHandler.getMemberConfig(member.name, bossGroup)?.maxHP;
|
|
3390
|
+
if (!maxHP) continue;
|
|
3391
|
+
const healAmount = 500;
|
|
3392
|
+
const newHP = Math.min(member.HP + healAmount, maxHP);
|
|
3393
|
+
updates.push(
|
|
3394
|
+
ctx.database.set(
|
|
3395
|
+
"ggcevo_boss",
|
|
3396
|
+
{ name: member.name },
|
|
3397
|
+
{ HP: newHP }
|
|
3398
|
+
)
|
|
3399
|
+
);
|
|
3400
|
+
messages.push(`${member.name} +${healAmount}HP`);
|
|
3401
|
+
}
|
|
3402
|
+
await Promise.all(updates);
|
|
3403
|
+
return { messages };
|
|
3404
|
+
}
|
|
3405
|
+
return null;
|
|
3406
|
+
}, "handleStellarWind"),
|
|
3407
|
+
// === 心灵狂热 ===
|
|
3408
|
+
handlePsychicFrenzy: /* @__PURE__ */ __name(function(targetBoss, currentHP, maxHP) {
|
|
3409
|
+
if (!targetBoss.skills.includes("心灵狂热")) return null;
|
|
3410
|
+
if (currentHP / maxHP < 0.5) {
|
|
3411
|
+
return {
|
|
3412
|
+
damageMultiplier: -0.5,
|
|
3413
|
+
messages: [`🌀 【心灵狂热】生效:进入心灵狂热状态,受到的伤害-50%`]
|
|
3414
|
+
};
|
|
3415
|
+
}
|
|
3416
|
+
return null;
|
|
3417
|
+
}, "handlePsychicFrenzy"),
|
|
3418
|
+
// === 宇宙能量 ===
|
|
3419
|
+
handleCosmicEnergy: /* @__PURE__ */ __name(async (ctx, targetBoss, initialDamage, bossGroup) => {
|
|
3420
|
+
if (!targetBoss.skills.includes("宇宙能量")) return null;
|
|
3421
|
+
const maxEnergy = 1e3;
|
|
3422
|
+
const currentEnergy = targetBoss.energy || 0;
|
|
3423
|
+
const availableSpace = maxEnergy - currentEnergy;
|
|
3424
|
+
const energyToAdd = Math.min(initialDamage, availableSpace);
|
|
3425
|
+
const newEnergy = currentEnergy + energyToAdd;
|
|
3426
|
+
let healAmount = 0;
|
|
3427
|
+
if (newEnergy >= maxEnergy) {
|
|
3428
|
+
const overflow = initialDamage - energyToAdd;
|
|
3429
|
+
if (overflow > 0) {
|
|
3430
|
+
const maxHP = PassiveHandler.getMemberConfig(targetBoss.name, bossGroup)?.maxHP || 0;
|
|
3431
|
+
if (maxHP > 0) {
|
|
3432
|
+
healAmount = Math.min(overflow, maxHP - targetBoss.HP);
|
|
3433
|
+
}
|
|
3434
|
+
}
|
|
3435
|
+
}
|
|
3436
|
+
await ctx.database.set(
|
|
3437
|
+
"ggcevo_boss",
|
|
3438
|
+
{ name: targetBoss.name },
|
|
3439
|
+
{ energy: newEnergy }
|
|
3440
|
+
);
|
|
3441
|
+
return {
|
|
3442
|
+
messages: [
|
|
3443
|
+
`🌌 【宇宙能量】生效:获得${energyToAdd}点能量`,
|
|
3444
|
+
healAmount > 0 ? `💫 能量溢出,回复${healAmount}点生命值` : ""
|
|
3445
|
+
].filter(Boolean),
|
|
3446
|
+
healAmount
|
|
3447
|
+
};
|
|
3448
|
+
}, "handleCosmicEnergy"),
|
|
3449
|
+
// === 光影之刃 ===
|
|
3450
|
+
handleLightblade: /* @__PURE__ */ __name(async (ctx, targetBoss) => {
|
|
3451
|
+
if (!targetBoss.skills.includes("光影之刃")) return null;
|
|
3452
|
+
const currentStacks = targetBoss.Skillcountpoints || 0;
|
|
3453
|
+
const newStacks = currentStacks + 1;
|
|
3454
|
+
await ctx.database.set(
|
|
3455
|
+
"ggcevo_boss",
|
|
3456
|
+
{ name: targetBoss.name },
|
|
3457
|
+
{ Skillcountpoints: newStacks }
|
|
3458
|
+
);
|
|
3459
|
+
return {
|
|
3460
|
+
messages: [`✨ 【光影之刃】生效:获得1层光影之刃`]
|
|
3461
|
+
};
|
|
3462
|
+
}, "handleLightblade"),
|
|
3463
|
+
// === 远古预兆 ===
|
|
3464
|
+
handleAncientOmen: /* @__PURE__ */ __name(async (ctx, targetBoss) => {
|
|
3465
|
+
if (!targetBoss.skills.includes("远古预兆")) return null;
|
|
3466
|
+
const lightbladeStacks = targetBoss.Skillcountpoints || 0;
|
|
3467
|
+
const immuneChance = 5 + lightbladeStacks;
|
|
3468
|
+
if (Math.random() * 100 < immuneChance) {
|
|
3469
|
+
const maxEnergy = 1e3;
|
|
3470
|
+
const currentEnergy = targetBoss.energy || 0;
|
|
3471
|
+
const newEnergy = Math.min(currentEnergy + 100, maxEnergy);
|
|
3472
|
+
await ctx.database.set(
|
|
3473
|
+
"ggcevo_boss",
|
|
3474
|
+
{ name: targetBoss.name },
|
|
3475
|
+
{ energy: newEnergy }
|
|
3476
|
+
);
|
|
3477
|
+
return {
|
|
3478
|
+
immune: true,
|
|
3479
|
+
messages: [
|
|
3480
|
+
`🔮 【远古预兆】生效:免疫此次伤害`,
|
|
3481
|
+
`⚡ 回复100点能量`
|
|
3482
|
+
]
|
|
3483
|
+
};
|
|
3484
|
+
}
|
|
3485
|
+
return null;
|
|
3486
|
+
}, "handleAncientOmen"),
|
|
3487
|
+
// === 超视距穿梭 ===
|
|
3488
|
+
handleHyperspaceSkip: /* @__PURE__ */ __name(function(targetBoss) {
|
|
3489
|
+
if (!targetBoss.skills.includes("超视距穿梭")) return null;
|
|
3490
|
+
const maxEnergy = 1e3;
|
|
3491
|
+
const currentEnergy = targetBoss.energy || 0;
|
|
3492
|
+
const lightbladeStacks = targetBoss.Skillcountpoints || 0;
|
|
3493
|
+
if (currentEnergy >= maxEnergy * 0.3) {
|
|
3494
|
+
const reduction = lightbladeStacks * 0.05;
|
|
3495
|
+
if (reduction > 0) {
|
|
3496
|
+
return {
|
|
3497
|
+
damageMultiplier: -reduction,
|
|
3498
|
+
messages: [
|
|
3499
|
+
`🚀 【超视距穿梭】生效:能量>30%`,
|
|
3500
|
+
`🪞 当前${lightbladeStacks}层光影之刃,减伤${(reduction * 100).toFixed(0)}%`
|
|
3501
|
+
]
|
|
3502
|
+
};
|
|
3503
|
+
}
|
|
3504
|
+
}
|
|
3505
|
+
return null;
|
|
3506
|
+
}, "handleHyperspaceSkip"),
|
|
3507
|
+
// === 复苏 ===
|
|
3508
|
+
handleRevival: /* @__PURE__ */ __name(async function(ctx, targetBoss, currentHP, maxHP) {
|
|
3509
|
+
if (!targetBoss.skills.includes("复苏") || currentHP > 0) return null;
|
|
3510
|
+
const healAmount = Math.floor(maxHP * 0.5);
|
|
3511
|
+
const updatedHP = Math.min(currentHP + healAmount, maxHP);
|
|
3512
|
+
const maxEnergy = 1e3;
|
|
3513
|
+
let newSkills = targetBoss.skills;
|
|
3514
|
+
if (!newSkills.includes("灵能构造炉")) {
|
|
3515
|
+
newSkills = [...newSkills, "灵能构造炉"];
|
|
3516
|
+
}
|
|
3517
|
+
newSkills = newSkills.filter((skill) => skill !== "复苏");
|
|
3518
|
+
await ctx.database.set(
|
|
3519
|
+
"ggcevo_boss",
|
|
3520
|
+
{ name: targetBoss.name },
|
|
3521
|
+
{
|
|
3522
|
+
HP: updatedHP,
|
|
3523
|
+
energy: maxEnergy,
|
|
3524
|
+
skills: newSkills
|
|
3525
|
+
}
|
|
3526
|
+
);
|
|
3527
|
+
return {
|
|
3528
|
+
updatedHP,
|
|
3529
|
+
messages: [
|
|
3530
|
+
`🔥 【复苏】生效:免于死亡,回复50%最大生命值`,
|
|
3531
|
+
`⚡ 能量回复为100%`,
|
|
3532
|
+
`获得新技能【灵能构造炉】`
|
|
3533
|
+
]
|
|
3534
|
+
};
|
|
3535
|
+
}, "handleRevival"),
|
|
3536
|
+
// === 灵能构造炉 ===
|
|
3537
|
+
handleConstructor: /* @__PURE__ */ __name(async function(ctx, targetBoss) {
|
|
3538
|
+
if (!targetBoss.skills.includes("灵能构造炉")) return null;
|
|
3539
|
+
const allSkills = ["天启超载护盾", "塌缩脉冲", "地毯式轰炸", "轰炸引导"];
|
|
3540
|
+
const hasAllSkills = allSkills.every((skill) => targetBoss.skills.includes(skill));
|
|
3541
|
+
if (hasAllSkills) {
|
|
3542
|
+
const newSkills = targetBoss.skills.filter((skill) => skill !== "灵能构造炉");
|
|
3543
|
+
await ctx.database.set(
|
|
3544
|
+
"ggcevo_boss",
|
|
3545
|
+
{ name: targetBoss.name },
|
|
3546
|
+
{ skills: newSkills }
|
|
3547
|
+
);
|
|
3548
|
+
return {
|
|
3549
|
+
messages: [
|
|
3550
|
+
`⚙️ 【灵能构造炉】生效:所有技能已获取完毕,该技能已移除`
|
|
3551
|
+
]
|
|
3552
|
+
};
|
|
3553
|
+
}
|
|
3554
|
+
const lightbladeStacks = targetBoss.Skillcountpoints || 0;
|
|
3555
|
+
const triggerChance = 5 + lightbladeStacks;
|
|
3556
|
+
if (Math.random() * 100 < triggerChance) {
|
|
3557
|
+
const availableSkills = allSkills.filter(
|
|
3558
|
+
(skill) => !targetBoss.skills.includes(skill)
|
|
3559
|
+
);
|
|
3560
|
+
if (availableSkills.length === 0) return null;
|
|
3561
|
+
const randomSkill = availableSkills[Math.floor(Math.random() * availableSkills.length)];
|
|
3562
|
+
const newSkills = [...targetBoss.skills, randomSkill];
|
|
3563
|
+
await ctx.database.set(
|
|
3564
|
+
"ggcevo_boss",
|
|
3565
|
+
{ name: targetBoss.name },
|
|
3566
|
+
{ skills: newSkills }
|
|
3567
|
+
);
|
|
3568
|
+
return {
|
|
3569
|
+
messages: [
|
|
3570
|
+
`⚙️ 【灵能构造炉】生效:获得新技能【${randomSkill}】`,
|
|
3571
|
+
`剩余可获取技能:${availableSkills.length - 1}/${allSkills.length}`
|
|
3572
|
+
]
|
|
3573
|
+
};
|
|
3574
|
+
}
|
|
3575
|
+
return null;
|
|
3576
|
+
}, "handleConstructor"),
|
|
3577
|
+
// === 天启超载护盾 ===
|
|
3578
|
+
handleTyrsShield: /* @__PURE__ */ __name(async function(ctx, targetBoss, activeBosses, bossGroup) {
|
|
3579
|
+
if (!targetBoss.skills.includes("天启超载护盾")) return null;
|
|
3580
|
+
const lightbladeStacks = targetBoss.Skillcountpoints || 0;
|
|
3581
|
+
if (lightbladeStacks === 0) return null;
|
|
3582
|
+
const triggerChance = 10;
|
|
3583
|
+
if (Math.random() * 100 < triggerChance) {
|
|
3584
|
+
const groupMembers = activeBosses.filter(
|
|
3585
|
+
(b) => b.groupId === targetBoss.groupId && b.HP > 0
|
|
3586
|
+
);
|
|
3587
|
+
const healAmount = lightbladeStacks * 100;
|
|
3588
|
+
const updates = [];
|
|
3589
|
+
const messages = [`🛡️ 【天启超载护盾】生效:消耗${lightbladeStacks}层光影之刃,治疗所有存活异形`];
|
|
3590
|
+
for (const member of groupMembers) {
|
|
3591
|
+
const maxHP = (await this.getMemberConfig(member.name, bossGroup))?.maxHP;
|
|
3592
|
+
if (!maxHP) continue;
|
|
3593
|
+
const heal = Math.min(healAmount, maxHP - member.HP);
|
|
3594
|
+
if (heal > 0) {
|
|
3595
|
+
const newHP = member.HP + heal;
|
|
3596
|
+
updates.push(
|
|
3597
|
+
ctx.database.set(
|
|
3598
|
+
"ggcevo_boss",
|
|
3599
|
+
{ name: member.name },
|
|
3600
|
+
{ HP: newHP }
|
|
3601
|
+
)
|
|
3602
|
+
);
|
|
3603
|
+
messages.push(`${member.name} +${heal}HP`);
|
|
3604
|
+
}
|
|
3605
|
+
}
|
|
3606
|
+
updates.push(
|
|
3607
|
+
ctx.database.set(
|
|
3608
|
+
"ggcevo_boss",
|
|
3609
|
+
{ name: targetBoss.name },
|
|
3610
|
+
{ Skillcountpoints: 0 }
|
|
3611
|
+
)
|
|
3612
|
+
);
|
|
3613
|
+
await Promise.all(updates);
|
|
3614
|
+
return { messages };
|
|
3615
|
+
}
|
|
3616
|
+
return null;
|
|
3617
|
+
}, "handleTyrsShield"),
|
|
3618
|
+
// === 塌缩脉冲 ===
|
|
3619
|
+
handleCollapsePulse: /* @__PURE__ */ __name(async function(ctx, targetBoss) {
|
|
3620
|
+
if (!targetBoss.skills.includes("塌缩脉冲")) return null;
|
|
3621
|
+
const triggerChance = 100;
|
|
3622
|
+
if (Math.random() * 100 < triggerChance) {
|
|
3623
|
+
const currentStacks = targetBoss.Skillcountpoints || 0;
|
|
3624
|
+
const newStacks = currentStacks + 1;
|
|
3625
|
+
await ctx.database.set(
|
|
3626
|
+
"ggcevo_boss",
|
|
3627
|
+
{ name: targetBoss.name },
|
|
3628
|
+
{ Skillcountpoints: newStacks }
|
|
3629
|
+
);
|
|
3630
|
+
return {
|
|
3631
|
+
messages: [`💥 【塌缩脉冲】生效:额外获得1层光影之刃`]
|
|
3632
|
+
};
|
|
3633
|
+
}
|
|
3634
|
+
return null;
|
|
3635
|
+
}, "handleCollapsePulse"),
|
|
3636
|
+
// === 地毯式轰炸 ===
|
|
3637
|
+
handleCarpetBombing: /* @__PURE__ */ __name(async function(ctx, targetBoss) {
|
|
3638
|
+
if (!targetBoss.skills.includes("地毯式轰炸")) return null;
|
|
3639
|
+
const triggerChance = 100;
|
|
3640
|
+
const messages = [];
|
|
3641
|
+
let damageMultiplier = 0;
|
|
3642
|
+
if (Math.random() * 100 < triggerChance) {
|
|
3643
|
+
const hasLoneWolf = targetBoss.skills.includes("孤立无援");
|
|
3644
|
+
if (hasLoneWolf) {
|
|
3645
|
+
const newSkills = targetBoss.skills.filter((skill) => skill !== "孤立无援");
|
|
3646
|
+
await ctx.database.set(
|
|
3647
|
+
"ggcevo_boss",
|
|
3648
|
+
{ name: targetBoss.name },
|
|
3649
|
+
{ skills: newSkills }
|
|
3650
|
+
);
|
|
3651
|
+
messages.push(`💣 【地毯式轰炸】生效:移除孤立无援技能`);
|
|
3652
|
+
} else {
|
|
3653
|
+
messages.push(`💣 【地毯式轰炸】生效:`);
|
|
3654
|
+
}
|
|
3655
|
+
damageMultiplier = -0.5;
|
|
3656
|
+
messages.push(`🔥 我心中的怒火胜过千万个太阳!受到的伤害-50%`);
|
|
3657
|
+
}
|
|
3658
|
+
return {
|
|
3659
|
+
messages,
|
|
3660
|
+
damageMultiplier
|
|
3661
|
+
};
|
|
3662
|
+
}, "handleCarpetBombing"),
|
|
3663
|
+
// === 轰炸引导 ===
|
|
3664
|
+
handleBombardmentGuidance: /* @__PURE__ */ __name(async function(ctx, targetBoss) {
|
|
3665
|
+
if (!targetBoss.skills.includes("轰炸引导")) return null;
|
|
3666
|
+
const lightbladeStacks = targetBoss.Skillcountpoints || 0;
|
|
3667
|
+
if (lightbladeStacks === 0) return null;
|
|
3668
|
+
const triggerChance = 10;
|
|
3669
|
+
if (Math.random() * 100 < triggerChance) {
|
|
3670
|
+
const energyGain = lightbladeStacks * 100;
|
|
3671
|
+
const maxEnergy = 1e3;
|
|
3672
|
+
const currentEnergy = targetBoss.energy || 0;
|
|
3673
|
+
const newEnergy = Math.min(currentEnergy + energyGain, maxEnergy);
|
|
3674
|
+
await ctx.database.set(
|
|
3675
|
+
"ggcevo_boss",
|
|
3676
|
+
{ name: targetBoss.name },
|
|
3677
|
+
{
|
|
3678
|
+
energy: newEnergy,
|
|
3679
|
+
Skillcountpoints: 0
|
|
3680
|
+
}
|
|
3681
|
+
);
|
|
3682
|
+
return {
|
|
3683
|
+
messages: [
|
|
3684
|
+
`🎯 【轰炸引导】生效:消耗${lightbladeStacks}层光影之刃`,
|
|
3685
|
+
`⚡ 回复${energyGain}点能量`
|
|
3686
|
+
]
|
|
3687
|
+
};
|
|
3688
|
+
}
|
|
3689
|
+
return null;
|
|
3690
|
+
}, "handleBombardmentGuidance"),
|
|
3295
3691
|
// 修改后的伤害处理函数
|
|
3296
3692
|
handlePassives: /* @__PURE__ */ __name(async function(ctx, handle, targetBoss, initialDamage, currentHP, maxHP, weaponName, weaponData, bossGroup) {
|
|
3297
3693
|
let messages = [];
|
|
@@ -3375,6 +3771,15 @@ var PassiveHandler = {
|
|
|
3375
3771
|
initialDamage: 0
|
|
3376
3772
|
};
|
|
3377
3773
|
}
|
|
3774
|
+
const ancientOmenResult = await this.handleAncientOmen(ctx, targetBoss);
|
|
3775
|
+
if (ancientOmenResult?.immune) {
|
|
3776
|
+
return {
|
|
3777
|
+
currentHP: targetBoss.HP,
|
|
3778
|
+
messages: ancientOmenResult.messages,
|
|
3779
|
+
skillUpdates: [],
|
|
3780
|
+
initialDamage: 0
|
|
3781
|
+
};
|
|
3782
|
+
}
|
|
3378
3783
|
targetBoss.skills.forEach((skill) => {
|
|
3379
3784
|
const config = passiveConfig[skill];
|
|
3380
3785
|
if (config && config.effect !== void 0 && config.effect !== 0) {
|
|
@@ -3452,6 +3857,21 @@ var PassiveHandler = {
|
|
|
3452
3857
|
nerfMultiplier += rageResult.damageMultiplier;
|
|
3453
3858
|
messages.push(...rageResult.messages);
|
|
3454
3859
|
}
|
|
3860
|
+
const hyperspaceResult = this.handleHyperspaceSkip(targetBoss);
|
|
3861
|
+
if (hyperspaceResult) {
|
|
3862
|
+
nerfMultiplier += hyperspaceResult.damageMultiplier;
|
|
3863
|
+
messages.push(...hyperspaceResult.messages);
|
|
3864
|
+
}
|
|
3865
|
+
const frenzyResult = this.handlePsychicFrenzy(targetBoss, currentHP, maxHP);
|
|
3866
|
+
if (frenzyResult) {
|
|
3867
|
+
nerfMultiplier += frenzyResult.damageMultiplier;
|
|
3868
|
+
messages.push(...frenzyResult.messages);
|
|
3869
|
+
}
|
|
3870
|
+
const bombingResult = await this.handleCarpetBombing(ctx, targetBoss);
|
|
3871
|
+
if (bombingResult) {
|
|
3872
|
+
nerfMultiplier += bombingResult.damageMultiplier;
|
|
3873
|
+
messages.push(...bombingResult.messages);
|
|
3874
|
+
}
|
|
3455
3875
|
if (solarFlareResult.messages.length > 0) {
|
|
3456
3876
|
messages.push(...solarFlareResult.messages);
|
|
3457
3877
|
}
|
|
@@ -3480,13 +3900,16 @@ var PassiveHandler = {
|
|
|
3480
3900
|
finalDamage = Math.floor(finalDamage);
|
|
3481
3901
|
finalDamage = Math.max(finalDamage, 1);
|
|
3482
3902
|
currentHP = targetBoss.HP - finalDamage;
|
|
3903
|
+
if (currentHP < 0) {
|
|
3904
|
+
currentHP = 0;
|
|
3905
|
+
}
|
|
3483
3906
|
if (appliedIgnoreMessages.length > 0) {
|
|
3484
3907
|
messages.push(...appliedIgnoreMessages);
|
|
3485
3908
|
messages.push(
|
|
3486
3909
|
`⚡ 减伤效果:${(nerfMultiplier * 100).toFixed(0)}% → ${(effectiveNerf * 100).toFixed(0)}%`
|
|
3487
3910
|
);
|
|
3488
3911
|
}
|
|
3489
|
-
if (currentHP <= 0 && !targetBoss.skills.includes("求生本能I") && !targetBoss.skills.includes("求生本能II")) {
|
|
3912
|
+
if (currentHP <= 0 && !targetBoss.skills.includes("求生本能I") && !targetBoss.skills.includes("求生本能II") && !targetBoss.skills.includes("复苏")) {
|
|
3490
3913
|
return {
|
|
3491
3914
|
currentHP,
|
|
3492
3915
|
messages,
|
|
@@ -3518,12 +3941,6 @@ var PassiveHandler = {
|
|
|
3518
3941
|
if (moldResult) {
|
|
3519
3942
|
messages.push(...moldResult.messages);
|
|
3520
3943
|
}
|
|
3521
|
-
const survivalResult = this.handleSurvivalInstinct(targetBoss, currentHP, maxHP);
|
|
3522
|
-
if (survivalResult) {
|
|
3523
|
-
currentHP = survivalResult.updatedHP;
|
|
3524
|
-
messages.push(...survivalResult.messages);
|
|
3525
|
-
skillUpdates.push(...survivalResult.skillUpdates);
|
|
3526
|
-
}
|
|
3527
3944
|
const pulseResult = await this.handlePulse(
|
|
3528
3945
|
ctx,
|
|
3529
3946
|
targetBoss,
|
|
@@ -3555,6 +3972,32 @@ var PassiveHandler = {
|
|
|
3555
3972
|
}
|
|
3556
3973
|
}
|
|
3557
3974
|
}
|
|
3975
|
+
const stellarWindResult = await this.handleStellarWind(ctx, targetBoss, initialDamage, activeBosses, bossGroup);
|
|
3976
|
+
if (stellarWindResult) {
|
|
3977
|
+
messages.push(...stellarWindResult.messages);
|
|
3978
|
+
}
|
|
3979
|
+
const shieldResult = await this.handleTyrsShield(ctx, targetBoss, activeBosses, bossGroup);
|
|
3980
|
+
if (shieldResult) {
|
|
3981
|
+
messages.push(...shieldResult.messages);
|
|
3982
|
+
}
|
|
3983
|
+
const cosmicResult = await this.handleCosmicEnergy(ctx, targetBoss, finalDamage, bossGroup);
|
|
3984
|
+
if (cosmicResult) {
|
|
3985
|
+
messages.push(...cosmicResult.messages);
|
|
3986
|
+
if (cosmicResult.healAmount > 0) {
|
|
3987
|
+
currentHP = Math.min(targetBoss.HP + cosmicResult.healAmount, maxHP);
|
|
3988
|
+
}
|
|
3989
|
+
}
|
|
3990
|
+
const survivalResult = this.handleSurvivalInstinct(targetBoss, currentHP, maxHP);
|
|
3991
|
+
if (survivalResult) {
|
|
3992
|
+
currentHP = survivalResult.updatedHP;
|
|
3993
|
+
messages.push(...survivalResult.messages);
|
|
3994
|
+
skillUpdates.push(...survivalResult.skillUpdates);
|
|
3995
|
+
}
|
|
3996
|
+
const revivalResult = await this.handleRevival(ctx, targetBoss, currentHP, maxHP);
|
|
3997
|
+
if (revivalResult) {
|
|
3998
|
+
currentHP = revivalResult.updatedHP;
|
|
3999
|
+
messages.push(...revivalResult.messages);
|
|
4000
|
+
}
|
|
3558
4001
|
const pulseDisruptorResult = await this.handlePulseDisruptor(
|
|
3559
4002
|
ctx,
|
|
3560
4003
|
targetBoss,
|
|
@@ -3571,6 +4014,10 @@ var PassiveHandler = {
|
|
|
3571
4014
|
if (arcRifleResult) {
|
|
3572
4015
|
messages.push(...arcRifleResult.messages);
|
|
3573
4016
|
}
|
|
4017
|
+
const constructorResult = await this.handleConstructor(ctx, targetBoss);
|
|
4018
|
+
if (constructorResult) {
|
|
4019
|
+
messages.push(...constructorResult.messages);
|
|
4020
|
+
}
|
|
3574
4021
|
const coldAdaptResult = await this.handleColdAdaptation(ctx, targetBoss, weaponName);
|
|
3575
4022
|
if (coldAdaptResult) {
|
|
3576
4023
|
messages.push(...coldAdaptResult.messages);
|
|
@@ -3584,6 +4031,14 @@ var PassiveHandler = {
|
|
|
3584
4031
|
if (sentryResult) {
|
|
3585
4032
|
messages.push(...sentryResult.messages);
|
|
3586
4033
|
}
|
|
4034
|
+
const lightbladeResult = await this.handleLightblade(ctx, targetBoss);
|
|
4035
|
+
if (lightbladeResult) {
|
|
4036
|
+
messages.push(...lightbladeResult.messages);
|
|
4037
|
+
}
|
|
4038
|
+
const CollapsepulseResult = await this.handleCollapsePulse(ctx, targetBoss);
|
|
4039
|
+
if (CollapsepulseResult) {
|
|
4040
|
+
messages.push(...CollapsepulseResult.messages);
|
|
4041
|
+
}
|
|
3587
4042
|
const tagChangeResult = await this.handleConductorTagChange(ctx, targetBoss, currentHP, maxHP);
|
|
3588
4043
|
if (tagChangeResult) {
|
|
3589
4044
|
messages.push(...tagChangeResult.messages);
|
|
@@ -3592,6 +4047,10 @@ var PassiveHandler = {
|
|
|
3592
4047
|
if (shockwaveResult) {
|
|
3593
4048
|
messages.push(...shockwaveResult.messages);
|
|
3594
4049
|
}
|
|
4050
|
+
const guidanceResult = await this.handleBombardmentGuidance(ctx, targetBoss);
|
|
4051
|
+
if (guidanceResult) {
|
|
4052
|
+
messages.push(...guidanceResult.messages);
|
|
4053
|
+
}
|
|
3595
4054
|
const gammaRadResult = await this.handleGammaRadiation(ctx, targetBoss, weaponName);
|
|
3596
4055
|
if (gammaRadResult) {
|
|
3597
4056
|
messages.push(...gammaRadResult.messages);
|
|
@@ -4756,16 +5215,14 @@ ${itemDetails.join("\n")}`;
|
|
|
4756
5215
|
}
|
|
4757
5216
|
const messages = [];
|
|
4758
5217
|
let totalBonus = 0;
|
|
4759
|
-
let
|
|
4760
|
-
if (monthlyDays
|
|
4761
|
-
|
|
4762
|
-
|
|
4763
|
-
|
|
4764
|
-
|
|
4765
|
-
|
|
4766
|
-
|
|
4767
|
-
tickets = 7;
|
|
4768
|
-
}
|
|
5218
|
+
let baseTickets = 0;
|
|
5219
|
+
if (monthlyDays < 7) baseTickets = 3;
|
|
5220
|
+
else if (monthlyDays === 7) baseTickets = 4;
|
|
5221
|
+
else if (monthlyDays === 14) baseTickets = 5;
|
|
5222
|
+
else if (monthlyDays === 21) baseTickets = 6;
|
|
5223
|
+
else if (monthlyDays === 28) baseTickets = 7;
|
|
5224
|
+
else baseTickets = 3;
|
|
5225
|
+
let tickets = baseTickets;
|
|
4769
5226
|
const [systemFirmwareTech] = await ctx.database.get("ggcevo_tech", { handle, techId: 5 }).catch(() => [{ level: 0 }]);
|
|
4770
5227
|
const systemFirmwareLevel = Math.min(systemFirmwareTech?.level || 0, 5);
|
|
4771
5228
|
const [careerData] = await ctx.database.get("ggcevo_careers", { handle });
|
|
@@ -4839,9 +5296,9 @@ ${itemDetails.join("\n")}`;
|
|
|
4839
5296
|
isused: false
|
|
4840
5297
|
});
|
|
4841
5298
|
if (meowEffect) {
|
|
4842
|
-
tickets
|
|
5299
|
+
tickets = baseTickets * 2;
|
|
4843
5300
|
totalBonus += 1;
|
|
4844
|
-
messages.push("🐾
|
|
5301
|
+
messages.push("🐾 喵喵财源祈愿:金币+100%,咕咕币+100%");
|
|
4845
5302
|
}
|
|
4846
5303
|
const finalPoints = Math.round(basePoints * (1 + totalBonus));
|
|
4847
5304
|
let redCrystal = 0;
|
|
@@ -4884,7 +5341,19 @@ ${itemDetails.join("\n")}`;
|
|
|
4884
5341
|
⚡ 加成效果:
|
|
4885
5342
|
▸ ${messages.join("\n▸ ")}`;
|
|
4886
5343
|
}
|
|
4887
|
-
|
|
5344
|
+
let coinMessage = `💰 金币 x ${finalPoints}`;
|
|
5345
|
+
if (totalBonus > 0) {
|
|
5346
|
+
coinMessage += ` (基础值:${basePoints}金币)`;
|
|
5347
|
+
}
|
|
5348
|
+
let ticketMessage;
|
|
5349
|
+
if (meowEffect) {
|
|
5350
|
+
ticketMessage = `🪙 咕咕币 x ${tickets} (基础值:${baseTickets}枚)`;
|
|
5351
|
+
} else {
|
|
5352
|
+
ticketMessage = `🪙 咕咕币 x ${tickets}`;
|
|
5353
|
+
}
|
|
5354
|
+
return `签到成功!本月累计签到${monthlyDays}天,获得:
|
|
5355
|
+
${coinMessage}
|
|
5356
|
+
${ticketMessage}${effectMessage}`;
|
|
4888
5357
|
} catch (error) {
|
|
4889
5358
|
console.error("签到命令时发生错误:", error);
|
|
4890
5359
|
return "服务器繁忙,请稍后尝试。";
|
|
@@ -6876,7 +7345,7 @@ ${validTypes.join("、")}`;
|
|
|
6876
7345
|
} else {
|
|
6877
7346
|
result.push("➤ 无");
|
|
6878
7347
|
}
|
|
6879
|
-
const countingSkill = mainBoss.skills?.find((s) => ["冷适应", "岗哨机枪", "吸血唾液", "灼烧粘液"].includes(s));
|
|
7348
|
+
const countingSkill = mainBoss.skills?.find((s) => ["冷适应", "岗哨机枪", "吸血唾液", "灼烧粘液", "光影之刃"].includes(s));
|
|
6880
7349
|
if (countingSkill) {
|
|
6881
7350
|
result.push(`📈 ${countingSkill}:${mainBoss.Skillcountpoints}层`);
|
|
6882
7351
|
}
|
|
@@ -6909,7 +7378,7 @@ ${validTypes.join("、")}`;
|
|
|
6909
7378
|
} else {
|
|
6910
7379
|
minionInfo.push("➤ 无");
|
|
6911
7380
|
}
|
|
6912
|
-
const minionCountingSkill = minion.skills?.find((s) => ["冷适应", "岗哨机枪", "吸血唾液", "灼烧粘液"].includes(s));
|
|
7381
|
+
const minionCountingSkill = minion.skills?.find((s) => ["冷适应", "岗哨机枪", "吸血唾液", "灼烧粘液", "光影之刃"].includes(s));
|
|
6913
7382
|
if (minionCountingSkill) {
|
|
6914
7383
|
minionInfo.push(`📈 ${minionCountingSkill}:${minion.Skillcountpoints}层`);
|
|
6915
7384
|
}
|