koishi-plugin-ggcevo-game 1.4.27 → 1.4.29
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 +3 -3
- package/lib/boss/passive.d.ts +17 -13
- package/lib/boss/passivehandler.d.ts +9 -5
- package/lib/index.js +227 -193
- package/package.json +1 -1
package/lib/boss/boss.d.ts
CHANGED
|
@@ -39,7 +39,7 @@ export declare const bossPool: readonly [{
|
|
|
39
39
|
maxHP: number;
|
|
40
40
|
energy: number;
|
|
41
41
|
tags: ("重甲" | "生物" | "惧热" | "异形" | "重型")[];
|
|
42
|
-
passive: ("
|
|
42
|
+
passive: ("冰霜环绕" | "冰霜进化")[];
|
|
43
43
|
};
|
|
44
44
|
minions: {
|
|
45
45
|
name: string;
|
|
@@ -47,7 +47,7 @@ export declare const bossPool: readonly [{
|
|
|
47
47
|
maxHP: number;
|
|
48
48
|
energy: number;
|
|
49
49
|
tags: ("生物" | "惧热" | "异形")[];
|
|
50
|
-
passive: ("
|
|
50
|
+
passive: ("冰霜回复" | "弱化形态" | "冰霜进化")[];
|
|
51
51
|
}[];
|
|
52
52
|
}, {
|
|
53
53
|
main: {
|
|
@@ -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;
|
|
@@ -129,11 +129,11 @@ export declare const passiveConfig: {
|
|
|
129
129
|
};
|
|
130
130
|
readonly 腐蚀胆汁: {
|
|
131
131
|
readonly effect: 0;
|
|
132
|
-
readonly description: "当“胆汁”达到10
|
|
132
|
+
readonly description: "当“胆汁”达到10层后,下一次受到攻击将回复所有存活异形1000点血量并清空层数";
|
|
133
133
|
};
|
|
134
134
|
readonly 火焰吐息: {
|
|
135
135
|
readonly effect: 0;
|
|
136
|
-
readonly description: "当“胆汁”达到20
|
|
136
|
+
readonly description: "当“胆汁”达到20层后,下一次攻击将回复所有存活异形50%的最大生命值并清空层数";
|
|
137
137
|
};
|
|
138
138
|
readonly 太阳耀斑: {
|
|
139
139
|
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: "受到致命伤害时,免于死亡,快速回复自身50%的最大生命值和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: "受到攻击后,有
|
|
200
|
+
readonly description: "受到攻击后,有1%的概率会随机获得以下4个技能之一(天启超载护盾,塌缩脉冲,地毯式轰炸,轰炸引导)";
|
|
197
201
|
};
|
|
198
202
|
readonly 天启超载护盾: {
|
|
199
203
|
readonly effect: 0;
|
|
200
|
-
readonly description: "受到伤害后,有
|
|
204
|
+
readonly description: "受到伤害后,有5%的概率回复所有存活异形X点血量(X为“光影之刃”层数 x 10)";
|
|
201
205
|
};
|
|
202
206
|
readonly 塌缩脉冲: {
|
|
203
207
|
readonly effect: 0;
|
|
@@ -205,10 +209,10 @@ export declare const passiveConfig: {
|
|
|
205
209
|
};
|
|
206
210
|
readonly 地毯式轰炸: {
|
|
207
211
|
readonly effect: 0;
|
|
208
|
-
readonly description: "我心中的怒火胜过千万个太阳!移除自身的“孤立无援”,并使受到的伤害-
|
|
212
|
+
readonly description: "我心中的怒火胜过千万个太阳!移除自身的“孤立无援”,并使受到的伤害-100%";
|
|
209
213
|
};
|
|
210
214
|
readonly 轰炸引导: {
|
|
211
215
|
readonly effect: 0;
|
|
212
|
-
readonly description: "受到伤害后,有10
|
|
216
|
+
readonly description: "受到伤害后,有10%的概率概率回复自身X点“能量”(X为“光影之刃”层数 x 50)";
|
|
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: ("冰霜环绕" | "寒霜地狱" | "冰霜回复" | "弱化形态" | "异形甲壳" | "孤立无援" | "冰霜进化" | "应激甲壳I" | "应激甲壳II" | "求生本能I" | "求生本能II" | "冷适应" | "感染空间站" | "病毒云" | "霉菌滋生" | "岗哨机枪" | "结构装甲" | "吸血唾液" | "进食" | "嗜血狂暴" | "吐血" | "电能导体" | "超导体" | "能量虹吸" | "能源虹吸" | "电能立场" | "电能冲击波" | "脉冲" | "能量黑洞" | "火焰异形" | "庞兽狂暴" | "灼烧粘液" | "腐蚀胆汁" | "火焰吐息" | "太阳耀斑" | "燃烧潜地" | "炼狱爆弹" | "猎手异形" | "狂暴" | "伪装" | "致命一击" | "星界之风" | "心灵狂热" | "宇宙能量" | "复苏" | "光影之刃" | "远古预兆" | "超视距穿梭" | "灵能构造炉" | "天启超载护盾" | "塌缩脉冲" | "地毯式轰炸" | "轰炸引导")[];
|
|
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,8 +182,9 @@ 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, currentHP: number, maxHP: number, activeBosses: any[], bossGroup: BossPoolItem) => Promise<{
|
|
185
186
|
messages: string[];
|
|
187
|
+
updatedHP: number;
|
|
186
188
|
}>;
|
|
187
189
|
handlePsychicFrenzy: (targetBoss: any, currentHP: number, maxHP: number) => {
|
|
188
190
|
damageMultiplier: number;
|
|
@@ -200,7 +202,8 @@ export declare const PassiveHandler: {
|
|
|
200
202
|
messages: string[];
|
|
201
203
|
}>;
|
|
202
204
|
handleHyperspaceSkip: (targetBoss: any) => {
|
|
203
|
-
|
|
205
|
+
reduction: number;
|
|
206
|
+
increase: number;
|
|
204
207
|
messages: string[];
|
|
205
208
|
};
|
|
206
209
|
handleRevival: (ctx: Context, targetBoss: any, currentHP: number, maxHP: number) => Promise<{
|
|
@@ -210,8 +213,9 @@ export declare const PassiveHandler: {
|
|
|
210
213
|
handleConstructor: (ctx: Context, targetBoss: any) => Promise<{
|
|
211
214
|
messages: string[];
|
|
212
215
|
}>;
|
|
213
|
-
handleTyrsShield: (ctx: Context, targetBoss: any, activeBosses: any[], bossGroup: BossPoolItem) => Promise<{
|
|
216
|
+
handleTyrsShield: (ctx: Context, targetBoss: any, currentHP: number, activeBosses: any[], bossGroup: BossPoolItem) => Promise<{
|
|
214
217
|
messages: string[];
|
|
218
|
+
updatedHP: number;
|
|
215
219
|
}>;
|
|
216
220
|
handleCollapsePulse: (ctx: Context, targetBoss: any) => Promise<{
|
|
217
221
|
messages: string[];
|
package/lib/index.js
CHANGED
|
@@ -237,7 +237,7 @@ var weaponConfig = {
|
|
|
237
237
|
category: "能量武器",
|
|
238
238
|
damage: 32,
|
|
239
239
|
description: "一种原型能量武器,能够发射强大的脉冲",
|
|
240
|
-
specialeffect: "
|
|
240
|
+
specialeffect: "攻击使目标的技能层数减少2层",
|
|
241
241
|
price: 1500,
|
|
242
242
|
redCrystalCost: 15,
|
|
243
243
|
isantiair: true,
|
|
@@ -250,7 +250,7 @@ var weaponConfig = {
|
|
|
250
250
|
damage: 88,
|
|
251
251
|
description: "一件传奇武器",
|
|
252
252
|
specialeffect: "",
|
|
253
|
-
price:
|
|
253
|
+
price: 6400,
|
|
254
254
|
redCrystalCost: 150,
|
|
255
255
|
isantiair: true,
|
|
256
256
|
tagEffects: {
|
|
@@ -266,7 +266,7 @@ var weaponConfig = {
|
|
|
266
266
|
damage: 70,
|
|
267
267
|
description: "一件传奇武器",
|
|
268
268
|
specialeffect: "攻击暴击率+80%",
|
|
269
|
-
price:
|
|
269
|
+
price: 6400,
|
|
270
270
|
redCrystalCost: 150,
|
|
271
271
|
isantiair: true,
|
|
272
272
|
tagEffects: {
|
|
@@ -280,7 +280,7 @@ var weaponConfig = {
|
|
|
280
280
|
damage: 80,
|
|
281
281
|
description: "这是传说中的武器",
|
|
282
282
|
specialeffect: "",
|
|
283
|
-
price:
|
|
283
|
+
price: 6400,
|
|
284
284
|
redCrystalCost: 150,
|
|
285
285
|
isantiair: false,
|
|
286
286
|
tagEffects: {
|
|
@@ -295,7 +295,7 @@ var weaponConfig = {
|
|
|
295
295
|
damage: 120,
|
|
296
296
|
description: "一件传奇武器",
|
|
297
297
|
specialeffect: "",
|
|
298
|
-
price:
|
|
298
|
+
price: 6400,
|
|
299
299
|
redCrystalCost: 150,
|
|
300
300
|
isantiair: true,
|
|
301
301
|
tagEffects: {
|
|
@@ -309,7 +309,7 @@ var weaponConfig = {
|
|
|
309
309
|
damage: 100,
|
|
310
310
|
description: "优雅而独特的武器",
|
|
311
311
|
specialeffect: "无视目标100%的减伤效果",
|
|
312
|
-
price:
|
|
312
|
+
price: 6400,
|
|
313
313
|
redCrystalCost: 150,
|
|
314
314
|
isantiair: false,
|
|
315
315
|
tagEffects: {}
|
|
@@ -321,7 +321,7 @@ var weaponConfig = {
|
|
|
321
321
|
damage: 100,
|
|
322
322
|
description: "一件传奇武器",
|
|
323
323
|
specialeffect: "攻击消耗目标500点能量",
|
|
324
|
-
price:
|
|
324
|
+
price: 6400,
|
|
325
325
|
redCrystalCost: 150,
|
|
326
326
|
isantiair: true,
|
|
327
327
|
tagEffects: {
|
|
@@ -335,7 +335,7 @@ var weaponConfig = {
|
|
|
335
335
|
damage: 60,
|
|
336
336
|
description: "一件传奇武器",
|
|
337
337
|
specialeffect: "攻击无视目标80%的减伤效果",
|
|
338
|
-
price:
|
|
338
|
+
price: 6400,
|
|
339
339
|
redCrystalCost: 150,
|
|
340
340
|
isantiair: true,
|
|
341
341
|
tagEffects: {
|
|
@@ -349,7 +349,7 @@ var weaponConfig = {
|
|
|
349
349
|
damage: 90,
|
|
350
350
|
description: "一件传奇武器",
|
|
351
351
|
specialeffect: "",
|
|
352
|
-
price:
|
|
352
|
+
price: 6400,
|
|
353
353
|
redCrystalCost: 150,
|
|
354
354
|
isantiair: true,
|
|
355
355
|
tagEffects: {
|
|
@@ -553,10 +553,10 @@ var spaceStationCrewConfig = [
|
|
|
553
553
|
},
|
|
554
554
|
{
|
|
555
555
|
professionName: "武器中士",
|
|
556
|
-
effect: "攻击伤害+15%;
|
|
556
|
+
effect: "攻击伤害+15%; 购买武器享有50%的折扣",
|
|
557
557
|
requirements: "当期伤害榜累计造成100及以上伤害",
|
|
558
558
|
Jobtransfer: true,
|
|
559
|
-
costcoins:
|
|
559
|
+
costcoins: 3e3
|
|
560
560
|
},
|
|
561
561
|
{
|
|
562
562
|
professionName: "医疗专家",
|
|
@@ -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,
|
|
@@ -1387,11 +1387,11 @@ var passiveConfig = {
|
|
|
1387
1387
|
},
|
|
1388
1388
|
"腐蚀胆汁": {
|
|
1389
1389
|
effect: 0,
|
|
1390
|
-
description: "当“胆汁”达到10
|
|
1390
|
+
description: "当“胆汁”达到10层后,下一次受到攻击将回复所有存活异形1000点血量并清空层数"
|
|
1391
1391
|
},
|
|
1392
1392
|
"火焰吐息": {
|
|
1393
1393
|
effect: 0,
|
|
1394
|
-
description: "当“胆汁”达到20
|
|
1394
|
+
description: "当“胆汁”达到20层后,下一次攻击将回复所有存活异形50%的最大生命值并清空层数"
|
|
1395
1395
|
},
|
|
1396
1396
|
"太阳耀斑": {
|
|
1397
1397
|
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: "受到致命伤害时,免于死亡,快速回复自身50%的最大生命值和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: "受到攻击后,有
|
|
1458
|
+
description: "受到攻击后,有1%的概率会随机获得以下4个技能之一(天启超载护盾,塌缩脉冲,地毯式轰炸,轰炸引导)"
|
|
1455
1459
|
},
|
|
1456
1460
|
"天启超载护盾": {
|
|
1457
1461
|
effect: 0,
|
|
1458
|
-
description: "受到伤害后,有
|
|
1462
|
+
description: "受到伤害后,有5%的概率回复所有存活异形X点血量(X为“光影之刃”层数 x 10)"
|
|
1459
1463
|
},
|
|
1460
1464
|
"塌缩脉冲": {
|
|
1461
1465
|
effect: 0,
|
|
@@ -1463,11 +1467,11 @@ var passiveConfig = {
|
|
|
1463
1467
|
},
|
|
1464
1468
|
"地毯式轰炸": {
|
|
1465
1469
|
effect: 0,
|
|
1466
|
-
description: "我心中的怒火胜过千万个太阳!移除自身的“孤立无援”,并使受到的伤害-
|
|
1470
|
+
description: "我心中的怒火胜过千万个太阳!移除自身的“孤立无援”,并使受到的伤害-100%"
|
|
1467
1471
|
},
|
|
1468
1472
|
"轰炸引导": {
|
|
1469
1473
|
effect: 0,
|
|
1470
|
-
description: "受到伤害后,有10
|
|
1474
|
+
description: "受到伤害后,有10%的概率概率回复自身X点“能量”(X为“光影之刃”层数 x 50)"
|
|
1471
1475
|
}
|
|
1472
1476
|
};
|
|
1473
1477
|
|
|
@@ -2015,13 +2019,7 @@ async function applyItemEffect(ctx, session, handle, itemConfig2, target) {
|
|
|
2015
2019
|
);
|
|
2016
2020
|
return {
|
|
2017
2021
|
success: true,
|
|
2018
|
-
message: `成功使用${itemName},使${target}
|
|
2019
|
-
};
|
|
2020
|
-
}
|
|
2021
|
-
if (itemConfig2.id === 3 || itemConfig2.id === 5) {
|
|
2022
|
-
return {
|
|
2023
|
-
success: false,
|
|
2024
|
-
message: `此物品无法使用。`
|
|
2022
|
+
message: `成功使用${itemName},使${target}的技能层数减少10层`
|
|
2025
2023
|
};
|
|
2026
2024
|
}
|
|
2027
2025
|
if (itemConfig2.id === 4) {
|
|
@@ -2045,7 +2043,7 @@ async function applyItemEffect(ctx, session, handle, itemConfig2, target) {
|
|
|
2045
2043
|
);
|
|
2046
2044
|
return {
|
|
2047
2045
|
success: true,
|
|
2048
|
-
message: `成功使用${itemName},消耗${target}500
|
|
2046
|
+
message: `成功使用${itemName},消耗${target}500点能量`
|
|
2049
2047
|
};
|
|
2050
2048
|
}
|
|
2051
2049
|
return {
|
|
@@ -2623,28 +2621,36 @@ var PassiveHandler = {
|
|
|
2623
2621
|
messages: [`🛡️ 【结构装甲】生效:${msg}`]
|
|
2624
2622
|
};
|
|
2625
2623
|
}, "handleStructuralArmor"),
|
|
2626
|
-
//
|
|
2624
|
+
// 修改 handleBloodEffects 函数
|
|
2627
2625
|
handleBloodEffects: /* @__PURE__ */ __name(function(targetBoss, currentHP, maxHP) {
|
|
2628
2626
|
if (!targetBoss.skills.includes("吸血唾液")) return null;
|
|
2629
2627
|
const bloodStacks = targetBoss.Skillcountpoints || 0;
|
|
2630
|
-
let
|
|
2628
|
+
let buffAmount = 0;
|
|
2629
|
+
let nerfAmount = 0;
|
|
2631
2630
|
const messages = [];
|
|
2632
|
-
if (
|
|
2631
|
+
if (bloodStacks > 0) {
|
|
2633
2632
|
const reduction = bloodStacks * 0.05;
|
|
2634
|
-
|
|
2635
|
-
|
|
2636
|
-
messages.push(`🩸 【吸血唾液】生效:受到的伤害-${bloodStacks * 5}%`);
|
|
2637
|
-
}
|
|
2633
|
+
nerfAmount += reduction;
|
|
2634
|
+
messages.push(`🩸 【吸血唾液】生效:受到的伤害-${(reduction * 100).toFixed(0)}%`);
|
|
2638
2635
|
}
|
|
2639
2636
|
if (targetBoss.skills.includes("嗜血狂暴") && currentHP / maxHP < 0.5) {
|
|
2640
|
-
|
|
2637
|
+
nerfAmount += 0.2;
|
|
2641
2638
|
messages.push(`🔥 【嗜血狂暴】生效:进入狂暴状态,受到的伤害-20%`);
|
|
2642
2639
|
}
|
|
2643
2640
|
if (targetBoss.skills.includes("吐血") && bloodStacks < 1) {
|
|
2644
|
-
|
|
2645
|
-
messages.push(`💔
|
|
2641
|
+
buffAmount += 0.2;
|
|
2642
|
+
messages.push(`💔 【吐血】生效:无"吸血"层数,受到的伤害+20%`);
|
|
2646
2643
|
}
|
|
2647
|
-
|
|
2644
|
+
if (buffAmount > 0 || nerfAmount > 0) {
|
|
2645
|
+
return {
|
|
2646
|
+
buffAmount,
|
|
2647
|
+
// 正值增伤系数
|
|
2648
|
+
nerfAmount,
|
|
2649
|
+
// 正值减伤系数
|
|
2650
|
+
messages
|
|
2651
|
+
};
|
|
2652
|
+
}
|
|
2653
|
+
return null;
|
|
2648
2654
|
}, "handleBloodEffects"),
|
|
2649
2655
|
handleBloodCount: /* @__PURE__ */ __name(async function(ctx, targetBoss, currentHP, maxHP) {
|
|
2650
2656
|
if (!targetBoss.skills.includes("吸血唾液")) {
|
|
@@ -3060,7 +3066,7 @@ var PassiveHandler = {
|
|
|
3060
3066
|
{ Skillcountpoints: 0 }
|
|
3061
3067
|
);
|
|
3062
3068
|
const messages = [
|
|
3063
|
-
`🟢 【腐蚀胆汁】生效:消耗10层"胆汁"
|
|
3069
|
+
`🟢 【腐蚀胆汁】生效:消耗10层"胆汁",治疗所有存活异形`
|
|
3064
3070
|
];
|
|
3065
3071
|
const updates = [];
|
|
3066
3072
|
let updatedHP = currentHP;
|
|
@@ -3101,7 +3107,7 @@ var PassiveHandler = {
|
|
|
3101
3107
|
{ Skillcountpoints: 0 }
|
|
3102
3108
|
);
|
|
3103
3109
|
const messages = [
|
|
3104
|
-
`🐲 【火焰吐息】生效:消耗20层"胆汁"
|
|
3110
|
+
`🐲 【火焰吐息】生效:消耗20层"胆汁",治疗所有存活异形50%的最大生命值`
|
|
3105
3111
|
];
|
|
3106
3112
|
const updates = [];
|
|
3107
3113
|
let updatedHP = currentHP;
|
|
@@ -3377,19 +3383,30 @@ var PassiveHandler = {
|
|
|
3377
3383
|
};
|
|
3378
3384
|
}, "handlePulseDisruptor"),
|
|
3379
3385
|
// === 星界之风 ===
|
|
3380
|
-
handleStellarWind: /* @__PURE__ */ __name(async (ctx, targetBoss, initialDamage, activeBosses, bossGroup) => {
|
|
3386
|
+
handleStellarWind: /* @__PURE__ */ __name(async (ctx, targetBoss, initialDamage, currentHP, maxHP, activeBosses, bossGroup) => {
|
|
3381
3387
|
if (!targetBoss.skills.includes("星界之风") || initialDamage === 0) return null;
|
|
3382
|
-
|
|
3388
|
+
let baseChance = 5;
|
|
3389
|
+
const hasPsychicFrenzy = targetBoss.skills.includes("心灵狂热");
|
|
3390
|
+
const isInFrenzy = targetBoss.HP / maxHP < 0.5;
|
|
3391
|
+
if (hasPsychicFrenzy && isInFrenzy) {
|
|
3392
|
+
baseChance *= 2;
|
|
3393
|
+
}
|
|
3394
|
+
let lightbladeStacks = 0;
|
|
3395
|
+
if (targetBoss.skills.includes("闪电冲锋")) {
|
|
3396
|
+
lightbladeStacks = targetBoss?.Skillcountpoints || 0;
|
|
3397
|
+
}
|
|
3398
|
+
const triggerChance = baseChance + lightbladeStacks;
|
|
3399
|
+
if (Math.random() * 100 < triggerChance) {
|
|
3383
3400
|
const groupMembers = activeBosses.filter(
|
|
3384
3401
|
(b) => b.groupId === targetBoss.groupId && b.HP > 0
|
|
3385
3402
|
);
|
|
3386
3403
|
const updates = [];
|
|
3387
|
-
const messages = [
|
|
3404
|
+
const messages = [`🌠 【星界之风】生效:治疗所有存活异形200点血量`];
|
|
3388
3405
|
for (const member of groupMembers) {
|
|
3389
|
-
const
|
|
3390
|
-
if (!
|
|
3391
|
-
const healAmount =
|
|
3392
|
-
const newHP = Math.min(member.HP + healAmount,
|
|
3406
|
+
const maxHP2 = PassiveHandler.getMemberConfig(member.name, bossGroup)?.maxHP;
|
|
3407
|
+
if (!maxHP2) continue;
|
|
3408
|
+
const healAmount = 200;
|
|
3409
|
+
const newHP = Math.min(member.HP + healAmount, maxHP2);
|
|
3393
3410
|
updates.push(
|
|
3394
3411
|
ctx.database.set(
|
|
3395
3412
|
"ggcevo_boss",
|
|
@@ -3399,8 +3416,10 @@ var PassiveHandler = {
|
|
|
3399
3416
|
);
|
|
3400
3417
|
messages.push(`${member.name} +${healAmount}HP`);
|
|
3401
3418
|
}
|
|
3419
|
+
if (hasPsychicFrenzy && isInFrenzy) {
|
|
3420
|
+
}
|
|
3402
3421
|
await Promise.all(updates);
|
|
3403
|
-
return { messages };
|
|
3422
|
+
return { messages, updatedHP: currentHP + 200 };
|
|
3404
3423
|
}
|
|
3405
3424
|
return null;
|
|
3406
3425
|
}, "handleStellarWind"),
|
|
@@ -3409,8 +3428,11 @@ var PassiveHandler = {
|
|
|
3409
3428
|
if (!targetBoss.skills.includes("心灵狂热")) return null;
|
|
3410
3429
|
if (currentHP / maxHP < 0.5) {
|
|
3411
3430
|
return {
|
|
3412
|
-
damageMultiplier: -0.
|
|
3413
|
-
|
|
3431
|
+
damageMultiplier: -0.2,
|
|
3432
|
+
// 受到的伤害-20%
|
|
3433
|
+
messages: [
|
|
3434
|
+
`🌀 【心灵狂热】生效:进入心灵狂热状态,受到的伤害-20%`
|
|
3435
|
+
]
|
|
3414
3436
|
};
|
|
3415
3437
|
}
|
|
3416
3438
|
return null;
|
|
@@ -3424,25 +3446,30 @@ var PassiveHandler = {
|
|
|
3424
3446
|
const energyToAdd = Math.min(initialDamage, availableSpace);
|
|
3425
3447
|
const newEnergy = currentEnergy + energyToAdd;
|
|
3426
3448
|
let healAmount = 0;
|
|
3449
|
+
let messages = [];
|
|
3450
|
+
if (energyToAdd > 0) {
|
|
3451
|
+
messages.push(`获得${energyToAdd}点能量`);
|
|
3452
|
+
}
|
|
3427
3453
|
if (newEnergy >= maxEnergy) {
|
|
3428
3454
|
const overflow = initialDamage - energyToAdd;
|
|
3429
3455
|
if (overflow > 0) {
|
|
3430
3456
|
const maxHP = PassiveHandler.getMemberConfig(targetBoss.name, bossGroup)?.maxHP || 0;
|
|
3431
3457
|
if (maxHP > 0) {
|
|
3432
3458
|
healAmount = Math.min(overflow, maxHP - targetBoss.HP);
|
|
3459
|
+
messages.push(`能量溢出回复${healAmount}点生命值`);
|
|
3433
3460
|
}
|
|
3434
3461
|
}
|
|
3435
3462
|
}
|
|
3463
|
+
if (energyToAdd === 0 && healAmount === 0) {
|
|
3464
|
+
return null;
|
|
3465
|
+
}
|
|
3436
3466
|
await ctx.database.set(
|
|
3437
3467
|
"ggcevo_boss",
|
|
3438
3468
|
{ name: targetBoss.name },
|
|
3439
3469
|
{ energy: newEnergy }
|
|
3440
3470
|
);
|
|
3441
3471
|
return {
|
|
3442
|
-
messages: [
|
|
3443
|
-
`🌌 【宇宙能量】生效:获得${energyToAdd}点能量`,
|
|
3444
|
-
healAmount > 0 ? `💫 能量溢出,回复${healAmount}点生命值` : ""
|
|
3445
|
-
].filter(Boolean),
|
|
3472
|
+
messages: [`🌌 【宇宙能量】生效:${messages.join(",")}`],
|
|
3446
3473
|
healAmount
|
|
3447
3474
|
};
|
|
3448
3475
|
}, "handleCosmicEnergy"),
|
|
@@ -3457,15 +3484,18 @@ var PassiveHandler = {
|
|
|
3457
3484
|
{ Skillcountpoints: newStacks }
|
|
3458
3485
|
);
|
|
3459
3486
|
return {
|
|
3460
|
-
messages: [`✨ 【光影之刃】生效:获得1
|
|
3487
|
+
messages: [`✨ 【光影之刃】生效:获得1层“光影之刃”`]
|
|
3461
3488
|
};
|
|
3462
3489
|
}, "handleLightblade"),
|
|
3463
3490
|
// === 远古预兆 ===
|
|
3464
3491
|
handleAncientOmen: /* @__PURE__ */ __name(async (ctx, targetBoss) => {
|
|
3465
3492
|
if (!targetBoss.skills.includes("远古预兆")) return null;
|
|
3466
|
-
|
|
3467
|
-
|
|
3468
|
-
|
|
3493
|
+
let lightbladeStacks = 0;
|
|
3494
|
+
if (targetBoss.skills.includes("闪电冲锋")) {
|
|
3495
|
+
lightbladeStacks = targetBoss?.Skillcountpoints || 0;
|
|
3496
|
+
}
|
|
3497
|
+
const totalChance = 1 + lightbladeStacks;
|
|
3498
|
+
if (Math.random() * 100 < totalChance) {
|
|
3469
3499
|
const maxEnergy = 1e3;
|
|
3470
3500
|
const currentEnergy = targetBoss.energy || 0;
|
|
3471
3501
|
const newEnergy = Math.min(currentEnergy + 100, maxEnergy);
|
|
@@ -3477,8 +3507,7 @@ var PassiveHandler = {
|
|
|
3477
3507
|
return {
|
|
3478
3508
|
immune: true,
|
|
3479
3509
|
messages: [
|
|
3480
|
-
`🔮
|
|
3481
|
-
`⚡ 回复100点能量`
|
|
3510
|
+
`🔮 【远古预兆】生效:免疫此次伤害,并且回复100点能量`
|
|
3482
3511
|
]
|
|
3483
3512
|
};
|
|
3484
3513
|
}
|
|
@@ -3490,25 +3519,34 @@ var PassiveHandler = {
|
|
|
3490
3519
|
const maxEnergy = 1e3;
|
|
3491
3520
|
const currentEnergy = targetBoss.energy || 0;
|
|
3492
3521
|
const lightbladeStacks = targetBoss.Skillcountpoints || 0;
|
|
3493
|
-
|
|
3494
|
-
|
|
3495
|
-
|
|
3496
|
-
|
|
3497
|
-
|
|
3498
|
-
|
|
3499
|
-
|
|
3500
|
-
|
|
3501
|
-
|
|
3502
|
-
|
|
3503
|
-
|
|
3522
|
+
let reduction = 0;
|
|
3523
|
+
let increase = 0;
|
|
3524
|
+
const messages = [];
|
|
3525
|
+
if (currentEnergy <= maxEnergy * 0.1) {
|
|
3526
|
+
increase = lightbladeStacks * 0.05;
|
|
3527
|
+
messages.push(`能量≤10%:受到的伤害+${(increase * 100).toFixed(0)}%`);
|
|
3528
|
+
} else if (currentEnergy >= maxEnergy * 0.6) {
|
|
3529
|
+
reduction = lightbladeStacks * 0.1;
|
|
3530
|
+
messages.push(`能量≥60%:受到的伤害-${(reduction * 100).toFixed(0)}%`);
|
|
3531
|
+
} else if (currentEnergy >= maxEnergy * 0.3) {
|
|
3532
|
+
reduction = lightbladeStacks * 0.05;
|
|
3533
|
+
messages.push(`能量≥30%:受到的伤害-${(reduction * 100).toFixed(0)}%`);
|
|
3534
|
+
}
|
|
3535
|
+
if (reduction > 0 || increase > 0) {
|
|
3536
|
+
return {
|
|
3537
|
+
reduction,
|
|
3538
|
+
increase,
|
|
3539
|
+
messages: [
|
|
3540
|
+
`🚀 【超视距穿梭】生效:${messages.join(" | ")} (当前${lightbladeStacks}层光影之刃)`
|
|
3541
|
+
]
|
|
3542
|
+
};
|
|
3504
3543
|
}
|
|
3505
3544
|
return null;
|
|
3506
3545
|
}, "handleHyperspaceSkip"),
|
|
3507
3546
|
// === 复苏 ===
|
|
3508
3547
|
handleRevival: /* @__PURE__ */ __name(async function(ctx, targetBoss, currentHP, maxHP) {
|
|
3509
3548
|
if (!targetBoss.skills.includes("复苏") || currentHP > 0) return null;
|
|
3510
|
-
const
|
|
3511
|
-
const updatedHP = Math.min(currentHP + healAmount, maxHP);
|
|
3549
|
+
const updatedHP = maxHP * 0.5;
|
|
3512
3550
|
const maxEnergy = 1e3;
|
|
3513
3551
|
let newSkills = targetBoss.skills;
|
|
3514
3552
|
if (!newSkills.includes("灵能构造炉")) {
|
|
@@ -3527,9 +3565,7 @@ var PassiveHandler = {
|
|
|
3527
3565
|
return {
|
|
3528
3566
|
updatedHP,
|
|
3529
3567
|
messages: [
|
|
3530
|
-
`🔥
|
|
3531
|
-
`⚡ 能量回复为100%`,
|
|
3532
|
-
`获得新技能【灵能构造炉】`
|
|
3568
|
+
`🔥 【复苏】生效:免于死亡,回复自身50%的最大生命值和100%的“能量”,并且获得新技能【灵能构造炉】`
|
|
3533
3569
|
]
|
|
3534
3570
|
};
|
|
3535
3571
|
}, "handleRevival"),
|
|
@@ -3547,13 +3583,16 @@ var PassiveHandler = {
|
|
|
3547
3583
|
);
|
|
3548
3584
|
return {
|
|
3549
3585
|
messages: [
|
|
3550
|
-
`⚙️
|
|
3586
|
+
`⚙️ 【灵能构造炉】生效:所有技能已获取完毕,此技能已移除`
|
|
3551
3587
|
]
|
|
3552
3588
|
};
|
|
3553
3589
|
}
|
|
3554
|
-
|
|
3555
|
-
|
|
3556
|
-
|
|
3590
|
+
let lightbladeStacks = 0;
|
|
3591
|
+
if (targetBoss.skills.includes("闪电冲锋")) {
|
|
3592
|
+
lightbladeStacks = targetBoss.Skillcountpoints || 0;
|
|
3593
|
+
}
|
|
3594
|
+
const totalChance = 1 + lightbladeStacks;
|
|
3595
|
+
if (Math.random() * 100 < totalChance) {
|
|
3557
3596
|
const availableSkills = allSkills.filter(
|
|
3558
3597
|
(skill) => !targetBoss.skills.includes(skill)
|
|
3559
3598
|
);
|
|
@@ -3567,28 +3606,27 @@ var PassiveHandler = {
|
|
|
3567
3606
|
);
|
|
3568
3607
|
return {
|
|
3569
3608
|
messages: [
|
|
3570
|
-
`⚙️ 【灵能构造炉】生效:获得新技能【${randomSkill}
|
|
3571
|
-
`剩余可获取技能:${availableSkills.length - 1}/${allSkills.length}`
|
|
3609
|
+
`⚙️ 【灵能构造炉】生效:获得新技能【${randomSkill}】`
|
|
3572
3610
|
]
|
|
3573
3611
|
};
|
|
3574
3612
|
}
|
|
3575
3613
|
return null;
|
|
3576
3614
|
}, "handleConstructor"),
|
|
3577
|
-
//
|
|
3578
|
-
handleTyrsShield: /* @__PURE__ */ __name(async function(ctx, targetBoss, activeBosses, bossGroup) {
|
|
3615
|
+
// 修改后 - 移除了层数清零操作
|
|
3616
|
+
handleTyrsShield: /* @__PURE__ */ __name(async function(ctx, targetBoss, currentHP, activeBosses, bossGroup) {
|
|
3579
3617
|
if (!targetBoss.skills.includes("天启超载护盾")) return null;
|
|
3580
3618
|
const lightbladeStacks = targetBoss.Skillcountpoints || 0;
|
|
3581
3619
|
if (lightbladeStacks === 0) return null;
|
|
3582
|
-
const triggerChance =
|
|
3620
|
+
const triggerChance = 5;
|
|
3583
3621
|
if (Math.random() * 100 < triggerChance) {
|
|
3584
3622
|
const groupMembers = activeBosses.filter(
|
|
3585
3623
|
(b) => b.groupId === targetBoss.groupId && b.HP > 0
|
|
3586
3624
|
);
|
|
3587
|
-
const healAmount = lightbladeStacks *
|
|
3625
|
+
const healAmount = lightbladeStacks * 10;
|
|
3588
3626
|
const updates = [];
|
|
3589
|
-
const messages = [`🛡️
|
|
3627
|
+
const messages = [`🛡️ 【天启超载护盾】生效:治疗所有存活异形`];
|
|
3590
3628
|
for (const member of groupMembers) {
|
|
3591
|
-
const maxHP =
|
|
3629
|
+
const maxHP = this.getMemberConfig(member.name, bossGroup)?.maxHP;
|
|
3592
3630
|
if (!maxHP) continue;
|
|
3593
3631
|
const heal = Math.min(healAmount, maxHP - member.HP);
|
|
3594
3632
|
if (heal > 0) {
|
|
@@ -3603,15 +3641,12 @@ var PassiveHandler = {
|
|
|
3603
3641
|
messages.push(`${member.name} +${heal}HP`);
|
|
3604
3642
|
}
|
|
3605
3643
|
}
|
|
3606
|
-
updates.push(
|
|
3607
|
-
ctx.database.set(
|
|
3608
|
-
"ggcevo_boss",
|
|
3609
|
-
{ name: targetBoss.name },
|
|
3610
|
-
{ Skillcountpoints: 0 }
|
|
3611
|
-
)
|
|
3612
|
-
);
|
|
3613
3644
|
await Promise.all(updates);
|
|
3614
|
-
return {
|
|
3645
|
+
return {
|
|
3646
|
+
messages,
|
|
3647
|
+
updatedHP: currentHP + healAmount
|
|
3648
|
+
// 不再清除层数
|
|
3649
|
+
};
|
|
3615
3650
|
}
|
|
3616
3651
|
return null;
|
|
3617
3652
|
}, "handleTyrsShield"),
|
|
@@ -3648,41 +3683,36 @@ var PassiveHandler = {
|
|
|
3648
3683
|
{ name: targetBoss.name },
|
|
3649
3684
|
{ skills: newSkills }
|
|
3650
3685
|
);
|
|
3651
|
-
messages.push(
|
|
3686
|
+
messages.push(`🔥 【地毯式轰炸】生效:移除“孤立无援”`);
|
|
3652
3687
|
} else {
|
|
3653
|
-
messages.push(`💣 【地毯式轰炸】生效:`);
|
|
3654
3688
|
}
|
|
3655
|
-
damageMultiplier = -
|
|
3656
|
-
messages.push(`🔥
|
|
3689
|
+
damageMultiplier = -1;
|
|
3690
|
+
messages.push(`🔥 【地毯式轰炸】生效:我心中的怒火胜过千万个太阳!受到的伤害-100%`);
|
|
3657
3691
|
}
|
|
3658
3692
|
return {
|
|
3659
3693
|
messages,
|
|
3660
3694
|
damageMultiplier
|
|
3661
3695
|
};
|
|
3662
3696
|
}, "handleCarpetBombing"),
|
|
3663
|
-
//
|
|
3697
|
+
// 修改后 - 移除了层数清零操作
|
|
3664
3698
|
handleBombardmentGuidance: /* @__PURE__ */ __name(async function(ctx, targetBoss) {
|
|
3665
3699
|
if (!targetBoss.skills.includes("轰炸引导")) return null;
|
|
3666
3700
|
const lightbladeStacks = targetBoss.Skillcountpoints || 0;
|
|
3667
3701
|
if (lightbladeStacks === 0) return null;
|
|
3668
3702
|
const triggerChance = 10;
|
|
3669
3703
|
if (Math.random() * 100 < triggerChance) {
|
|
3670
|
-
const energyGain = lightbladeStacks *
|
|
3704
|
+
const energyGain = lightbladeStacks * 50;
|
|
3671
3705
|
const maxEnergy = 1e3;
|
|
3672
3706
|
const currentEnergy = targetBoss.energy || 0;
|
|
3673
3707
|
const newEnergy = Math.min(currentEnergy + energyGain, maxEnergy);
|
|
3674
3708
|
await ctx.database.set(
|
|
3675
3709
|
"ggcevo_boss",
|
|
3676
3710
|
{ name: targetBoss.name },
|
|
3677
|
-
{
|
|
3678
|
-
energy: newEnergy,
|
|
3679
|
-
Skillcountpoints: 0
|
|
3680
|
-
}
|
|
3711
|
+
{ energy: newEnergy }
|
|
3681
3712
|
);
|
|
3682
3713
|
return {
|
|
3683
3714
|
messages: [
|
|
3684
|
-
`🎯
|
|
3685
|
-
`⚡ 回复${energyGain}点能量`
|
|
3715
|
+
`🎯 【轰炸引导】生效:回复${energyGain}点能量`
|
|
3686
3716
|
]
|
|
3687
3717
|
};
|
|
3688
3718
|
}
|
|
@@ -3815,7 +3845,12 @@ var PassiveHandler = {
|
|
|
3815
3845
|
}
|
|
3816
3846
|
const bloodEffect = this.handleBloodEffects(targetBoss, currentHP, maxHP);
|
|
3817
3847
|
if (bloodEffect) {
|
|
3818
|
-
|
|
3848
|
+
if (bloodEffect.buffAmount > 0) {
|
|
3849
|
+
buffMultiplier += bloodEffect.buffAmount;
|
|
3850
|
+
}
|
|
3851
|
+
if (bloodEffect.nerfAmount > 0) {
|
|
3852
|
+
nerfMultiplier -= bloodEffect.nerfAmount;
|
|
3853
|
+
}
|
|
3819
3854
|
messages.push(...bloodEffect.messages);
|
|
3820
3855
|
}
|
|
3821
3856
|
const siphonResult = this.handleEnergySiphon(targetBoss, currentHP, maxHP);
|
|
@@ -3859,7 +3894,12 @@ var PassiveHandler = {
|
|
|
3859
3894
|
}
|
|
3860
3895
|
const hyperspaceResult = this.handleHyperspaceSkip(targetBoss);
|
|
3861
3896
|
if (hyperspaceResult) {
|
|
3862
|
-
|
|
3897
|
+
if (hyperspaceResult.reduction > 0) {
|
|
3898
|
+
nerfMultiplier -= hyperspaceResult.reduction;
|
|
3899
|
+
}
|
|
3900
|
+
if (hyperspaceResult.increase > 0) {
|
|
3901
|
+
buffMultiplier += hyperspaceResult.increase;
|
|
3902
|
+
}
|
|
3863
3903
|
messages.push(...hyperspaceResult.messages);
|
|
3864
3904
|
}
|
|
3865
3905
|
const frenzyResult = this.handlePsychicFrenzy(targetBoss, currentHP, maxHP);
|
|
@@ -3972,21 +4012,16 @@ var PassiveHandler = {
|
|
|
3972
4012
|
}
|
|
3973
4013
|
}
|
|
3974
4014
|
}
|
|
3975
|
-
const stellarWindResult = await this.handleStellarWind(ctx, targetBoss, initialDamage, activeBosses, bossGroup);
|
|
4015
|
+
const stellarWindResult = await this.handleStellarWind(ctx, targetBoss, initialDamage, currentHP, maxHP, activeBosses, bossGroup);
|
|
3976
4016
|
if (stellarWindResult) {
|
|
4017
|
+
currentHP = stellarWindResult.updatedHP;
|
|
3977
4018
|
messages.push(...stellarWindResult.messages);
|
|
3978
4019
|
}
|
|
3979
|
-
const shieldResult = await this.handleTyrsShield(ctx, targetBoss, activeBosses, bossGroup);
|
|
4020
|
+
const shieldResult = await this.handleTyrsShield(ctx, targetBoss, currentHP, activeBosses, bossGroup);
|
|
3980
4021
|
if (shieldResult) {
|
|
4022
|
+
currentHP = shieldResult.updatedHP;
|
|
3981
4023
|
messages.push(...shieldResult.messages);
|
|
3982
4024
|
}
|
|
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
4025
|
const survivalResult = this.handleSurvivalInstinct(targetBoss, currentHP, maxHP);
|
|
3991
4026
|
if (survivalResult) {
|
|
3992
4027
|
currentHP = survivalResult.updatedHP;
|
|
@@ -4014,10 +4049,6 @@ var PassiveHandler = {
|
|
|
4014
4049
|
if (arcRifleResult) {
|
|
4015
4050
|
messages.push(...arcRifleResult.messages);
|
|
4016
4051
|
}
|
|
4017
|
-
const constructorResult = await this.handleConstructor(ctx, targetBoss);
|
|
4018
|
-
if (constructorResult) {
|
|
4019
|
-
messages.push(...constructorResult.messages);
|
|
4020
|
-
}
|
|
4021
4052
|
const coldAdaptResult = await this.handleColdAdaptation(ctx, targetBoss, weaponName);
|
|
4022
4053
|
if (coldAdaptResult) {
|
|
4023
4054
|
messages.push(...coldAdaptResult.messages);
|
|
@@ -4039,14 +4070,21 @@ var PassiveHandler = {
|
|
|
4039
4070
|
if (CollapsepulseResult) {
|
|
4040
4071
|
messages.push(...CollapsepulseResult.messages);
|
|
4041
4072
|
}
|
|
4042
|
-
const
|
|
4043
|
-
if (
|
|
4044
|
-
messages.push(...
|
|
4073
|
+
const bileStackResult = await this.handleBileStacking(ctx, targetBoss, skipBileStacking);
|
|
4074
|
+
if (bileStackResult) {
|
|
4075
|
+
messages.push(...bileStackResult.messages);
|
|
4045
4076
|
}
|
|
4046
4077
|
const shockwaveResult = await this.handleEnergyShockwave(ctx, targetBoss);
|
|
4047
4078
|
if (shockwaveResult) {
|
|
4048
4079
|
messages.push(...shockwaveResult.messages);
|
|
4049
4080
|
}
|
|
4081
|
+
const cosmicResult = await this.handleCosmicEnergy(ctx, targetBoss, finalDamage, bossGroup);
|
|
4082
|
+
if (cosmicResult) {
|
|
4083
|
+
messages.push(...cosmicResult.messages);
|
|
4084
|
+
if (cosmicResult.healAmount > 0) {
|
|
4085
|
+
currentHP = Math.min(targetBoss.HP + cosmicResult.healAmount, maxHP);
|
|
4086
|
+
}
|
|
4087
|
+
}
|
|
4050
4088
|
const guidanceResult = await this.handleBombardmentGuidance(ctx, targetBoss);
|
|
4051
4089
|
if (guidanceResult) {
|
|
4052
4090
|
messages.push(...guidanceResult.messages);
|
|
@@ -4056,15 +4094,19 @@ var PassiveHandler = {
|
|
|
4056
4094
|
messages.push(...gammaRadResult.messages);
|
|
4057
4095
|
radiationApplied = gammaRadResult.radiationApplied;
|
|
4058
4096
|
}
|
|
4059
|
-
const bileStackResult = await this.handleBileStacking(ctx, targetBoss, skipBileStacking);
|
|
4060
|
-
if (bileStackResult) {
|
|
4061
|
-
messages.push(...bileStackResult.messages);
|
|
4062
|
-
}
|
|
4063
4097
|
const coldEffectResult = await this.handleColdEffect(ctx, targetBoss, weaponName);
|
|
4064
4098
|
if (coldEffectResult) {
|
|
4065
4099
|
messages.push(...coldEffectResult.messages);
|
|
4066
4100
|
freezing = coldEffectResult.freezing;
|
|
4067
4101
|
}
|
|
4102
|
+
const tagChangeResult = await this.handleConductorTagChange(ctx, targetBoss, currentHP, maxHP);
|
|
4103
|
+
if (tagChangeResult) {
|
|
4104
|
+
messages.push(...tagChangeResult.messages);
|
|
4105
|
+
}
|
|
4106
|
+
const constructorResult = await this.handleConstructor(ctx, targetBoss);
|
|
4107
|
+
if (constructorResult) {
|
|
4108
|
+
messages.push(...constructorResult.messages);
|
|
4109
|
+
}
|
|
4068
4110
|
return {
|
|
4069
4111
|
currentHP,
|
|
4070
4112
|
messages,
|
|
@@ -6559,11 +6601,8 @@ ${items.join("、")}
|
|
|
6559
6601
|
const handle = `${profile.regionId}-S2-${profile.realmId}-${profile.profileId}`;
|
|
6560
6602
|
const [careerData] = await ctx.database.get("ggcevo_careers", { handle });
|
|
6561
6603
|
const discountDetails = [];
|
|
6562
|
-
let totalDiscount = 0;
|
|
6563
6604
|
if (careerData?.career === "武器中士") {
|
|
6564
|
-
|
|
6565
|
-
totalDiscount += weaponSpecialistDiscount;
|
|
6566
|
-
discountDetails.push(`▸ 🎖️ 武器中士职业:${weaponSpecialistDiscount}%折扣`);
|
|
6605
|
+
discountDetails.push(`▸ 🎖️ 武器中士职业:50%折扣`);
|
|
6567
6606
|
}
|
|
6568
6607
|
const activeWish = await ctx.database.get("ggcevo_Wish_Record", {
|
|
6569
6608
|
handle,
|
|
@@ -6573,11 +6612,8 @@ ${items.join("、")}
|
|
|
6573
6612
|
isused: false
|
|
6574
6613
|
}).then((records) => records[0]);
|
|
6575
6614
|
if (activeWish) {
|
|
6576
|
-
|
|
6577
|
-
totalDiscount += grasshopperDiscount;
|
|
6578
|
-
discountDetails.push(`▸ 🦗 蚱蜢优购祈愿:${grasshopperDiscount}%折扣`);
|
|
6615
|
+
discountDetails.push(`▸ 🦗 蚱蜢优购祈愿:20%折扣`);
|
|
6579
6616
|
}
|
|
6580
|
-
totalDiscount = Math.min(totalDiscount, 100);
|
|
6581
6617
|
const categoryStats = Object.values(weaponConfig).filter((weapon) => weapon.price !== 0).reduce((stats, weapon) => {
|
|
6582
6618
|
stats[weapon.category] = (stats[weapon.category] || 0) + 1;
|
|
6583
6619
|
return stats;
|
|
@@ -6586,8 +6622,8 @@ ${items.join("、")}
|
|
|
6586
6622
|
return [
|
|
6587
6623
|
"🏪 咕咕武器库分类 🏪",
|
|
6588
6624
|
'使用 "武器库 分类名称" 查看详细列表',
|
|
6589
|
-
|
|
6590
|
-
${discountDetails.
|
|
6625
|
+
discountDetails.length > 0 && `💰 折扣明细:
|
|
6626
|
+
${discountDetails.join("\n")}`,
|
|
6591
6627
|
"====================",
|
|
6592
6628
|
...Object.entries(categoryStats).map(([catName, count]) => `▸ ${catName} (${count}种)`),
|
|
6593
6629
|
"===================="
|
|
@@ -6597,12 +6633,19 @@ ${discountDetails.length ? `${discountDetails.join("\n")}` : ""}`,
|
|
|
6597
6633
|
return `无效武器分类,可用分类:
|
|
6598
6634
|
${Object.keys(categoryStats).join("、")}`;
|
|
6599
6635
|
}
|
|
6600
|
-
const isLegendaryCategory = category === "传奇武器";
|
|
6601
6636
|
const items = Object.entries(weaponConfig).filter(([_, config2]) => config2.category === category && config2.price !== 0).map(([name2, config2]) => {
|
|
6602
|
-
|
|
6603
|
-
|
|
6604
|
-
|
|
6605
|
-
|
|
6637
|
+
let applicableDiscount = 0;
|
|
6638
|
+
if (careerData?.career === "武器中士") {
|
|
6639
|
+
applicableDiscount += 50;
|
|
6640
|
+
}
|
|
6641
|
+
if (config2.category !== "传奇武器" && activeWish) {
|
|
6642
|
+
applicableDiscount += 20;
|
|
6643
|
+
}
|
|
6644
|
+
let priceDisplay = `${config2.price}金币`;
|
|
6645
|
+
if (applicableDiscount > 0) {
|
|
6646
|
+
const discountedPrice = Math.floor(config2.price * (100 - applicableDiscount) / 100);
|
|
6647
|
+
priceDisplay = `${discountedPrice}金币 (原价${config2.price})`;
|
|
6648
|
+
}
|
|
6606
6649
|
let tagEffectsDesc = "▸ 无特殊加成效果";
|
|
6607
6650
|
if (config2.tagEffects && Object.keys(config2.tagEffects).length > 0) {
|
|
6608
6651
|
tagEffectsDesc = Object.entries(config2.tagEffects).map(([tag, multiplier]) => `▸ 对${tag}目标造成${(multiplier * 100).toFixed(0)}%伤害`).join("\n");
|
|
@@ -6620,16 +6663,13 @@ ${Object.keys(categoryStats).join("、")}`;
|
|
|
6620
6663
|
"------------------"
|
|
6621
6664
|
].filter(Boolean).join("\n");
|
|
6622
6665
|
});
|
|
6623
|
-
const permissionNotice =
|
|
6624
|
-
const discountInfo = totalDiscount > 0 && !isLegendaryCategory ? `💰 折扣明细:
|
|
6625
|
-
${discountDetails.length ? `${discountDetails.join("\n")}` : ""}` : null;
|
|
6666
|
+
const permissionNotice = category === "传奇武器" ? "⚠️ 购买传奇武器要求:人类联盟阵营+武器系统5级+情报副官/武器中士职业+传奇武器购买权限" : null;
|
|
6626
6667
|
return [
|
|
6627
6668
|
`🏪 咕咕武器库 - ${category} 🏪`,
|
|
6628
6669
|
'使用"购买 武器名称"指令进行购买',
|
|
6670
|
+
discountDetails.length > 0 ? `💰 折扣明细:
|
|
6671
|
+
${discountDetails.join("\n")}` : "",
|
|
6629
6672
|
permissionNotice,
|
|
6630
|
-
// 新增权限提示
|
|
6631
|
-
discountInfo,
|
|
6632
|
-
// 原有折扣信息
|
|
6633
6673
|
"====================",
|
|
6634
6674
|
...items,
|
|
6635
6675
|
items.length === 0 ? "⚠️ 该分类下暂无可用武器" : ""
|
|
@@ -6725,39 +6765,35 @@ ${validTypes.join("、")}`;
|
|
|
6725
6765
|
let totalDiscount = 0;
|
|
6726
6766
|
let discountDetails = [];
|
|
6727
6767
|
let activeWish = null;
|
|
6728
|
-
if (
|
|
6729
|
-
|
|
6730
|
-
|
|
6731
|
-
|
|
6732
|
-
|
|
6733
|
-
|
|
6734
|
-
|
|
6735
|
-
|
|
6736
|
-
|
|
6737
|
-
|
|
6738
|
-
|
|
6739
|
-
|
|
6740
|
-
|
|
6741
|
-
|
|
6742
|
-
|
|
6743
|
-
|
|
6744
|
-
|
|
6745
|
-
totalDiscount += specialistDiscount;
|
|
6746
|
-
discountDetails.push(`🎖️ 武器中士职业:${specialistDiscount}%折扣`);
|
|
6768
|
+
if (isWeapon && careerData?.career === "武器中士") {
|
|
6769
|
+
const specialistDiscount = 50;
|
|
6770
|
+
totalDiscount += specialistDiscount;
|
|
6771
|
+
discountDetails.push(`🎖️ 武器中士职业:${specialistDiscount}%折扣`);
|
|
6772
|
+
}
|
|
6773
|
+
if (!isLegendaryWeapon && isWeapon) {
|
|
6774
|
+
activeWish = await ctx.database.get("ggcevo_Wish_Record", {
|
|
6775
|
+
handle,
|
|
6776
|
+
wishname: "蚱蜢优购",
|
|
6777
|
+
startTime: { $lte: /* @__PURE__ */ new Date() },
|
|
6778
|
+
endTime: { $gte: /* @__PURE__ */ new Date() },
|
|
6779
|
+
isused: false
|
|
6780
|
+
}).then((records) => records[0] || null);
|
|
6781
|
+
if (activeWish) {
|
|
6782
|
+
const wishDiscount = 20;
|
|
6783
|
+
totalDiscount += wishDiscount;
|
|
6784
|
+
discountDetails.push(`🦗 蚱蜢优购祈愿:${wishDiscount}%折扣`);
|
|
6747
6785
|
}
|
|
6748
|
-
totalDiscount = Math.min(totalDiscount, 100);
|
|
6749
6786
|
}
|
|
6787
|
+
totalDiscount = Math.min(totalDiscount, 100);
|
|
6750
6788
|
let actualPrice = config2.price;
|
|
6751
|
-
if (
|
|
6789
|
+
if (totalDiscount > 0) {
|
|
6752
6790
|
actualPrice = Math.floor(config2.price * (100 - totalDiscount) / 100);
|
|
6753
6791
|
actualPrice = Math.max(actualPrice, 1);
|
|
6754
6792
|
}
|
|
6755
6793
|
if ((signInfo?.totalRewards || 0) < actualPrice) {
|
|
6756
6794
|
let priceInfo = `需要 ${actualPrice} 金币`;
|
|
6757
6795
|
if (discountDetails.length > 0) {
|
|
6758
|
-
priceInfo += `(原价${config2.price})`;
|
|
6759
|
-
} else if (isLegendaryWeapon) {
|
|
6760
|
-
priceInfo = `需要 ${actualPrice} 金币 (传奇武器无折扣)`;
|
|
6796
|
+
priceInfo += ` (原价${config2.price})`;
|
|
6761
6797
|
}
|
|
6762
6798
|
return `❌ 金币不足,${priceInfo}`;
|
|
6763
6799
|
}
|
|
@@ -6812,20 +6848,18 @@ ${validTypes.join("、")}`;
|
|
|
6812
6848
|
});
|
|
6813
6849
|
let message = `✅ 成功购买${isWeapon ? "武器" : "物品"}「${item}」
|
|
6814
6850
|
`;
|
|
6815
|
-
if (
|
|
6851
|
+
if (discountDetails.length > 0) {
|
|
6852
|
+
message += `花费 ${actualPrice} 金币 (原价${config2.price} 金币)`;
|
|
6853
|
+
message += `
|
|
6854
|
+
💰 折扣明细:
|
|
6855
|
+
▸ ${discountDetails.join("\n▸ ")}`;
|
|
6856
|
+
} else {
|
|
6816
6857
|
message += `花费 ${actualPrice} 金币`;
|
|
6858
|
+
}
|
|
6859
|
+
if (isLegendaryWeapon) {
|
|
6817
6860
|
const [permissions] = await ctx.database.get("ggcevo_purchasepermissions", { handle });
|
|
6818
6861
|
message += `
|
|
6819
6862
|
扣除 1 次传奇武器购买权限,剩余次数:${permissions?.legendarypermissions || 0}`;
|
|
6820
|
-
} else {
|
|
6821
|
-
if (discountDetails.length > 0) {
|
|
6822
|
-
message += `花费 ${actualPrice} 金币 (原价${config2.price} 金币)`;
|
|
6823
|
-
message += `
|
|
6824
|
-
💰 折扣明细:
|
|
6825
|
-
▸ ${discountDetails.join("\n▸ ")}`;
|
|
6826
|
-
} else {
|
|
6827
|
-
message += `花费 ${actualPrice} 金币`;
|
|
6828
|
-
}
|
|
6829
6863
|
}
|
|
6830
6864
|
if (isWeapon) {
|
|
6831
6865
|
if (isAutoEquipped) {
|