koishi-plugin-ggcevo-game 1.4.27 → 1.4.28
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 +1 -1
- package/lib/boss/passive.d.ts +14 -10
- package/lib/boss/passivehandler.d.ts +6 -4
- package/lib/index.js +158 -106
- package/package.json +1 -1
package/lib/boss/boss.d.ts
CHANGED
|
@@ -172,7 +172,7 @@ export declare const bossPool: readonly [{
|
|
|
172
172
|
maxHP: number;
|
|
173
173
|
energy: number;
|
|
174
174
|
tags: ("重甲" | "护盾" | "生物" | "灵能" | "异形")[];
|
|
175
|
-
passive: ("星界之风" | "宇宙能量" | "复苏" | "光影之刃" | "远古预兆" | "超视距穿梭")[];
|
|
175
|
+
passive: ("星界之风" | "宇宙能量" | "复苏" | "光影之刃" | "远古预兆" | "闪电冲锋" | "超视距穿梭")[];
|
|
176
176
|
};
|
|
177
177
|
minions: {
|
|
178
178
|
name: string;
|
package/lib/boss/passive.d.ts
CHANGED
|
@@ -97,7 +97,7 @@ 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;
|
|
@@ -165,19 +165,19 @@ export declare const passiveConfig: {
|
|
|
165
165
|
};
|
|
166
166
|
readonly 星界之风: {
|
|
167
167
|
readonly effect: 0;
|
|
168
|
-
readonly description: "受到伤害时,有5%的概率回复所有存活异形
|
|
168
|
+
readonly description: "受到伤害时,有5%的概率回复所有存活异形200点血量";
|
|
169
169
|
};
|
|
170
170
|
readonly 心灵狂热: {
|
|
171
171
|
readonly effect: 0;
|
|
172
|
-
readonly description: "当血量低于50%时,进入心灵狂热状态,受到的伤害-
|
|
172
|
+
readonly description: "当血量低于50%时,进入心灵狂热状态,受到的伤害-20%,并且触发“星界之风”技能的概率翻倍";
|
|
173
173
|
};
|
|
174
174
|
readonly 宇宙能量: {
|
|
175
175
|
readonly effect: 0;
|
|
176
|
-
readonly description: "
|
|
176
|
+
readonly description: "受到攻击时回复与该攻击伤害等额的“能量”; 若“能量”已满,则回复与该攻击伤害等额的血量";
|
|
177
177
|
};
|
|
178
178
|
readonly 复苏: {
|
|
179
179
|
readonly effect: 0;
|
|
180
|
-
readonly description: "
|
|
180
|
+
readonly description: "受到致命伤害时,免于死亡,快速回复自身100%的最大生命值和100%的“能量”,并且获得“灵能构造炉”技能(触发后移除)";
|
|
181
181
|
};
|
|
182
182
|
readonly 光影之刃: {
|
|
183
183
|
readonly effect: 0;
|
|
@@ -185,19 +185,23 @@ export declare const passiveConfig: {
|
|
|
185
185
|
};
|
|
186
186
|
readonly 远古预兆: {
|
|
187
187
|
readonly effect: 0;
|
|
188
|
-
readonly description: "受到伤害时,有
|
|
188
|
+
readonly description: "受到伤害时,有1%的概率免疫此次伤害并且回复100点“能量”";
|
|
189
|
+
};
|
|
190
|
+
readonly 闪电冲锋: {
|
|
191
|
+
readonly effect: 0;
|
|
192
|
+
readonly description: "每层“光影之刃”使触发“星界之风”,“远古预兆”和“灵能构造炉”技能的概率+1%";
|
|
189
193
|
};
|
|
190
194
|
readonly 超视距穿梭: {
|
|
191
195
|
readonly effect: 0;
|
|
192
|
-
readonly description: "当“能量”≥30%时,每层“光影之刃”使受到的伤害-5%";
|
|
196
|
+
readonly description: "当“能量”≥30%时,每层“光影之刃”使受到的伤害-5%; 当“能量”≥60%时,每层“光影之刃”使受到的伤害-10%; 当“能量”≤10%时,每层“光影之刃”使受到的伤害+5%";
|
|
193
197
|
};
|
|
194
198
|
readonly 灵能构造炉: {
|
|
195
199
|
readonly effect: 0;
|
|
196
|
-
readonly description: "受到攻击后,有5%的概率会随机获得以下4个技能之一(天启超载护盾,塌缩脉冲,地毯式轰炸,轰炸引导)
|
|
200
|
+
readonly description: "受到攻击后,有5%的概率会随机获得以下4个技能之一(天启超载护盾,塌缩脉冲,地毯式轰炸,轰炸引导)";
|
|
197
201
|
};
|
|
198
202
|
readonly 天启超载护盾: {
|
|
199
203
|
readonly effect: 0;
|
|
200
|
-
readonly description: "受到伤害后,有10
|
|
204
|
+
readonly description: "受到伤害后,有10%的概率回复所有存活异形X点血量(X为“光影之刃”层数 x 50)";
|
|
201
205
|
};
|
|
202
206
|
readonly 塌缩脉冲: {
|
|
203
207
|
readonly effect: 0;
|
|
@@ -209,6 +213,6 @@ export declare const passiveConfig: {
|
|
|
209
213
|
};
|
|
210
214
|
readonly 轰炸引导: {
|
|
211
215
|
readonly effect: 0;
|
|
212
|
-
readonly description: "受到伤害后,有10
|
|
216
|
+
readonly description: "受到伤害后,有10%的概率概率回复自身X点“能量”(X为“光影之刃”层数 x 100)";
|
|
213
217
|
};
|
|
214
218
|
};
|
|
@@ -38,7 +38,7 @@ export declare const PassiveHandler: {
|
|
|
38
38
|
messages: string[];
|
|
39
39
|
skillUpdates: {
|
|
40
40
|
name: any;
|
|
41
|
-
remove: ("
|
|
41
|
+
remove: ("弱化形态" | "异形甲壳" | "孤立无援" | "冰霜回复" | "冰霜进化" | "冰霜环绕" | "寒霜地狱" | "应激甲壳I" | "应激甲壳II" | "求生本能I" | "求生本能II" | "冷适应" | "感染空间站" | "病毒云" | "霉菌滋生" | "岗哨机枪" | "结构装甲" | "吸血唾液" | "进食" | "嗜血狂暴" | "吐血" | "电能导体" | "超导体" | "能量虹吸" | "能源虹吸" | "电能立场" | "电能冲击波" | "脉冲" | "能量黑洞" | "火焰异形" | "庞兽狂暴" | "灼烧粘液" | "腐蚀胆汁" | "火焰吐息" | "太阳耀斑" | "燃烧潜地" | "炼狱爆弹" | "猎手异形" | "狂暴" | "伪装" | "致命一击" | "星界之风" | "心灵狂热" | "宇宙能量" | "复苏" | "光影之刃" | "远古预兆" | "闪电冲锋" | "超视距穿梭" | "灵能构造炉" | "天启超载护盾" | "塌缩脉冲" | "地毯式轰炸" | "轰炸引导")[];
|
|
42
42
|
}[];
|
|
43
43
|
};
|
|
44
44
|
handleInfectedStation: (ctx: Context, targetBoss: any) => Promise<{
|
|
@@ -56,7 +56,8 @@ export declare const PassiveHandler: {
|
|
|
56
56
|
messages: string[];
|
|
57
57
|
};
|
|
58
58
|
handleBloodEffects: (targetBoss: any, currentHP: number, maxHP: number) => {
|
|
59
|
-
|
|
59
|
+
buffAmount: number;
|
|
60
|
+
nerfAmount: number;
|
|
60
61
|
messages: string[];
|
|
61
62
|
};
|
|
62
63
|
handleBloodCount: (ctx: Context, targetBoss: any, currentHP: number, maxHP: number) => Promise<{
|
|
@@ -181,7 +182,7 @@ export declare const PassiveHandler: {
|
|
|
181
182
|
handlePulseDisruptor: (ctx: Context, targetBoss: any, weaponName: string) => Promise<{
|
|
182
183
|
messages: string[];
|
|
183
184
|
}>;
|
|
184
|
-
handleStellarWind: (ctx: Context, targetBoss: any, initialDamage: number, activeBosses: any[], bossGroup: BossPoolItem) => Promise<{
|
|
185
|
+
handleStellarWind: (ctx: Context, targetBoss: any, initialDamage: number, maxHP: number, activeBosses: any[], bossGroup: BossPoolItem) => Promise<{
|
|
185
186
|
messages: string[];
|
|
186
187
|
}>;
|
|
187
188
|
handlePsychicFrenzy: (targetBoss: any, currentHP: number, maxHP: number) => {
|
|
@@ -200,7 +201,8 @@ export declare const PassiveHandler: {
|
|
|
200
201
|
messages: string[];
|
|
201
202
|
}>;
|
|
202
203
|
handleHyperspaceSkip: (targetBoss: any) => {
|
|
203
|
-
|
|
204
|
+
reduction: number;
|
|
205
|
+
increase: number;
|
|
204
206
|
messages: string[];
|
|
205
207
|
};
|
|
206
208
|
handleRevival: (ctx: Context, targetBoss: any, currentHP: number, maxHP: number) => Promise<{
|
package/lib/index.js
CHANGED
|
@@ -1237,16 +1237,16 @@ var bossPool = [
|
|
|
1237
1237
|
id: 9,
|
|
1238
1238
|
name: "宇宙界主",
|
|
1239
1239
|
type: "主宰",
|
|
1240
|
-
maxHP:
|
|
1240
|
+
maxHP: 2e4,
|
|
1241
1241
|
energy: 1e3,
|
|
1242
1242
|
tags: asBossTags(["重甲", "护盾", "生物", "灵能", "异形"]),
|
|
1243
|
-
passive: asPassives(["宇宙能量", "复苏", "光影之刃", "远古预兆", "星界之风", "超视距穿梭"])
|
|
1243
|
+
passive: asPassives(["宇宙能量", "复苏", "光影之刃", "闪电冲锋", "远古预兆", "星界之风", "超视距穿梭"])
|
|
1244
1244
|
},
|
|
1245
1245
|
minions: [
|
|
1246
1246
|
{
|
|
1247
1247
|
name: "宇宙战将",
|
|
1248
1248
|
type: "子代",
|
|
1249
|
-
maxHP:
|
|
1249
|
+
maxHP: 5e3,
|
|
1250
1250
|
energy: 0,
|
|
1251
1251
|
tags: asBossTags(["重甲", "护盾", "生物", "灵能", "异形"]),
|
|
1252
1252
|
passive: asPassives(["弱化形态", "心灵狂热", "星界之风"])
|
|
@@ -1355,7 +1355,7 @@ var passiveConfig = {
|
|
|
1355
1355
|
},
|
|
1356
1356
|
"能源虹吸": {
|
|
1357
1357
|
effect: 0,
|
|
1358
|
-
description: "
|
|
1358
|
+
description: "当“能量”≥80%的时候,受到的伤害-50%; 当“能量”≥50%的时候,受到的伤害-30%"
|
|
1359
1359
|
},
|
|
1360
1360
|
"电能立场": {
|
|
1361
1361
|
effect: 0,
|
|
@@ -1423,19 +1423,19 @@ var passiveConfig = {
|
|
|
1423
1423
|
},
|
|
1424
1424
|
"星界之风": {
|
|
1425
1425
|
effect: 0,
|
|
1426
|
-
description: "受到伤害时,有5%的概率回复所有存活异形
|
|
1426
|
+
description: "受到伤害时,有5%的概率回复所有存活异形200点血量"
|
|
1427
1427
|
},
|
|
1428
1428
|
"心灵狂热": {
|
|
1429
1429
|
effect: 0,
|
|
1430
|
-
description: "当血量低于50%时,进入心灵狂热状态,受到的伤害-
|
|
1430
|
+
description: "当血量低于50%时,进入心灵狂热状态,受到的伤害-20%,并且触发“星界之风”技能的概率翻倍"
|
|
1431
1431
|
},
|
|
1432
1432
|
"宇宙能量": {
|
|
1433
1433
|
effect: 0,
|
|
1434
|
-
description: "
|
|
1434
|
+
description: "受到攻击时回复与该攻击伤害等额的“能量”; 若“能量”已满,则回复与该攻击伤害等额的血量"
|
|
1435
1435
|
},
|
|
1436
1436
|
"复苏": {
|
|
1437
1437
|
effect: 0,
|
|
1438
|
-
description: "
|
|
1438
|
+
description: "受到致命伤害时,免于死亡,快速回复自身100%的最大生命值和100%的“能量”,并且获得“灵能构造炉”技能(触发后移除)"
|
|
1439
1439
|
},
|
|
1440
1440
|
"光影之刃": {
|
|
1441
1441
|
effect: 0,
|
|
@@ -1443,19 +1443,23 @@ var passiveConfig = {
|
|
|
1443
1443
|
},
|
|
1444
1444
|
"远古预兆": {
|
|
1445
1445
|
effect: 0,
|
|
1446
|
-
description: "受到伤害时,有
|
|
1446
|
+
description: "受到伤害时,有1%的概率免疫此次伤害并且回复100点“能量”"
|
|
1447
|
+
},
|
|
1448
|
+
"闪电冲锋": {
|
|
1449
|
+
effect: 0,
|
|
1450
|
+
description: "每层“光影之刃”使触发“星界之风”,“远古预兆”和“灵能构造炉”技能的概率+1%"
|
|
1447
1451
|
},
|
|
1448
1452
|
"超视距穿梭": {
|
|
1449
1453
|
effect: 0,
|
|
1450
|
-
description: "当“能量”≥30%时,每层“光影之刃”使受到的伤害-5%"
|
|
1454
|
+
description: "当“能量”≥30%时,每层“光影之刃”使受到的伤害-5%; 当“能量”≥60%时,每层“光影之刃”使受到的伤害-10%; 当“能量”≤10%时,每层“光影之刃”使受到的伤害+5%"
|
|
1451
1455
|
},
|
|
1452
1456
|
"灵能构造炉": {
|
|
1453
1457
|
effect: 0,
|
|
1454
|
-
description: "受到攻击后,有5%的概率会随机获得以下4个技能之一(天启超载护盾,塌缩脉冲,地毯式轰炸,轰炸引导)
|
|
1458
|
+
description: "受到攻击后,有5%的概率会随机获得以下4个技能之一(天启超载护盾,塌缩脉冲,地毯式轰炸,轰炸引导)"
|
|
1455
1459
|
},
|
|
1456
1460
|
"天启超载护盾": {
|
|
1457
1461
|
effect: 0,
|
|
1458
|
-
description: "受到伤害后,有10
|
|
1462
|
+
description: "受到伤害后,有10%的概率回复所有存活异形X点血量(X为“光影之刃”层数 x 50)"
|
|
1459
1463
|
},
|
|
1460
1464
|
"塌缩脉冲": {
|
|
1461
1465
|
effect: 0,
|
|
@@ -1467,7 +1471,7 @@ var passiveConfig = {
|
|
|
1467
1471
|
},
|
|
1468
1472
|
"轰炸引导": {
|
|
1469
1473
|
effect: 0,
|
|
1470
|
-
description: "受到伤害后,有10
|
|
1474
|
+
description: "受到伤害后,有10%的概率概率回复自身X点“能量”(X为“光影之刃”层数 x 100)"
|
|
1471
1475
|
}
|
|
1472
1476
|
};
|
|
1473
1477
|
|
|
@@ -2623,28 +2627,36 @@ var PassiveHandler = {
|
|
|
2623
2627
|
messages: [`🛡️ 【结构装甲】生效:${msg}`]
|
|
2624
2628
|
};
|
|
2625
2629
|
}, "handleStructuralArmor"),
|
|
2626
|
-
//
|
|
2630
|
+
// 修改 handleBloodEffects 函数
|
|
2627
2631
|
handleBloodEffects: /* @__PURE__ */ __name(function(targetBoss, currentHP, maxHP) {
|
|
2628
2632
|
if (!targetBoss.skills.includes("吸血唾液")) return null;
|
|
2629
2633
|
const bloodStacks = targetBoss.Skillcountpoints || 0;
|
|
2630
|
-
let
|
|
2634
|
+
let buffAmount = 0;
|
|
2635
|
+
let nerfAmount = 0;
|
|
2631
2636
|
const messages = [];
|
|
2632
|
-
if (
|
|
2637
|
+
if (bloodStacks > 0) {
|
|
2633
2638
|
const reduction = bloodStacks * 0.05;
|
|
2634
|
-
|
|
2635
|
-
|
|
2636
|
-
messages.push(`🩸 【吸血唾液】生效:受到的伤害-${bloodStacks * 5}%`);
|
|
2637
|
-
}
|
|
2639
|
+
nerfAmount += reduction;
|
|
2640
|
+
messages.push(`🩸 【吸血唾液】生效:受到的伤害-${(reduction * 100).toFixed(0)}%`);
|
|
2638
2641
|
}
|
|
2639
2642
|
if (targetBoss.skills.includes("嗜血狂暴") && currentHP / maxHP < 0.5) {
|
|
2640
|
-
|
|
2643
|
+
nerfAmount += 0.2;
|
|
2641
2644
|
messages.push(`🔥 【嗜血狂暴】生效:进入狂暴状态,受到的伤害-20%`);
|
|
2642
2645
|
}
|
|
2643
2646
|
if (targetBoss.skills.includes("吐血") && bloodStacks < 1) {
|
|
2644
|
-
|
|
2645
|
-
messages.push(`💔
|
|
2647
|
+
buffAmount += 0.2;
|
|
2648
|
+
messages.push(`💔 【吐血】生效:无"吸血"层数,受到的伤害+20%`);
|
|
2646
2649
|
}
|
|
2647
|
-
|
|
2650
|
+
if (buffAmount > 0 || nerfAmount > 0) {
|
|
2651
|
+
return {
|
|
2652
|
+
buffAmount,
|
|
2653
|
+
// 正值增伤系数
|
|
2654
|
+
nerfAmount,
|
|
2655
|
+
// 正值减伤系数
|
|
2656
|
+
messages
|
|
2657
|
+
};
|
|
2658
|
+
}
|
|
2659
|
+
return null;
|
|
2648
2660
|
}, "handleBloodEffects"),
|
|
2649
2661
|
handleBloodCount: /* @__PURE__ */ __name(async function(ctx, targetBoss, currentHP, maxHP) {
|
|
2650
2662
|
if (!targetBoss.skills.includes("吸血唾液")) {
|
|
@@ -3377,19 +3389,30 @@ var PassiveHandler = {
|
|
|
3377
3389
|
};
|
|
3378
3390
|
}, "handlePulseDisruptor"),
|
|
3379
3391
|
// === 星界之风 ===
|
|
3380
|
-
handleStellarWind: /* @__PURE__ */ __name(async (ctx, targetBoss, initialDamage, activeBosses, bossGroup) => {
|
|
3392
|
+
handleStellarWind: /* @__PURE__ */ __name(async (ctx, targetBoss, initialDamage, maxHP, activeBosses, bossGroup) => {
|
|
3381
3393
|
if (!targetBoss.skills.includes("星界之风") || initialDamage === 0) return null;
|
|
3382
|
-
|
|
3394
|
+
let baseChance = 5;
|
|
3395
|
+
const hasPsychicFrenzy = targetBoss.skills.includes("心灵狂热");
|
|
3396
|
+
const isInFrenzy = targetBoss.HP / maxHP < 0.5;
|
|
3397
|
+
if (hasPsychicFrenzy && isInFrenzy) {
|
|
3398
|
+
baseChance *= 2;
|
|
3399
|
+
}
|
|
3400
|
+
let lightbladeStacks = 0;
|
|
3401
|
+
if (targetBoss.skills.includes("闪电冲锋")) {
|
|
3402
|
+
lightbladeStacks = targetBoss?.Skillcountpoints || 0;
|
|
3403
|
+
}
|
|
3404
|
+
const triggerChance = baseChance + lightbladeStacks;
|
|
3405
|
+
if (Math.random() * 100 < triggerChance) {
|
|
3383
3406
|
const groupMembers = activeBosses.filter(
|
|
3384
3407
|
(b) => b.groupId === targetBoss.groupId && b.HP > 0
|
|
3385
3408
|
);
|
|
3386
3409
|
const updates = [];
|
|
3387
|
-
const messages = [
|
|
3410
|
+
const messages = [`🌠 【星界之风】生效:治疗所有存活异形200点血量`];
|
|
3388
3411
|
for (const member of groupMembers) {
|
|
3389
|
-
const
|
|
3390
|
-
if (!
|
|
3391
|
-
const healAmount =
|
|
3392
|
-
const newHP = Math.min(member.HP + healAmount,
|
|
3412
|
+
const maxHP2 = PassiveHandler.getMemberConfig(member.name, bossGroup)?.maxHP;
|
|
3413
|
+
if (!maxHP2) continue;
|
|
3414
|
+
const healAmount = 200;
|
|
3415
|
+
const newHP = Math.min(member.HP + healAmount, maxHP2);
|
|
3393
3416
|
updates.push(
|
|
3394
3417
|
ctx.database.set(
|
|
3395
3418
|
"ggcevo_boss",
|
|
@@ -3399,6 +3422,8 @@ var PassiveHandler = {
|
|
|
3399
3422
|
);
|
|
3400
3423
|
messages.push(`${member.name} +${healAmount}HP`);
|
|
3401
3424
|
}
|
|
3425
|
+
if (hasPsychicFrenzy && isInFrenzy) {
|
|
3426
|
+
}
|
|
3402
3427
|
await Promise.all(updates);
|
|
3403
3428
|
return { messages };
|
|
3404
3429
|
}
|
|
@@ -3409,8 +3434,11 @@ var PassiveHandler = {
|
|
|
3409
3434
|
if (!targetBoss.skills.includes("心灵狂热")) return null;
|
|
3410
3435
|
if (currentHP / maxHP < 0.5) {
|
|
3411
3436
|
return {
|
|
3412
|
-
damageMultiplier: -0.
|
|
3413
|
-
|
|
3437
|
+
damageMultiplier: -0.2,
|
|
3438
|
+
// 受到的伤害-20%
|
|
3439
|
+
messages: [
|
|
3440
|
+
`🌀 【心灵狂热】生效:进入心灵狂热状态,受到的伤害-20%`
|
|
3441
|
+
]
|
|
3414
3442
|
};
|
|
3415
3443
|
}
|
|
3416
3444
|
return null;
|
|
@@ -3424,25 +3452,30 @@ var PassiveHandler = {
|
|
|
3424
3452
|
const energyToAdd = Math.min(initialDamage, availableSpace);
|
|
3425
3453
|
const newEnergy = currentEnergy + energyToAdd;
|
|
3426
3454
|
let healAmount = 0;
|
|
3455
|
+
let messages = [];
|
|
3456
|
+
if (energyToAdd > 0) {
|
|
3457
|
+
messages.push(`🌌 获得${energyToAdd}点能量`);
|
|
3458
|
+
}
|
|
3427
3459
|
if (newEnergy >= maxEnergy) {
|
|
3428
3460
|
const overflow = initialDamage - energyToAdd;
|
|
3429
3461
|
if (overflow > 0) {
|
|
3430
3462
|
const maxHP = PassiveHandler.getMemberConfig(targetBoss.name, bossGroup)?.maxHP || 0;
|
|
3431
3463
|
if (maxHP > 0) {
|
|
3432
3464
|
healAmount = Math.min(overflow, maxHP - targetBoss.HP);
|
|
3465
|
+
messages.push(`💫 能量溢出回复${healAmount}点生命值`);
|
|
3433
3466
|
}
|
|
3434
3467
|
}
|
|
3435
3468
|
}
|
|
3469
|
+
if (energyToAdd === 0 && healAmount === 0) {
|
|
3470
|
+
return null;
|
|
3471
|
+
}
|
|
3436
3472
|
await ctx.database.set(
|
|
3437
3473
|
"ggcevo_boss",
|
|
3438
3474
|
{ name: targetBoss.name },
|
|
3439
3475
|
{ energy: newEnergy }
|
|
3440
3476
|
);
|
|
3441
3477
|
return {
|
|
3442
|
-
messages: [
|
|
3443
|
-
`🌌 【宇宙能量】生效:获得${energyToAdd}点能量`,
|
|
3444
|
-
healAmount > 0 ? `💫 能量溢出,回复${healAmount}点生命值` : ""
|
|
3445
|
-
].filter(Boolean),
|
|
3478
|
+
messages: [`🌌 【宇宙能量】生效:${messages.join(",")}`],
|
|
3446
3479
|
healAmount
|
|
3447
3480
|
};
|
|
3448
3481
|
}, "handleCosmicEnergy"),
|
|
@@ -3457,15 +3490,18 @@ var PassiveHandler = {
|
|
|
3457
3490
|
{ Skillcountpoints: newStacks }
|
|
3458
3491
|
);
|
|
3459
3492
|
return {
|
|
3460
|
-
messages: [`✨ 【光影之刃】生效:获得1
|
|
3493
|
+
messages: [`✨ 【光影之刃】生效:获得1层“光影之刃”`]
|
|
3461
3494
|
};
|
|
3462
3495
|
}, "handleLightblade"),
|
|
3463
3496
|
// === 远古预兆 ===
|
|
3464
3497
|
handleAncientOmen: /* @__PURE__ */ __name(async (ctx, targetBoss) => {
|
|
3465
3498
|
if (!targetBoss.skills.includes("远古预兆")) return null;
|
|
3466
|
-
|
|
3467
|
-
|
|
3468
|
-
|
|
3499
|
+
let lightbladeStacks = 0;
|
|
3500
|
+
if (targetBoss.skills.includes("闪电冲锋")) {
|
|
3501
|
+
lightbladeStacks = targetBoss?.Skillcountpoints || 0;
|
|
3502
|
+
}
|
|
3503
|
+
const totalChance = 1 + lightbladeStacks;
|
|
3504
|
+
if (Math.random() * 100 < totalChance) {
|
|
3469
3505
|
const maxEnergy = 1e3;
|
|
3470
3506
|
const currentEnergy = targetBoss.energy || 0;
|
|
3471
3507
|
const newEnergy = Math.min(currentEnergy + 100, maxEnergy);
|
|
@@ -3477,8 +3513,7 @@ var PassiveHandler = {
|
|
|
3477
3513
|
return {
|
|
3478
3514
|
immune: true,
|
|
3479
3515
|
messages: [
|
|
3480
|
-
`🔮
|
|
3481
|
-
`⚡ 回复100点能量`
|
|
3516
|
+
`🔮 【远古预兆】生效:免疫此次伤害,并且回复100点能量`
|
|
3482
3517
|
]
|
|
3483
3518
|
};
|
|
3484
3519
|
}
|
|
@@ -3490,25 +3525,41 @@ var PassiveHandler = {
|
|
|
3490
3525
|
const maxEnergy = 1e3;
|
|
3491
3526
|
const currentEnergy = targetBoss.energy || 0;
|
|
3492
3527
|
const lightbladeStacks = targetBoss.Skillcountpoints || 0;
|
|
3528
|
+
let reduction = 0;
|
|
3529
|
+
let increase = 0;
|
|
3530
|
+
const effectParts = [];
|
|
3493
3531
|
if (currentEnergy >= maxEnergy * 0.3) {
|
|
3494
|
-
const
|
|
3495
|
-
|
|
3496
|
-
|
|
3497
|
-
|
|
3498
|
-
|
|
3499
|
-
|
|
3500
|
-
|
|
3501
|
-
]
|
|
3502
|
-
};
|
|
3532
|
+
const baseReduction = lightbladeStacks * 0.05;
|
|
3533
|
+
reduction += baseReduction;
|
|
3534
|
+
effectParts.push(`能量≥30%:减伤${(baseReduction * 100).toFixed(0)}%`);
|
|
3535
|
+
if (currentEnergy >= maxEnergy * 0.6) {
|
|
3536
|
+
const bonusReduction = lightbladeStacks * 0.05;
|
|
3537
|
+
reduction += bonusReduction;
|
|
3538
|
+
effectParts.push(`能量≥60%:额外减伤${(bonusReduction * 100).toFixed(0)}%`);
|
|
3503
3539
|
}
|
|
3504
3540
|
}
|
|
3541
|
+
if (currentEnergy <= maxEnergy * 0.1) {
|
|
3542
|
+
increase = lightbladeStacks * 0.05;
|
|
3543
|
+
effectParts.push(`能量≤10%:增伤${(increase * 100).toFixed(0)}%`);
|
|
3544
|
+
}
|
|
3545
|
+
if (reduction > 0 || increase > 0) {
|
|
3546
|
+
const effectDescription = effectParts.join(",");
|
|
3547
|
+
return {
|
|
3548
|
+
reduction,
|
|
3549
|
+
// 返沪减伤系数(正值)
|
|
3550
|
+
increase,
|
|
3551
|
+
// 返沪增伤系数(正值)
|
|
3552
|
+
messages: [
|
|
3553
|
+
`🚀 【超视距穿梭】生效:${effectDescription}(当前${lightbladeStacks}层光影之刃)`
|
|
3554
|
+
]
|
|
3555
|
+
};
|
|
3556
|
+
}
|
|
3505
3557
|
return null;
|
|
3506
3558
|
}, "handleHyperspaceSkip"),
|
|
3507
3559
|
// === 复苏 ===
|
|
3508
3560
|
handleRevival: /* @__PURE__ */ __name(async function(ctx, targetBoss, currentHP, maxHP) {
|
|
3509
3561
|
if (!targetBoss.skills.includes("复苏") || currentHP > 0) return null;
|
|
3510
|
-
const
|
|
3511
|
-
const updatedHP = Math.min(currentHP + healAmount, maxHP);
|
|
3562
|
+
const updatedHP = maxHP;
|
|
3512
3563
|
const maxEnergy = 1e3;
|
|
3513
3564
|
let newSkills = targetBoss.skills;
|
|
3514
3565
|
if (!newSkills.includes("灵能构造炉")) {
|
|
@@ -3527,9 +3578,7 @@ var PassiveHandler = {
|
|
|
3527
3578
|
return {
|
|
3528
3579
|
updatedHP,
|
|
3529
3580
|
messages: [
|
|
3530
|
-
`🔥
|
|
3531
|
-
`⚡ 能量回复为100%`,
|
|
3532
|
-
`获得新技能【灵能构造炉】`
|
|
3581
|
+
`🔥 【复苏】生效:免于死亡,回复自身100%的最大生命值和100%的“能量”,并且获得新技能【灵能构造炉】`
|
|
3533
3582
|
]
|
|
3534
3583
|
};
|
|
3535
3584
|
}, "handleRevival"),
|
|
@@ -3547,13 +3596,16 @@ var PassiveHandler = {
|
|
|
3547
3596
|
);
|
|
3548
3597
|
return {
|
|
3549
3598
|
messages: [
|
|
3550
|
-
`⚙️
|
|
3599
|
+
`⚙️ 【灵能构造炉】生效:所有技能已获取完毕,此技能已移除`
|
|
3551
3600
|
]
|
|
3552
3601
|
};
|
|
3553
3602
|
}
|
|
3554
|
-
|
|
3555
|
-
|
|
3556
|
-
|
|
3603
|
+
let lightbladeStacks = 0;
|
|
3604
|
+
if (targetBoss.skills.includes("闪电冲锋")) {
|
|
3605
|
+
lightbladeStacks = targetBoss.Skillcountpoints || 0;
|
|
3606
|
+
}
|
|
3607
|
+
const totalChance = 5 + lightbladeStacks;
|
|
3608
|
+
if (Math.random() * 100 < totalChance) {
|
|
3557
3609
|
const availableSkills = allSkills.filter(
|
|
3558
3610
|
(skill) => !targetBoss.skills.includes(skill)
|
|
3559
3611
|
);
|
|
@@ -3567,14 +3619,13 @@ var PassiveHandler = {
|
|
|
3567
3619
|
);
|
|
3568
3620
|
return {
|
|
3569
3621
|
messages: [
|
|
3570
|
-
`⚙️ 【灵能构造炉】生效:获得新技能【${randomSkill}
|
|
3571
|
-
`剩余可获取技能:${availableSkills.length - 1}/${allSkills.length}`
|
|
3622
|
+
`⚙️ 【灵能构造炉】生效:获得新技能【${randomSkill}】`
|
|
3572
3623
|
]
|
|
3573
3624
|
};
|
|
3574
3625
|
}
|
|
3575
3626
|
return null;
|
|
3576
3627
|
}, "handleConstructor"),
|
|
3577
|
-
//
|
|
3628
|
+
// 修改后 - 移除了层数清零操作
|
|
3578
3629
|
handleTyrsShield: /* @__PURE__ */ __name(async function(ctx, targetBoss, activeBosses, bossGroup) {
|
|
3579
3630
|
if (!targetBoss.skills.includes("天启超载护盾")) return null;
|
|
3580
3631
|
const lightbladeStacks = targetBoss.Skillcountpoints || 0;
|
|
@@ -3584,11 +3635,11 @@ var PassiveHandler = {
|
|
|
3584
3635
|
const groupMembers = activeBosses.filter(
|
|
3585
3636
|
(b) => b.groupId === targetBoss.groupId && b.HP > 0
|
|
3586
3637
|
);
|
|
3587
|
-
const healAmount = lightbladeStacks *
|
|
3638
|
+
const healAmount = lightbladeStacks * 50;
|
|
3588
3639
|
const updates = [];
|
|
3589
|
-
const messages = [`🛡️
|
|
3640
|
+
const messages = [`🛡️ 【天启超载护盾】生效:治疗所有存活异形`];
|
|
3590
3641
|
for (const member of groupMembers) {
|
|
3591
|
-
const maxHP =
|
|
3642
|
+
const maxHP = this.getMemberConfig(member.name, bossGroup)?.maxHP;
|
|
3592
3643
|
if (!maxHP) continue;
|
|
3593
3644
|
const heal = Math.min(healAmount, maxHP - member.HP);
|
|
3594
3645
|
if (heal > 0) {
|
|
@@ -3603,15 +3654,11 @@ var PassiveHandler = {
|
|
|
3603
3654
|
messages.push(`${member.name} +${heal}HP`);
|
|
3604
3655
|
}
|
|
3605
3656
|
}
|
|
3606
|
-
updates.push(
|
|
3607
|
-
ctx.database.set(
|
|
3608
|
-
"ggcevo_boss",
|
|
3609
|
-
{ name: targetBoss.name },
|
|
3610
|
-
{ Skillcountpoints: 0 }
|
|
3611
|
-
)
|
|
3612
|
-
);
|
|
3613
3657
|
await Promise.all(updates);
|
|
3614
|
-
return {
|
|
3658
|
+
return {
|
|
3659
|
+
messages
|
|
3660
|
+
// 不再清除层数
|
|
3661
|
+
};
|
|
3615
3662
|
}
|
|
3616
3663
|
return null;
|
|
3617
3664
|
}, "handleTyrsShield"),
|
|
@@ -3648,19 +3695,18 @@ var PassiveHandler = {
|
|
|
3648
3695
|
{ name: targetBoss.name },
|
|
3649
3696
|
{ skills: newSkills }
|
|
3650
3697
|
);
|
|
3651
|
-
messages.push(
|
|
3698
|
+
messages.push(`🔥 【地毯式轰炸】生效:移除“孤立无援”`);
|
|
3652
3699
|
} else {
|
|
3653
|
-
messages.push(`💣 【地毯式轰炸】生效:`);
|
|
3654
3700
|
}
|
|
3655
3701
|
damageMultiplier = -0.5;
|
|
3656
|
-
messages.push(`🔥
|
|
3702
|
+
messages.push(`🔥 【地毯式轰炸】生效:我心中的怒火胜过千万个太阳!受到的伤害-50%`);
|
|
3657
3703
|
}
|
|
3658
3704
|
return {
|
|
3659
3705
|
messages,
|
|
3660
3706
|
damageMultiplier
|
|
3661
3707
|
};
|
|
3662
3708
|
}, "handleCarpetBombing"),
|
|
3663
|
-
//
|
|
3709
|
+
// 修改后 - 移除了层数清零操作
|
|
3664
3710
|
handleBombardmentGuidance: /* @__PURE__ */ __name(async function(ctx, targetBoss) {
|
|
3665
3711
|
if (!targetBoss.skills.includes("轰炸引导")) return null;
|
|
3666
3712
|
const lightbladeStacks = targetBoss.Skillcountpoints || 0;
|
|
@@ -3674,15 +3720,11 @@ var PassiveHandler = {
|
|
|
3674
3720
|
await ctx.database.set(
|
|
3675
3721
|
"ggcevo_boss",
|
|
3676
3722
|
{ name: targetBoss.name },
|
|
3677
|
-
{
|
|
3678
|
-
energy: newEnergy,
|
|
3679
|
-
Skillcountpoints: 0
|
|
3680
|
-
}
|
|
3723
|
+
{ energy: newEnergy }
|
|
3681
3724
|
);
|
|
3682
3725
|
return {
|
|
3683
3726
|
messages: [
|
|
3684
|
-
`🎯
|
|
3685
|
-
`⚡ 回复${energyGain}点能量`
|
|
3727
|
+
`🎯 【轰炸引导】生效:回复${energyGain}点能量`
|
|
3686
3728
|
]
|
|
3687
3729
|
};
|
|
3688
3730
|
}
|
|
@@ -3815,7 +3857,12 @@ var PassiveHandler = {
|
|
|
3815
3857
|
}
|
|
3816
3858
|
const bloodEffect = this.handleBloodEffects(targetBoss, currentHP, maxHP);
|
|
3817
3859
|
if (bloodEffect) {
|
|
3818
|
-
|
|
3860
|
+
if (bloodEffect.buffAmount > 0) {
|
|
3861
|
+
buffMultiplier += bloodEffect.buffAmount;
|
|
3862
|
+
}
|
|
3863
|
+
if (bloodEffect.nerfAmount > 0) {
|
|
3864
|
+
nerfMultiplier -= bloodEffect.nerfAmount;
|
|
3865
|
+
}
|
|
3819
3866
|
messages.push(...bloodEffect.messages);
|
|
3820
3867
|
}
|
|
3821
3868
|
const siphonResult = this.handleEnergySiphon(targetBoss, currentHP, maxHP);
|
|
@@ -3859,7 +3906,12 @@ var PassiveHandler = {
|
|
|
3859
3906
|
}
|
|
3860
3907
|
const hyperspaceResult = this.handleHyperspaceSkip(targetBoss);
|
|
3861
3908
|
if (hyperspaceResult) {
|
|
3862
|
-
|
|
3909
|
+
if (hyperspaceResult.reduction > 0) {
|
|
3910
|
+
nerfMultiplier -= hyperspaceResult.reduction;
|
|
3911
|
+
}
|
|
3912
|
+
if (hyperspaceResult.increase > 0) {
|
|
3913
|
+
buffMultiplier += hyperspaceResult.increase;
|
|
3914
|
+
}
|
|
3863
3915
|
messages.push(...hyperspaceResult.messages);
|
|
3864
3916
|
}
|
|
3865
3917
|
const frenzyResult = this.handlePsychicFrenzy(targetBoss, currentHP, maxHP);
|
|
@@ -3972,7 +4024,7 @@ var PassiveHandler = {
|
|
|
3972
4024
|
}
|
|
3973
4025
|
}
|
|
3974
4026
|
}
|
|
3975
|
-
const stellarWindResult = await this.handleStellarWind(ctx, targetBoss, initialDamage, activeBosses, bossGroup);
|
|
4027
|
+
const stellarWindResult = await this.handleStellarWind(ctx, targetBoss, initialDamage, maxHP, activeBosses, bossGroup);
|
|
3976
4028
|
if (stellarWindResult) {
|
|
3977
4029
|
messages.push(...stellarWindResult.messages);
|
|
3978
4030
|
}
|
|
@@ -3980,13 +4032,6 @@ var PassiveHandler = {
|
|
|
3980
4032
|
if (shieldResult) {
|
|
3981
4033
|
messages.push(...shieldResult.messages);
|
|
3982
4034
|
}
|
|
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
4035
|
const survivalResult = this.handleSurvivalInstinct(targetBoss, currentHP, maxHP);
|
|
3991
4036
|
if (survivalResult) {
|
|
3992
4037
|
currentHP = survivalResult.updatedHP;
|
|
@@ -4014,10 +4059,6 @@ var PassiveHandler = {
|
|
|
4014
4059
|
if (arcRifleResult) {
|
|
4015
4060
|
messages.push(...arcRifleResult.messages);
|
|
4016
4061
|
}
|
|
4017
|
-
const constructorResult = await this.handleConstructor(ctx, targetBoss);
|
|
4018
|
-
if (constructorResult) {
|
|
4019
|
-
messages.push(...constructorResult.messages);
|
|
4020
|
-
}
|
|
4021
4062
|
const coldAdaptResult = await this.handleColdAdaptation(ctx, targetBoss, weaponName);
|
|
4022
4063
|
if (coldAdaptResult) {
|
|
4023
4064
|
messages.push(...coldAdaptResult.messages);
|
|
@@ -4039,14 +4080,21 @@ var PassiveHandler = {
|
|
|
4039
4080
|
if (CollapsepulseResult) {
|
|
4040
4081
|
messages.push(...CollapsepulseResult.messages);
|
|
4041
4082
|
}
|
|
4042
|
-
const
|
|
4043
|
-
if (
|
|
4044
|
-
messages.push(...
|
|
4083
|
+
const bileStackResult = await this.handleBileStacking(ctx, targetBoss, skipBileStacking);
|
|
4084
|
+
if (bileStackResult) {
|
|
4085
|
+
messages.push(...bileStackResult.messages);
|
|
4045
4086
|
}
|
|
4046
4087
|
const shockwaveResult = await this.handleEnergyShockwave(ctx, targetBoss);
|
|
4047
4088
|
if (shockwaveResult) {
|
|
4048
4089
|
messages.push(...shockwaveResult.messages);
|
|
4049
4090
|
}
|
|
4091
|
+
const cosmicResult = await this.handleCosmicEnergy(ctx, targetBoss, finalDamage, bossGroup);
|
|
4092
|
+
if (cosmicResult) {
|
|
4093
|
+
messages.push(...cosmicResult.messages);
|
|
4094
|
+
if (cosmicResult.healAmount > 0) {
|
|
4095
|
+
currentHP = Math.min(targetBoss.HP + cosmicResult.healAmount, maxHP);
|
|
4096
|
+
}
|
|
4097
|
+
}
|
|
4050
4098
|
const guidanceResult = await this.handleBombardmentGuidance(ctx, targetBoss);
|
|
4051
4099
|
if (guidanceResult) {
|
|
4052
4100
|
messages.push(...guidanceResult.messages);
|
|
@@ -4056,15 +4104,19 @@ var PassiveHandler = {
|
|
|
4056
4104
|
messages.push(...gammaRadResult.messages);
|
|
4057
4105
|
radiationApplied = gammaRadResult.radiationApplied;
|
|
4058
4106
|
}
|
|
4059
|
-
const bileStackResult = await this.handleBileStacking(ctx, targetBoss, skipBileStacking);
|
|
4060
|
-
if (bileStackResult) {
|
|
4061
|
-
messages.push(...bileStackResult.messages);
|
|
4062
|
-
}
|
|
4063
4107
|
const coldEffectResult = await this.handleColdEffect(ctx, targetBoss, weaponName);
|
|
4064
4108
|
if (coldEffectResult) {
|
|
4065
4109
|
messages.push(...coldEffectResult.messages);
|
|
4066
4110
|
freezing = coldEffectResult.freezing;
|
|
4067
4111
|
}
|
|
4112
|
+
const tagChangeResult = await this.handleConductorTagChange(ctx, targetBoss, currentHP, maxHP);
|
|
4113
|
+
if (tagChangeResult) {
|
|
4114
|
+
messages.push(...tagChangeResult.messages);
|
|
4115
|
+
}
|
|
4116
|
+
const constructorResult = await this.handleConstructor(ctx, targetBoss);
|
|
4117
|
+
if (constructorResult) {
|
|
4118
|
+
messages.push(...constructorResult.messages);
|
|
4119
|
+
}
|
|
4068
4120
|
return {
|
|
4069
4121
|
currentHP,
|
|
4070
4122
|
messages,
|