koishi-plugin-ggcevo-game 1.4.74 → 1.4.76
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/BattleEffectProcessor.d.ts +24 -4
- package/lib/boss/attackhandling.d.ts +1 -1
- package/lib/database.d.ts +3 -1
- package/lib/index.js +201 -101
- package/package.json +1 -1
|
@@ -2,6 +2,7 @@ export interface BattleStatistics {
|
|
|
2
2
|
name: string;
|
|
3
3
|
hpChange: number;
|
|
4
4
|
energyChange: number;
|
|
5
|
+
armorChange: number;
|
|
5
6
|
tagsAdded: string[];
|
|
6
7
|
tagsRemoved: string[];
|
|
7
8
|
skillsAdded: string[];
|
|
@@ -398,7 +399,7 @@ export declare const BattleEffectProcessor: {
|
|
|
398
399
|
name: string;
|
|
399
400
|
updates: Partial<BattleStatistics>;
|
|
400
401
|
} | null;
|
|
401
|
-
|
|
402
|
+
armorReduction: number;
|
|
402
403
|
layerAdded: boolean;
|
|
403
404
|
} | null;
|
|
404
405
|
handleColdEffect: (targetBoss: any, weaponName: string) => {
|
|
@@ -501,13 +502,24 @@ export declare const BattleEffectProcessor: {
|
|
|
501
502
|
messages: string[];
|
|
502
503
|
buffMultiplier?: undefined;
|
|
503
504
|
};
|
|
504
|
-
handleBurrowAmbush: (targetBoss: any, nestlingNames?: string[]) => {
|
|
505
|
+
handleBurrowAmbush: (targetBoss: any, activeBosses: any[], nestlingNames?: string[]) => {
|
|
505
506
|
messages: string[];
|
|
506
507
|
targetUpdates: {
|
|
507
508
|
name: any;
|
|
508
|
-
updates:
|
|
509
|
+
updates: {
|
|
510
|
+
skillsRemoved: string[];
|
|
511
|
+
};
|
|
509
512
|
};
|
|
510
|
-
spawnNewBossMark
|
|
513
|
+
spawnNewBossMark?: undefined;
|
|
514
|
+
} | {
|
|
515
|
+
messages: string[];
|
|
516
|
+
targetUpdates: {
|
|
517
|
+
name: any;
|
|
518
|
+
updates: {
|
|
519
|
+
skillsRemoved: string[];
|
|
520
|
+
};
|
|
521
|
+
};
|
|
522
|
+
spawnNewBossMark: string[];
|
|
511
523
|
};
|
|
512
524
|
handleWeakeningSpit: (targetBoss: any, activeBosses: any[]) => any;
|
|
513
525
|
handleHealingSwarm: (targetBoss: any, activeBosses: any[]) => {
|
|
@@ -553,6 +565,14 @@ export declare const BattleEffectProcessor: {
|
|
|
553
565
|
messages: string[];
|
|
554
566
|
spawnNewBossMark: string;
|
|
555
567
|
};
|
|
568
|
+
handlePulseRifleEffect: (weaponName: string, targetBoss: any) => {
|
|
569
|
+
pulseGrenadeTriggered: boolean;
|
|
570
|
+
targetUpdates: {
|
|
571
|
+
name: string;
|
|
572
|
+
updates: Partial<BattleStatistics>;
|
|
573
|
+
} | null;
|
|
574
|
+
messages: string[];
|
|
575
|
+
};
|
|
556
576
|
};
|
|
557
577
|
/**
|
|
558
578
|
* 统一处理所有被动效果(包含伤害修正、免疫检查、状态更新等)
|
|
@@ -51,4 +51,4 @@ export declare function testAttackFunction(ctx: Context, session: any, handle: s
|
|
|
51
51
|
passiveMessages: string[];
|
|
52
52
|
ignoreMessage: any[];
|
|
53
53
|
}>;
|
|
54
|
-
export declare function createNestlingBosses(ctx: any,
|
|
54
|
+
export declare function createNestlingBosses(ctx: any, nestlingNames: string | string[]): Promise<any[]>;
|
package/lib/database.d.ts
CHANGED
|
@@ -122,12 +122,15 @@ export interface WeaponInventory {
|
|
|
122
122
|
installedMods: string[];
|
|
123
123
|
equipped: boolean;
|
|
124
124
|
comboCount: number;
|
|
125
|
+
pityCounter: number;
|
|
125
126
|
}
|
|
126
127
|
export interface BossInfo {
|
|
127
128
|
name: string;
|
|
128
129
|
groupId: number;
|
|
129
130
|
type: string;
|
|
130
131
|
HP: number;
|
|
132
|
+
energy: number;
|
|
133
|
+
armor: number;
|
|
131
134
|
tags: string[];
|
|
132
135
|
skills: string[];
|
|
133
136
|
skillStacks: number;
|
|
@@ -135,7 +138,6 @@ export interface BossInfo {
|
|
|
135
138
|
statusLayers: number;
|
|
136
139
|
radiationLayers: number;
|
|
137
140
|
coldLayers: number;
|
|
138
|
-
energy: number;
|
|
139
141
|
lastWeaponName: string;
|
|
140
142
|
isActive: boolean;
|
|
141
143
|
respawnTime: Date;
|
package/lib/index.js
CHANGED
|
@@ -148,7 +148,7 @@ var weaponConfig = {
|
|
|
148
148
|
damage: 25,
|
|
149
149
|
armorDamageReduction: 1,
|
|
150
150
|
description: "喷射稳定的液氮恒流,对长时间接触者造成致命的损伤",
|
|
151
|
-
specialeffect: "
|
|
151
|
+
specialeffect: "攻击时为目标附加[寒冷]效果,每层使目标受到的伤害提高2.5%(最多提高50%)",
|
|
152
152
|
price: 775,
|
|
153
153
|
redCrystalCost: 7,
|
|
154
154
|
isantiair: false,
|
|
@@ -165,7 +165,7 @@ var weaponConfig = {
|
|
|
165
165
|
damage: 24,
|
|
166
166
|
armorDamageReduction: 0.5,
|
|
167
167
|
description: "一种经过改造的电动工具,可对近距离的目标放出高压电",
|
|
168
|
-
specialeffect: "
|
|
168
|
+
specialeffect: "每次攻击消耗目标200点能量值",
|
|
169
169
|
price: 750,
|
|
170
170
|
redCrystalCost: 7,
|
|
171
171
|
isantiair: true,
|
|
@@ -181,7 +181,7 @@ var weaponConfig = {
|
|
|
181
181
|
damage: 27,
|
|
182
182
|
armorDamageReduction: 0.75,
|
|
183
183
|
description: "一种高度危险性的武器,设计用辐射照射并伤害敌人",
|
|
184
|
-
specialeffect: "
|
|
184
|
+
specialeffect: "攻击无[机械]标签的[生物]目标时附加[辐射]效果,每层使目标受到的伤害提高2.5%(最多提高50%)",
|
|
185
185
|
price: 825,
|
|
186
186
|
redCrystalCost: 8,
|
|
187
187
|
isantiair: true,
|
|
@@ -197,7 +197,7 @@ var weaponConfig = {
|
|
|
197
197
|
damage: 27,
|
|
198
198
|
armorDamageReduction: 0,
|
|
199
199
|
description: "激光步枪的变种,采用折射技术升级",
|
|
200
|
-
specialeffect: "
|
|
200
|
+
specialeffect: "攻击触发散射,对次要目标造成120%基础伤害",
|
|
201
201
|
price: 1450,
|
|
202
202
|
redCrystalCost: 14,
|
|
203
203
|
isantiair: true,
|
|
@@ -212,7 +212,7 @@ var weaponConfig = {
|
|
|
212
212
|
damage: 29,
|
|
213
213
|
armorDamageReduction: 0.75,
|
|
214
214
|
description: "面对护盾目标而开发的武器",
|
|
215
|
-
specialeffect: "
|
|
215
|
+
specialeffect: "对[护盾]目标无视50%伤害减免",
|
|
216
216
|
price: 1050,
|
|
217
217
|
redCrystalCost: 10,
|
|
218
218
|
isantiair: true,
|
|
@@ -244,7 +244,7 @@ var weaponConfig = {
|
|
|
244
244
|
damage: 36,
|
|
245
245
|
armorDamageReduction: 1,
|
|
246
246
|
description: "一种原型能量武器,能够发射强大的脉冲",
|
|
247
|
-
specialeffect: "
|
|
247
|
+
specialeffect: "攻击减少目标2层技能层数",
|
|
248
248
|
price: 1500,
|
|
249
249
|
redCrystalCost: 15,
|
|
250
250
|
isantiair: true,
|
|
@@ -351,12 +351,12 @@ var weaponConfig = {
|
|
|
351
351
|
damage: 80,
|
|
352
352
|
armorDamageReduction: -1,
|
|
353
353
|
description: "一件传奇武器",
|
|
354
|
-
specialeffect: "
|
|
354
|
+
specialeffect: "暴击率提高25%;连续3次未暴击时,下次攻击必定暴击",
|
|
355
355
|
price: 6400,
|
|
356
356
|
redCrystalCost: 200,
|
|
357
357
|
isantiair: true,
|
|
358
358
|
tagEffects: {
|
|
359
|
-
"重甲": 1.
|
|
359
|
+
"重甲": 1.5
|
|
360
360
|
}
|
|
361
361
|
},
|
|
362
362
|
"龙息霰弹枪": {
|
|
@@ -398,7 +398,7 @@ var weaponConfig = {
|
|
|
398
398
|
damage: 100,
|
|
399
399
|
armorDamageReduction: 0,
|
|
400
400
|
description: "优雅而独特的武器",
|
|
401
|
-
specialeffect: "
|
|
401
|
+
specialeffect: "无视目标100%伤害减免",
|
|
402
402
|
price: 6400,
|
|
403
403
|
redCrystalCost: 200,
|
|
404
404
|
isantiair: false,
|
|
@@ -411,7 +411,7 @@ var weaponConfig = {
|
|
|
411
411
|
damage: 100,
|
|
412
412
|
armorDamageReduction: 1,
|
|
413
413
|
description: "一件传奇武器",
|
|
414
|
-
specialeffect: "
|
|
414
|
+
specialeffect: "攻击触发散射,对次要目标造成30%基础伤害;每次攻击消耗目标500点能量值",
|
|
415
415
|
price: 6400,
|
|
416
416
|
redCrystalCost: 200,
|
|
417
417
|
isantiair: true,
|
|
@@ -426,7 +426,7 @@ var weaponConfig = {
|
|
|
426
426
|
damage: 80,
|
|
427
427
|
armorDamageReduction: 0,
|
|
428
428
|
description: "一件传奇武器",
|
|
429
|
-
specialeffect: "
|
|
429
|
+
specialeffect: "无法暴击;无视50%伤害减免;33%几率发射脉冲榴弹,额外造成50%伤害并降低目标0.5护甲值",
|
|
430
430
|
price: 6400,
|
|
431
431
|
redCrystalCost: 200,
|
|
432
432
|
isantiair: true,
|
|
@@ -455,21 +455,21 @@ var weaponConfig = {
|
|
|
455
455
|
var modConfig = {
|
|
456
456
|
"动能增幅": {
|
|
457
457
|
cost: 1750,
|
|
458
|
-
effect: "
|
|
458
|
+
effect: "伤害提高15%",
|
|
459
459
|
// 规范术语
|
|
460
460
|
exclusiveTo: "",
|
|
461
461
|
isExclusive: false
|
|
462
462
|
},
|
|
463
463
|
"棱镜水晶": {
|
|
464
|
-
cost:
|
|
465
|
-
effect: "
|
|
464
|
+
cost: 2050,
|
|
465
|
+
effect: "暴击率提升10%",
|
|
466
466
|
// 保持原描述
|
|
467
467
|
exclusiveTo: "",
|
|
468
468
|
isExclusive: false
|
|
469
469
|
},
|
|
470
470
|
"破甲模块": {
|
|
471
471
|
cost: 1250,
|
|
472
|
-
effect: "
|
|
472
|
+
effect: "无视目标10%伤害减免",
|
|
473
473
|
// 术语统一
|
|
474
474
|
exclusiveTo: "",
|
|
475
475
|
isExclusive: false
|
|
@@ -477,43 +477,37 @@ var modConfig = {
|
|
|
477
477
|
// 专属模组修改
|
|
478
478
|
"裂甲核心": {
|
|
479
479
|
cost: 750,
|
|
480
|
-
effect: "
|
|
481
|
-
// 统一伤害/防御描述
|
|
480
|
+
effect: "伤害提高40%,无视目标40%伤害减免",
|
|
482
481
|
exclusiveTo: "高斯步枪",
|
|
483
482
|
isExclusive: true
|
|
484
483
|
},
|
|
485
484
|
"棱镜超载核心": {
|
|
486
|
-
cost:
|
|
487
|
-
effect: "
|
|
488
|
-
// 保持原描述
|
|
485
|
+
cost: 2250,
|
|
486
|
+
effect: "暴击率提升20%;连续4次未暴击时,下次攻击必定暴击",
|
|
489
487
|
exclusiveTo: "激光步枪",
|
|
490
488
|
isExclusive: true
|
|
491
489
|
},
|
|
492
490
|
"助燃核心": {
|
|
493
491
|
cost: 2550,
|
|
494
492
|
effect: "对[惧热]目标造成300%伤害,对[生物]目标造成200%伤害",
|
|
495
|
-
// 规范标签引用和效果描述
|
|
496
493
|
exclusiveTo: "焚烧枪",
|
|
497
494
|
isExclusive: true
|
|
498
495
|
},
|
|
499
496
|
"光束曲射晶片": {
|
|
500
497
|
cost: 2750,
|
|
501
|
-
effect: "
|
|
502
|
-
// 明确机制命名
|
|
498
|
+
effect: "攻击触发散射,对次要目标造成100%基础伤害",
|
|
503
499
|
exclusiveTo: "碎骨步枪",
|
|
504
500
|
isExclusive: true
|
|
505
501
|
},
|
|
506
502
|
"金刚石瞄准镜": {
|
|
507
503
|
cost: 2250,
|
|
508
|
-
effect: "
|
|
509
|
-
// 术语统一
|
|
504
|
+
effect: "无视目标20%伤害减免",
|
|
510
505
|
exclusiveTo: "侦察步枪",
|
|
511
506
|
isExclusive: true
|
|
512
507
|
},
|
|
513
508
|
"微型聚变核心": {
|
|
514
509
|
cost: 2750,
|
|
515
|
-
effect: "连续攻击叠加[
|
|
516
|
-
// 机制命名和数值规范化
|
|
510
|
+
effect: "连续攻击叠加[聚变]效果,每层提高7.5%伤害(最多6层)",
|
|
517
511
|
exclusiveTo: "聚变磁轨枪",
|
|
518
512
|
isExclusive: true
|
|
519
513
|
}
|
|
@@ -1506,7 +1500,7 @@ var bossPool = [
|
|
|
1506
1500
|
{
|
|
1507
1501
|
name: "巢穴雷兽",
|
|
1508
1502
|
type: "子代",
|
|
1509
|
-
maxHP:
|
|
1503
|
+
maxHP: 2500,
|
|
1510
1504
|
maxShield: 0,
|
|
1511
1505
|
maxEnergy: 0,
|
|
1512
1506
|
armor: 15,
|
|
@@ -1518,7 +1512,7 @@ var bossPool = [
|
|
|
1518
1512
|
{
|
|
1519
1513
|
name: "巢穴战士",
|
|
1520
1514
|
type: "子代",
|
|
1521
|
-
maxHP:
|
|
1515
|
+
maxHP: 1500,
|
|
1522
1516
|
maxShield: 0,
|
|
1523
1517
|
maxEnergy: 0,
|
|
1524
1518
|
armor: 4,
|
|
@@ -1530,7 +1524,7 @@ var bossPool = [
|
|
|
1530
1524
|
{
|
|
1531
1525
|
name: "巢穴甲虫",
|
|
1532
1526
|
type: "子代",
|
|
1533
|
-
maxHP:
|
|
1527
|
+
maxHP: 2e3,
|
|
1534
1528
|
maxShield: 0,
|
|
1535
1529
|
maxEnergy: 0,
|
|
1536
1530
|
armor: 10,
|
|
@@ -1551,6 +1545,8 @@ function updateStatsByName(name2, updates) {
|
|
|
1551
1545
|
// 键与 name 一致
|
|
1552
1546
|
hpChange: 0,
|
|
1553
1547
|
energyChange: 0,
|
|
1548
|
+
armorChange: 0,
|
|
1549
|
+
// 新增字段初始化
|
|
1554
1550
|
tagsAdded: [],
|
|
1555
1551
|
tagsRemoved: [],
|
|
1556
1552
|
skillsAdded: [],
|
|
@@ -1573,6 +1569,7 @@ function updateStatsByName(name2, updates) {
|
|
|
1573
1569
|
statusLayersChanged: existing.statusLayersChanged + (updates.statusLayersChanged ?? 0),
|
|
1574
1570
|
radiationLayersChange: existing.radiationLayersChange + (updates.radiationLayersChange ?? 0),
|
|
1575
1571
|
coldLayersChange: existing.coldLayersChange + (updates.coldLayersChange ?? 0),
|
|
1572
|
+
armorChange: existing.armorChange + (updates.armorChange ?? 0),
|
|
1576
1573
|
// 数组类型:合并(新增内容追加到现有数组)
|
|
1577
1574
|
tagsAdded: [...existing.tagsAdded, ...updates.tagsAdded ?? []],
|
|
1578
1575
|
tagsRemoved: [...existing.tagsRemoved, ...updates.tagsRemoved ?? []],
|
|
@@ -3042,12 +3039,8 @@ var BattleEffectProcessor = {
|
|
|
3042
3039
|
const messages = [];
|
|
3043
3040
|
let layerAdded = false;
|
|
3044
3041
|
const currentLayers = targetBoss.radiationLayers || 0;
|
|
3045
|
-
const
|
|
3046
|
-
|
|
3047
|
-
if (effectiveLayers > 0) {
|
|
3048
|
-
messages.push(`☢️ 【辐射】:当前${currentLayers}层,受到的伤害+${(effectiveLayers * 2.5).toFixed(1)}%`);
|
|
3049
|
-
if (currentLayers > 20) {
|
|
3050
|
-
}
|
|
3042
|
+
const armorReduction = currentLayers * 0.05;
|
|
3043
|
+
if (currentLayers > 0) {
|
|
3051
3044
|
}
|
|
3052
3045
|
let targetUpdates = null;
|
|
3053
3046
|
if (weaponName === "伽马枪" && // 使用伽马枪
|
|
@@ -3056,18 +3049,20 @@ var BattleEffectProcessor = {
|
|
|
3056
3049
|
targetUpdates = {
|
|
3057
3050
|
name: targetBoss.name,
|
|
3058
3051
|
updates: {
|
|
3059
|
-
radiationLayersChange: 1
|
|
3052
|
+
radiationLayersChange: 1,
|
|
3060
3053
|
// 辐射层数增加1
|
|
3054
|
+
armorChange: -0.05
|
|
3055
|
+
// 同时削减0.05护甲值(永久生效)
|
|
3061
3056
|
}
|
|
3062
3057
|
};
|
|
3063
3058
|
const newLayers = currentLayers + 1;
|
|
3064
|
-
messages.push(`☢️ 【伽马枪】武器效果:获得1
|
|
3059
|
+
messages.push(`☢️ 【伽马枪】武器效果:获得1层「辐射」并削减0.05护甲值`);
|
|
3065
3060
|
layerAdded = true;
|
|
3066
3061
|
}
|
|
3067
3062
|
return {
|
|
3068
3063
|
messages,
|
|
3069
3064
|
targetUpdates,
|
|
3070
|
-
|
|
3065
|
+
armorReduction,
|
|
3071
3066
|
layerAdded
|
|
3072
3067
|
// 返回层数增加标记
|
|
3073
3068
|
};
|
|
@@ -3428,29 +3423,41 @@ var BattleEffectProcessor = {
|
|
|
3428
3423
|
const messages = [`🐛 【虫巢思维】生效:存在${livingNestlings}只巢穴子代,受到的伤害-${nerfMultiplier * 100}%`];
|
|
3429
3424
|
return { nerfMultiplier, messages };
|
|
3430
3425
|
}, "handleHiveMind"),
|
|
3431
|
-
// 爆虫伏击 - 血量低于50
|
|
3432
|
-
handleBurrowAmbush: /* @__PURE__ */ __name(function(targetBoss, nestlingNames = ["巢穴雷兽", "巢穴战士", "巢穴甲虫"]) {
|
|
3426
|
+
// 爆虫伏击 - 血量低于50%时,立即孵化巢穴子代直至上限(生效后移除)
|
|
3427
|
+
handleBurrowAmbush: /* @__PURE__ */ __name(function(targetBoss, activeBosses, nestlingNames = ["巢穴雷兽", "巢穴战士", "巢穴甲虫"]) {
|
|
3433
3428
|
if (!targetBoss.skills.includes("爆虫伏击")) return null;
|
|
3434
3429
|
const maxHP = getMaxHPByName(targetBoss.name);
|
|
3435
3430
|
const hpPercent = targetBoss.HP / maxHP;
|
|
3436
3431
|
if (hpPercent >= 0.5) return null;
|
|
3437
|
-
const
|
|
3438
|
-
const
|
|
3439
|
-
|
|
3440
|
-
|
|
3441
|
-
|
|
3432
|
+
const existingTypes = activeBosses.filter((boss) => boss.isActive && nestlingNames.includes(boss.name)).map((boss) => boss.name);
|
|
3433
|
+
const needSpawn = nestlingNames.filter(
|
|
3434
|
+
(name2) => !existingTypes.includes(name2)
|
|
3435
|
+
// 当前尚未存在
|
|
3436
|
+
);
|
|
3437
|
+
if (needSpawn.length === 0) {
|
|
3438
|
+
return {
|
|
3439
|
+
messages: [
|
|
3440
|
+
"🕳️ 【爆虫伏击】触发:生命值≤50%,但所有巢穴子代已存在,无需孵化",
|
|
3441
|
+
"🕳️ 【爆虫伏击】技能移除"
|
|
3442
|
+
],
|
|
3443
|
+
targetUpdates: {
|
|
3444
|
+
name: targetBoss.name,
|
|
3445
|
+
updates: { skillsRemoved: ["爆虫伏击"] }
|
|
3446
|
+
}
|
|
3447
|
+
};
|
|
3448
|
+
}
|
|
3449
|
+
const spawnMessages = needSpawn.map(
|
|
3450
|
+
(name2) => `🕳️ 【爆虫伏击】触发:孵化1只${name2}`
|
|
3451
|
+
);
|
|
3452
|
+
spawnMessages.push("🕳️ 【爆虫伏击】技能移除");
|
|
3442
3453
|
return {
|
|
3443
|
-
messages,
|
|
3454
|
+
messages: spawnMessages,
|
|
3444
3455
|
targetUpdates: {
|
|
3445
|
-
// 添加目标boss更新数据
|
|
3446
3456
|
name: targetBoss.name,
|
|
3447
|
-
updates: {
|
|
3448
|
-
skillsRemoved: ["爆虫伏击"]
|
|
3449
|
-
// 移除此技能
|
|
3450
|
-
}
|
|
3457
|
+
updates: { skillsRemoved: ["爆虫伏击"] }
|
|
3451
3458
|
},
|
|
3452
|
-
spawnNewBossMark:
|
|
3453
|
-
//
|
|
3459
|
+
spawnNewBossMark: needSpawn
|
|
3460
|
+
// 返回需要孵化的子代名称数组
|
|
3454
3461
|
};
|
|
3455
3462
|
}, "handleBurrowAmbush"),
|
|
3456
3463
|
// 虚弱喷吐 - 孵化场存活时减伤80%,死亡时增伤20%
|
|
@@ -3463,7 +3470,7 @@ var BattleEffectProcessor = {
|
|
|
3463
3470
|
if (hatcheryExists) {
|
|
3464
3471
|
effect = { nerfMultiplier: 0.8, messages: ["🤢 【虚弱喷吐】生效:孵化场存活,受到的伤害-80%"] };
|
|
3465
3472
|
} else {
|
|
3466
|
-
effect = { buffMultiplier: 0
|
|
3473
|
+
effect = { buffMultiplier: 0, messages: [] };
|
|
3467
3474
|
}
|
|
3468
3475
|
return effect;
|
|
3469
3476
|
}, "handleWeakeningSpit"),
|
|
@@ -3512,7 +3519,7 @@ var BattleEffectProcessor = {
|
|
|
3512
3519
|
}, "handleHealingSwarm"),
|
|
3513
3520
|
// 释放信息素 - 所有存活巢穴子代减伤20%
|
|
3514
3521
|
handleReleasePheromones: /* @__PURE__ */ __name(function(targetBoss) {
|
|
3515
|
-
if (!targetBoss.name.includes("巢穴雷兽") && !targetBoss.name.includes("巢穴战士") && !targetBoss.name.includes("巢穴甲虫") && !targetBoss.name.includes("孵化场")) return null;
|
|
3522
|
+
if (!targetBoss.name.includes("巢穴雷兽") && !targetBoss.name.includes("巢穴战士") && !targetBoss.name.includes("巢穴甲虫") && !targetBoss.name.includes("孵化场") && !targetBoss.name.includes("虫群女王")) return null;
|
|
3516
3523
|
const messages = [`🌬️ 【释放信息素】生效:受到的伤害-20%`];
|
|
3517
3524
|
const nerfMultiplier = 0.2;
|
|
3518
3525
|
return { messages, nerfMultiplier };
|
|
@@ -3591,7 +3598,30 @@ var BattleEffectProcessor = {
|
|
|
3591
3598
|
messages: [`🥚 【孵化】触发:成功孵化1只${randomBossName}`],
|
|
3592
3599
|
spawnNewBossMark: randomBossName
|
|
3593
3600
|
};
|
|
3594
|
-
}, "handleHatching")
|
|
3601
|
+
}, "handleHatching"),
|
|
3602
|
+
// M4AE脉冲步枪特殊效果处理
|
|
3603
|
+
handlePulseRifleEffect: /* @__PURE__ */ __name(function(weaponName, targetBoss) {
|
|
3604
|
+
const messages = [];
|
|
3605
|
+
let targetUpdates = null;
|
|
3606
|
+
let pulseGrenadeTriggered = false;
|
|
3607
|
+
if (weaponName !== "M4AE脉冲步枪") return null;
|
|
3608
|
+
if (Math.random() < 0.33) {
|
|
3609
|
+
pulseGrenadeTriggered = true;
|
|
3610
|
+
targetUpdates = {
|
|
3611
|
+
name: targetBoss.name,
|
|
3612
|
+
updates: {
|
|
3613
|
+
armorChange: -0.5
|
|
3614
|
+
// 负值表示削减护甲
|
|
3615
|
+
}
|
|
3616
|
+
};
|
|
3617
|
+
messages.push(`💥 【脉冲榴弹】触发:额外造成50%伤害,削减目标0.5点护甲值`);
|
|
3618
|
+
} else return null;
|
|
3619
|
+
return {
|
|
3620
|
+
pulseGrenadeTriggered,
|
|
3621
|
+
targetUpdates,
|
|
3622
|
+
messages
|
|
3623
|
+
};
|
|
3624
|
+
}, "handlePulseRifleEffect")
|
|
3595
3625
|
};
|
|
3596
3626
|
function applyPassiveEffects(targetBoss, activeBosses, weaponName, damage, hasCrit, ignoreRate, careerData) {
|
|
3597
3627
|
const messages = [];
|
|
@@ -3675,6 +3705,13 @@ function applyPassiveEffects(targetBoss, activeBosses, weaponName, damage, hasCr
|
|
|
3675
3705
|
updateStatsByName(solarFlareResult.targetUpdates.name, solarFlareResult.targetUpdates.updates);
|
|
3676
3706
|
}
|
|
3677
3707
|
}
|
|
3708
|
+
const pulseEffect = BattleEffectProcessor.handlePulseRifleEffect(weaponName, targetBoss);
|
|
3709
|
+
if (pulseEffect) {
|
|
3710
|
+
messages.push(...pulseEffect.messages);
|
|
3711
|
+
if (pulseEffect.targetUpdates) {
|
|
3712
|
+
updateStatsByName(pulseEffect.targetUpdates.name, pulseEffect.targetUpdates.updates);
|
|
3713
|
+
}
|
|
3714
|
+
}
|
|
3678
3715
|
const carpetBombResult = BattleEffectProcessor.handleCarpetBombing(targetBoss);
|
|
3679
3716
|
if (carpetBombResult) {
|
|
3680
3717
|
isolatedImmunityMark = carpetBombResult.tempMark || false;
|
|
@@ -3791,7 +3828,7 @@ function applyPassiveEffects(targetBoss, activeBosses, weaponName, damage, hasCr
|
|
|
3791
3828
|
// 6. 淬毒撕咬
|
|
3792
3829
|
{ effect: BattleEffectProcessor.handlePoisonedBite, args: [targetBoss] },
|
|
3793
3830
|
{ effect: BattleEffectProcessor.handleHealingSwarm, args: [targetBoss, activeBosses] },
|
|
3794
|
-
{ effect: BattleEffectProcessor.handleBurrowAmbush, args: [targetBoss] }
|
|
3831
|
+
{ effect: BattleEffectProcessor.handleBurrowAmbush, args: [targetBoss, activeBosses] }
|
|
3795
3832
|
];
|
|
3796
3833
|
for (const effectItem of healingEffects) {
|
|
3797
3834
|
processEffect(effectItem.effect, ...effectItem.args);
|
|
@@ -3836,9 +3873,6 @@ function applyPassiveEffects(targetBoss, activeBosses, weaponName, damage, hasCr
|
|
|
3836
3873
|
const radiationResult = BattleEffectProcessor.handleRadiationEffect(targetBoss, weaponName);
|
|
3837
3874
|
if (radiationResult) {
|
|
3838
3875
|
messages.push(...radiationResult.messages);
|
|
3839
|
-
if (radiationResult.buffMultiplier) {
|
|
3840
|
-
totalBuffMultiplier += radiationResult.buffMultiplier;
|
|
3841
|
-
}
|
|
3842
3876
|
if (radiationResult.targetUpdates) {
|
|
3843
3877
|
updateStatsByName(radiationResult.targetUpdates.name, radiationResult.targetUpdates.updates);
|
|
3844
3878
|
}
|
|
@@ -3875,6 +3909,9 @@ function applyPassiveEffects(targetBoss, activeBosses, weaponName, damage, hasCr
|
|
|
3875
3909
|
let adjustedNerfMultiplier = totalNerfMultiplier * (1 - ignoreRate);
|
|
3876
3910
|
const damageMultiplier = 1 + totalBuffMultiplier - adjustedNerfMultiplier;
|
|
3877
3911
|
finalDamage = damage * damageMultiplier;
|
|
3912
|
+
if (pulseEffect?.pulseGrenadeTriggered) {
|
|
3913
|
+
finalDamage *= 1.5;
|
|
3914
|
+
}
|
|
3878
3915
|
if (hasCrit) {
|
|
3879
3916
|
finalDamage *= 2;
|
|
3880
3917
|
}
|
|
@@ -3882,11 +3919,14 @@ function applyPassiveEffects(targetBoss, activeBosses, weaponName, damage, hasCr
|
|
|
3882
3919
|
if (careerData?.career === "猩红杀手" && weaponName === "侦察步枪") {
|
|
3883
3920
|
armorDamageReduction = 1;
|
|
3884
3921
|
}
|
|
3885
|
-
armor =
|
|
3922
|
+
armor = targetBoss.armor;
|
|
3886
3923
|
if (targetBoss.name === "测试假人") {
|
|
3887
3924
|
armor = targetBoss.armor;
|
|
3888
3925
|
}
|
|
3889
3926
|
const armorReduction = armorDamageReduction * armor;
|
|
3927
|
+
if (armorReduction !== 0) {
|
|
3928
|
+
messages.push(`护甲减伤: ${armorReduction.toFixed(2)}点`);
|
|
3929
|
+
}
|
|
3890
3930
|
finalDamage = Math.max(Math.round(finalDamage - armorReduction), 1);
|
|
3891
3931
|
const frostEvolutionResult = BattleEffectProcessor.handleFrostEvolution(
|
|
3892
3932
|
targetBoss,
|
|
@@ -4207,11 +4247,11 @@ var passiveConfig = {
|
|
|
4207
4247
|
},
|
|
4208
4248
|
"爆虫伏击": {
|
|
4209
4249
|
type: "",
|
|
4210
|
-
description: "血量低于50
|
|
4250
|
+
description: "血量低于50%时,立即孵化巢穴子代直至上限(生效后移除)"
|
|
4211
4251
|
},
|
|
4212
4252
|
"虚弱喷吐": {
|
|
4213
4253
|
type: "",
|
|
4214
|
-
description: "当孵化场存活时,受到的伤害降低80
|
|
4254
|
+
description: "当孵化场存活时,受到的伤害降低80%"
|
|
4215
4255
|
},
|
|
4216
4256
|
"治愈虫群": {
|
|
4217
4257
|
type: "",
|
|
@@ -4219,7 +4259,7 @@ var passiveConfig = {
|
|
|
4219
4259
|
},
|
|
4220
4260
|
"释放信息素": {
|
|
4221
4261
|
type: "",
|
|
4222
|
-
description: "
|
|
4262
|
+
description: "所有存活的异形受到的伤害降低20%"
|
|
4223
4263
|
},
|
|
4224
4264
|
"恐吓尖啸": {
|
|
4225
4265
|
type: "",
|
|
@@ -4438,6 +4478,7 @@ async function activateNextBossGroup(ctx, currentBossId = null) {
|
|
|
4438
4478
|
// 新增标签字段
|
|
4439
4479
|
skills: [...nextBossGroup.main.passive],
|
|
4440
4480
|
energy: nextBossGroup.main.maxEnergy,
|
|
4481
|
+
armor: nextBossGroup.main.armor,
|
|
4441
4482
|
groupId: nextBossGroup.id,
|
|
4442
4483
|
isActive: true,
|
|
4443
4484
|
respawnTime: /* @__PURE__ */ new Date()
|
|
@@ -4451,6 +4492,7 @@ async function activateNextBossGroup(ctx, currentBossId = null) {
|
|
|
4451
4492
|
// 新增标签字段
|
|
4452
4493
|
skills: [...minion.passive],
|
|
4453
4494
|
energy: minion.maxEnergy,
|
|
4495
|
+
armor: minion.armor,
|
|
4454
4496
|
groupId: nextBossGroup.id,
|
|
4455
4497
|
isActive: true,
|
|
4456
4498
|
respawnTime: /* @__PURE__ */ new Date()
|
|
@@ -4995,14 +5037,33 @@ async function calculateTotalDamage(ctx, session, config, equippedWeapon, target
|
|
|
4995
5037
|
__name(calculateTotalDamage, "calculateTotalDamage");
|
|
4996
5038
|
async function calculateCrit(ctx, handle, equippedWeapon, weaponName) {
|
|
4997
5039
|
let critRate = 0;
|
|
5040
|
+
const pityCounter = equippedWeapon?.pityCounter || 0;
|
|
4998
5041
|
const critSources = [];
|
|
5042
|
+
if (weaponName === "M4AE脉冲步枪") {
|
|
5043
|
+
return {
|
|
5044
|
+
hasCrit: false,
|
|
5045
|
+
critSources: []
|
|
5046
|
+
};
|
|
5047
|
+
}
|
|
5048
|
+
if (weaponName === "MK-4激光步枪" && pityCounter >= 3) {
|
|
5049
|
+
return {
|
|
5050
|
+
hasCrit: true,
|
|
5051
|
+
critSources: ["🔫 MK-4激光步枪:保底暴击"]
|
|
5052
|
+
};
|
|
5053
|
+
}
|
|
5054
|
+
if (equippedWeapon.installedMods?.includes("棱镜超载核心") && modConfig["棱镜超载核心"]?.exclusiveTo === weaponName && pityCounter >= 4) {
|
|
5055
|
+
return {
|
|
5056
|
+
hasCrit: true,
|
|
5057
|
+
critSources: ["⚙️ 棱镜超载核心模组:保底暴击"]
|
|
5058
|
+
};
|
|
5059
|
+
}
|
|
4999
5060
|
if (equippedWeapon.installedMods?.includes("棱镜水晶")) {
|
|
5000
5061
|
critRate += 10;
|
|
5001
|
-
critSources.push("
|
|
5062
|
+
critSources.push("⚙️ 棱镜水晶:暴击率+10%");
|
|
5002
5063
|
}
|
|
5003
5064
|
if (equippedWeapon.installedMods?.includes("棱镜超载核心") && modConfig["棱镜超载核心"]?.exclusiveTo === weaponName) {
|
|
5004
5065
|
critRate += 20;
|
|
5005
|
-
critSources.push("
|
|
5066
|
+
critSources.push("⚙️ 棱镜超载核心:暴击率+20%");
|
|
5006
5067
|
}
|
|
5007
5068
|
const [critRhythm] = await ctx.database.get("ggcevo_wish", {
|
|
5008
5069
|
handle,
|
|
@@ -5339,6 +5400,9 @@ async function handleScatterAttack(ctx, session, handle, config, equippedWeapon,
|
|
|
5339
5400
|
} else if (weaponName === "中子步枪") {
|
|
5340
5401
|
scatterEffectMessages.push("🔆 【中子步枪】触发散射攻击!");
|
|
5341
5402
|
scatterRatio = 1.2;
|
|
5403
|
+
} else if (weaponName === "DG-3电弧步枪") {
|
|
5404
|
+
scatterEffectMessages.push("🔆 【DG-3电弧步枪】触发散射攻击!");
|
|
5405
|
+
scatterRatio = 0.3;
|
|
5342
5406
|
}
|
|
5343
5407
|
for (const secondaryTarget of secondaryTargets) {
|
|
5344
5408
|
const damageResult = await calculateTotalDamage(
|
|
@@ -5418,11 +5482,14 @@ async function handleDeathTargets(ctx, deadTargets, killerName, killerHandle) {
|
|
|
5418
5482
|
"🏆 伤害排行榜奖励:",
|
|
5419
5483
|
...rewardMessages
|
|
5420
5484
|
);
|
|
5485
|
+
} else if (deadBoss.name === "巢穴雷兽" || deadBoss.name === "巢穴战士" || deadBoss.name === "巢穴甲虫") {
|
|
5486
|
+
await ctx.database.remove("ggcevo_boss", { name: deadBoss.name });
|
|
5421
5487
|
} else {
|
|
5422
|
-
await ctx.database.
|
|
5488
|
+
await ctx.database.upsert("ggcevo_boss", [{
|
|
5489
|
+
name: deadBoss.name,
|
|
5423
5490
|
isActive: false,
|
|
5424
5491
|
HP: 0
|
|
5425
|
-
});
|
|
5492
|
+
}], ["name"]);
|
|
5426
5493
|
}
|
|
5427
5494
|
}
|
|
5428
5495
|
return {
|
|
@@ -5598,6 +5665,10 @@ async function updateDatabaseWithStats(ctx, stats) {
|
|
|
5598
5665
|
const newEnergy = boss.energy + stats.energyChange;
|
|
5599
5666
|
updateData.energy = Math.max(0, Math.min(maxEnergy, newEnergy));
|
|
5600
5667
|
}
|
|
5668
|
+
if (stats.armorChange !== 0) {
|
|
5669
|
+
const newarmor = boss.armor + stats.armorChange;
|
|
5670
|
+
updateData.armor = newarmor;
|
|
5671
|
+
}
|
|
5601
5672
|
if (stats.skillStacksChanged !== 0) {
|
|
5602
5673
|
const newStacks = boss.skillStacks + stats.skillStacksChanged;
|
|
5603
5674
|
updateData.skillStacks = Math.max(0, Math.min(maxStacks, newStacks));
|
|
@@ -5650,8 +5721,8 @@ async function handleIgnoreReductionEffects(ctx, handle, weaponName, targetBoss)
|
|
|
5650
5721
|
ignoreEffects.push(1);
|
|
5651
5722
|
messages.push(`⚔️ 【光剑】武器效果:无视100%减伤效果`);
|
|
5652
5723
|
} else if (weaponName === "M4AE脉冲步枪") {
|
|
5653
|
-
ignoreEffects.push(0.
|
|
5654
|
-
messages.push(`🔫 【M4AE脉冲步枪】武器效果:无视
|
|
5724
|
+
ignoreEffects.push(0.5);
|
|
5725
|
+
messages.push(`🔫 【M4AE脉冲步枪】武器效果:无视50%减伤效果`);
|
|
5655
5726
|
} else if (weaponName === "粒子相位枪" && targetBoss?.tags.includes("护盾")) {
|
|
5656
5727
|
ignoreEffects.push(0.5);
|
|
5657
5728
|
messages.push(`⚡ 【粒子相位枪】武器效果:无视50%减伤效果`);
|
|
@@ -5719,31 +5790,37 @@ async function testAttackFunction(ctx, session, handle, config, equippedWeapon,
|
|
|
5719
5790
|
};
|
|
5720
5791
|
}
|
|
5721
5792
|
__name(testAttackFunction, "testAttackFunction");
|
|
5722
|
-
async function createNestlingBosses(ctx,
|
|
5723
|
-
|
|
5724
|
-
|
|
5725
|
-
for (const
|
|
5726
|
-
|
|
5727
|
-
|
|
5728
|
-
|
|
5729
|
-
|
|
5730
|
-
|
|
5731
|
-
|
|
5732
|
-
|
|
5733
|
-
|
|
5734
|
-
|
|
5735
|
-
|
|
5736
|
-
|
|
5737
|
-
|
|
5738
|
-
|
|
5739
|
-
|
|
5740
|
-
|
|
5741
|
-
|
|
5742
|
-
|
|
5743
|
-
|
|
5744
|
-
|
|
5745
|
-
|
|
5746
|
-
|
|
5793
|
+
async function createNestlingBosses(ctx, nestlingNames) {
|
|
5794
|
+
const names = Array.isArray(nestlingNames) ? nestlingNames : [nestlingNames];
|
|
5795
|
+
const createdBosses = [];
|
|
5796
|
+
for (const name2 of names) {
|
|
5797
|
+
let foundMinion = null;
|
|
5798
|
+
let groupId = null;
|
|
5799
|
+
for (const bossGroup of bossPool) {
|
|
5800
|
+
const minion = bossGroup.minions.find((m) => m.name === name2);
|
|
5801
|
+
if (minion) {
|
|
5802
|
+
foundMinion = minion;
|
|
5803
|
+
groupId = bossGroup.id;
|
|
5804
|
+
break;
|
|
5805
|
+
}
|
|
5806
|
+
}
|
|
5807
|
+
if (!foundMinion) {
|
|
5808
|
+
throw new Error(`未知的巢穴子代名称: ${name2}`);
|
|
5809
|
+
}
|
|
5810
|
+
const createdBoss = await ctx.database.create("ggcevo_boss", {
|
|
5811
|
+
name: foundMinion.name,
|
|
5812
|
+
type: foundMinion.type,
|
|
5813
|
+
HP: foundMinion.maxHP,
|
|
5814
|
+
tags: foundMinion.tags,
|
|
5815
|
+
skills: [...foundMinion.passive],
|
|
5816
|
+
energy: foundMinion.maxEnergy,
|
|
5817
|
+
groupId,
|
|
5818
|
+
isActive: true,
|
|
5819
|
+
respawnTime: /* @__PURE__ */ new Date()
|
|
5820
|
+
});
|
|
5821
|
+
createdBosses.push(createdBoss);
|
|
5822
|
+
}
|
|
5823
|
+
return createdBosses;
|
|
5747
5824
|
}
|
|
5748
5825
|
__name(createNestlingBosses, "createNestlingBosses");
|
|
5749
5826
|
|
|
@@ -5928,8 +6005,9 @@ function apply(ctx, config) {
|
|
|
5928
6005
|
modificationSlots: "unsigned",
|
|
5929
6006
|
installedMods: "list",
|
|
5930
6007
|
equipped: "boolean",
|
|
5931
|
-
comboCount: "unsigned"
|
|
6008
|
+
comboCount: "unsigned",
|
|
5932
6009
|
// 新增:记录连续攻击次数的计数器
|
|
6010
|
+
pityCounter: "unsigned"
|
|
5933
6011
|
}, {
|
|
5934
6012
|
primary: ["handle", "weaponId"]
|
|
5935
6013
|
});
|
|
@@ -5939,6 +6017,7 @@ function apply(ctx, config) {
|
|
|
5939
6017
|
type: "string",
|
|
5940
6018
|
HP: "unsigned",
|
|
5941
6019
|
energy: "unsigned",
|
|
6020
|
+
armor: "integer",
|
|
5942
6021
|
tags: "list",
|
|
5943
6022
|
skills: "list",
|
|
5944
6023
|
skillStacks: "unsigned",
|
|
@@ -6047,6 +6126,7 @@ function apply(ctx, config) {
|
|
|
6047
6126
|
const currentGroupId = group.groupId;
|
|
6048
6127
|
await ctx.database.remove("ggcevo_boss_damage", {});
|
|
6049
6128
|
await ctx.database.remove("ggcevo_boss", {});
|
|
6129
|
+
await ctx.database.set("ggcevo_weapons", {}, { comboCount: 0 });
|
|
6050
6130
|
const newBossGroup = await activateNextBossGroup(ctx, currentGroupId);
|
|
6051
6131
|
await ctx.broadcast(
|
|
6052
6132
|
groupId,
|
|
@@ -7973,7 +8053,8 @@ ${validTypes.join("、")}`;
|
|
|
7973
8053
|
level: 0,
|
|
7974
8054
|
modificationSlots: 1,
|
|
7975
8055
|
equipped: false,
|
|
7976
|
-
comboCount: 0
|
|
8056
|
+
comboCount: 0,
|
|
8057
|
+
pityCounter: 0
|
|
7977
8058
|
}], ["handle", "weaponId"]);
|
|
7978
8059
|
const equippedCount = await ctx.database.select("ggcevo_weapons").where({ handle, equipped: true }).execute((row) => import_koishi.$.count(row.weaponId));
|
|
7979
8060
|
if (equippedCount === 0) {
|
|
@@ -8414,6 +8495,21 @@ ${validTypes.join("、")}`;
|
|
|
8414
8495
|
}, {
|
|
8415
8496
|
comboCount: 0
|
|
8416
8497
|
});
|
|
8498
|
+
if (!primaryAttackResult.hasCrit) {
|
|
8499
|
+
await ctx.database.set("ggcevo_weapons", {
|
|
8500
|
+
handle,
|
|
8501
|
+
weaponId: equippedWeapon.weaponId
|
|
8502
|
+
}, {
|
|
8503
|
+
pityCounter: (equippedWeapon?.pityCounter || 0) + 1
|
|
8504
|
+
});
|
|
8505
|
+
} else {
|
|
8506
|
+
await ctx.database.set("ggcevo_weapons", {
|
|
8507
|
+
handle,
|
|
8508
|
+
weaponId: equippedWeapon.weaponId
|
|
8509
|
+
}, {
|
|
8510
|
+
pityCounter: 0
|
|
8511
|
+
});
|
|
8512
|
+
}
|
|
8417
8513
|
const resultMessage = buildResultMessage(
|
|
8418
8514
|
session,
|
|
8419
8515
|
weaponName,
|
|
@@ -8582,7 +8678,7 @@ ${testResult.passiveMessages.map((m) => `▸ ${m}`).join("\n")}`
|
|
|
8582
8678
|
if (bossGroup.main.maxEnergy > 0) {
|
|
8583
8679
|
result.push(`⚡ 能量:${mainBoss.energy}/1000`);
|
|
8584
8680
|
}
|
|
8585
|
-
result.push(`🛡️ 护甲:${
|
|
8681
|
+
result.push(`🛡️ 护甲:${mainBoss.armor || 0}`);
|
|
8586
8682
|
result.push(`🏷️ 标签:${mainBoss.tags?.join("、") || "无"}`);
|
|
8587
8683
|
if (mainBoss.radiationLayers > 0) {
|
|
8588
8684
|
result.push(`☢️ 辐射:${mainBoss.radiationLayers}层`);
|
|
@@ -8646,7 +8742,7 @@ ${testResult.passiveMessages.map((m) => `▸ ${m}`).join("\n")}`
|
|
|
8646
8742
|
if (minionConfig && minionConfig.maxEnergy > 0) {
|
|
8647
8743
|
minionInfo.push(`⚡ 能量:${minion.energy}/1000`);
|
|
8648
8744
|
}
|
|
8649
|
-
minionInfo.push(`🛡️ 护甲:${
|
|
8745
|
+
minionInfo.push(`🛡️ 护甲:${minion.armor || 0}`);
|
|
8650
8746
|
minionInfo.push(`🏷️ 标签:${minion.tags?.join("、") || "无"}`);
|
|
8651
8747
|
if (minion.radiationLayers > 0) {
|
|
8652
8748
|
minionInfo.push(`☢️ 辐射:${minion.radiationLayers}层`);
|
|
@@ -8711,6 +8807,7 @@ ${testResult.passiveMessages.map((m) => `▸ ${m}`).join("\n")}`
|
|
|
8711
8807
|
}
|
|
8712
8808
|
await ctx.database.remove("ggcevo_boss_damage", {});
|
|
8713
8809
|
await ctx.database.remove("ggcevo_boss", {});
|
|
8810
|
+
await ctx.database.set("ggcevo_weapons", {}, { comboCount: 0 });
|
|
8714
8811
|
await ctx.database.create("ggcevo_boss", {
|
|
8715
8812
|
name: bossConfig.main.name,
|
|
8716
8813
|
type: "主宰",
|
|
@@ -8718,6 +8815,7 @@ ${testResult.passiveMessages.map((m) => `▸ ${m}`).join("\n")}`
|
|
|
8718
8815
|
tags: bossConfig.main.tags,
|
|
8719
8816
|
skills: [...bossConfig.main.passive],
|
|
8720
8817
|
energy: bossConfig.main.maxEnergy,
|
|
8818
|
+
armor: bossConfig.main.armor,
|
|
8721
8819
|
groupId: groupid,
|
|
8722
8820
|
isActive: true,
|
|
8723
8821
|
respawnTime: /* @__PURE__ */ new Date()
|
|
@@ -8734,6 +8832,7 @@ ${testResult.passiveMessages.map((m) => `▸ ${m}`).join("\n")}`
|
|
|
8734
8832
|
tags: minion.tags,
|
|
8735
8833
|
skills: [...minion.passive],
|
|
8736
8834
|
energy: minion.maxEnergy,
|
|
8835
|
+
armor: minion.armor,
|
|
8737
8836
|
groupId: groupid,
|
|
8738
8837
|
isActive: true,
|
|
8739
8838
|
respawnTime: /* @__PURE__ */ new Date()
|
|
@@ -9382,7 +9481,8 @@ ${testResult.passiveMessages.map((m) => `▸ ${m}`).join("\n")}`
|
|
|
9382
9481
|
modificationSlots: 1,
|
|
9383
9482
|
installedMods: [],
|
|
9384
9483
|
equipped: false,
|
|
9385
|
-
comboCount: 0
|
|
9484
|
+
comboCount: 0,
|
|
9485
|
+
pityCounter: 0
|
|
9386
9486
|
});
|
|
9387
9487
|
const equippedCount = await ctx.database.select("ggcevo_weapons").where({ handle, equipped: true }).execute((row) => import_koishi.$.count(row.weaponId));
|
|
9388
9488
|
if (equippedCount === 0) {
|