koishi-plugin-ggcevo-game 1.5.4 → 1.5.6
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 +4 -0
- package/lib/boss/attackhandling.d.ts +2 -0
- package/lib/index.js +66 -42
- package/lib/tasks.d.ts +5 -5
- package/package.json +1 -1
|
@@ -419,6 +419,7 @@ export declare const BattleEffectProcessor: {
|
|
|
419
419
|
updates: Partial<BattleStatistics>;
|
|
420
420
|
} | null;
|
|
421
421
|
success: boolean;
|
|
422
|
+
drainFactor: number;
|
|
422
423
|
} | null;
|
|
423
424
|
handleWeaponLayerReduction: (targetBoss: any, weaponName: string, maxStatsForTarget: any) => {
|
|
424
425
|
messages: string[];
|
|
@@ -427,6 +428,7 @@ export declare const BattleEffectProcessor: {
|
|
|
427
428
|
updates: Partial<BattleStatistics>;
|
|
428
429
|
} | null;
|
|
429
430
|
reductionSuccess: boolean;
|
|
431
|
+
reductionAmount: number;
|
|
430
432
|
} | null;
|
|
431
433
|
handleToxicSaliva: (targetBoss: any) => {
|
|
432
434
|
nerfMultiplier: number;
|
|
@@ -656,4 +658,6 @@ export declare function applyPassiveEffects(targetBoss: any, activeBosses: any[]
|
|
|
656
658
|
spawnNewBossMarks: string[];
|
|
657
659
|
pulseGrenadeTriggered: boolean;
|
|
658
660
|
burnLayerAdded: boolean;
|
|
661
|
+
drainFactor: number;
|
|
662
|
+
reductionAmount: number;
|
|
659
663
|
};
|
|
@@ -15,6 +15,8 @@ export declare function handlePrimaryAttack(ctx: Context, session: any, handle:
|
|
|
15
15
|
arcApplied: boolean;
|
|
16
16
|
pulseGrenadeTriggered: boolean;
|
|
17
17
|
burnLayerAdded: boolean;
|
|
18
|
+
drainFactor: number;
|
|
19
|
+
reductionAmount: number;
|
|
18
20
|
}>;
|
|
19
21
|
export declare function handleScatterAttack(ctx: Context, session: any, handle: string, config: Config, equippedWeapon: any, targetBoss: any, weaponName: string, activeBosses: any[], careerData: any): Promise<{
|
|
20
22
|
scatterEffectMessages: string[];
|
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: "攻击时为目标附加[寒冷]效果,每层使目标受到的伤害提高1%(最多提高100%)",
|
|
152
152
|
price: 775,
|
|
153
153
|
redCrystalCost: 7,
|
|
154
154
|
isantiair: false,
|
|
@@ -351,7 +351,7 @@ var weaponConfig = {
|
|
|
351
351
|
damage: 80,
|
|
352
352
|
armorDamageReduction: -1,
|
|
353
353
|
description: "一件传奇武器",
|
|
354
|
-
specialeffect: "暴击率提高25%;连续
|
|
354
|
+
specialeffect: "暴击率提高25%;连续2次未暴击时,下次攻击必定暴击",
|
|
355
355
|
price: 6400,
|
|
356
356
|
redCrystalCost: 200,
|
|
357
357
|
isantiair: true,
|
|
@@ -745,10 +745,10 @@ var syndicatePirateConfig = [
|
|
|
745
745
|
},
|
|
746
746
|
{
|
|
747
747
|
professionName: "辛迪加财务经理",
|
|
748
|
-
effect: "每日签到能额外获得红晶;
|
|
748
|
+
effect: "每日签到能额外获得红晶; 仓库中每拥有20个红晶,每日签到能额外获得1个红晶(至多额外获得5个)",
|
|
749
749
|
requirements: "当月累计签到14天及以上",
|
|
750
750
|
Jobtransfer: true,
|
|
751
|
-
costredcrystal:
|
|
751
|
+
costredcrystal: 40
|
|
752
752
|
},
|
|
753
753
|
{
|
|
754
754
|
professionName: "计算机专家",
|
|
@@ -1172,17 +1172,17 @@ var Tasklist = {
|
|
|
1172
1172
|
id: 4,
|
|
1173
1173
|
type: "可重复任务",
|
|
1174
1174
|
target: 1,
|
|
1175
|
-
price:
|
|
1175
|
+
price: 40,
|
|
1176
1176
|
redCrystalCost: 0,
|
|
1177
|
-
condition: "
|
|
1177
|
+
condition: "使用【脉冲扰乱枪】攻击目标并成功减少其1层技能层数"
|
|
1178
1178
|
},
|
|
1179
1179
|
"能量消耗": {
|
|
1180
1180
|
id: 5,
|
|
1181
1181
|
type: "可重复任务",
|
|
1182
1182
|
target: 1,
|
|
1183
|
-
price:
|
|
1183
|
+
price: 40,
|
|
1184
1184
|
redCrystalCost: 0,
|
|
1185
|
-
condition: "使用【弧焊枪】或【DG-3
|
|
1185
|
+
condition: "使用【弧焊枪】或【DG-3电弧步枪】攻击目标并成功消耗其100能量"
|
|
1186
1186
|
},
|
|
1187
1187
|
"破甲先锋": {
|
|
1188
1188
|
id: 6,
|
|
@@ -1190,7 +1190,7 @@ var Tasklist = {
|
|
|
1190
1190
|
target: 1,
|
|
1191
1191
|
price: 200,
|
|
1192
1192
|
redCrystalCost: 0,
|
|
1193
|
-
condition: "使用【M4AE
|
|
1193
|
+
condition: "使用【M4AE脉冲步枪】攻击目标并成功削减其0.5护甲"
|
|
1194
1194
|
},
|
|
1195
1195
|
"烈火燎原": {
|
|
1196
1196
|
id: 7,
|
|
@@ -3148,11 +3148,11 @@ var BattleEffectProcessor = {
|
|
|
3148
3148
|
const messages = [];
|
|
3149
3149
|
let layerAdded = false;
|
|
3150
3150
|
const currentLayers = targetBoss.coldLayers || 0;
|
|
3151
|
-
const effectiveLayers = Math.min(currentLayers,
|
|
3152
|
-
const buffMultiplier = effectiveLayers * 0.
|
|
3151
|
+
const effectiveLayers = Math.min(currentLayers, 100);
|
|
3152
|
+
const buffMultiplier = effectiveLayers * 0.01;
|
|
3153
3153
|
if (effectiveLayers > 0) {
|
|
3154
|
-
messages.push(`❄️ 【寒冷】:当前${currentLayers}层,受到的伤害+${(effectiveLayers *
|
|
3155
|
-
if (currentLayers >
|
|
3154
|
+
messages.push(`❄️ 【寒冷】:当前${currentLayers}层,受到的伤害+${(effectiveLayers * 1).toFixed(1)}%`);
|
|
3155
|
+
if (currentLayers > 100) {
|
|
3156
3156
|
}
|
|
3157
3157
|
}
|
|
3158
3158
|
let targetUpdates = null;
|
|
@@ -3199,6 +3199,7 @@ var BattleEffectProcessor = {
|
|
|
3199
3199
|
}
|
|
3200
3200
|
};
|
|
3201
3201
|
}
|
|
3202
|
+
const drainFactor = drainValue / 100;
|
|
3202
3203
|
const weaponDisplayName = weaponName === "弧焊枪" ? "弧焊枪" : "DG-3电弧步枪";
|
|
3203
3204
|
if (success) {
|
|
3204
3205
|
messages.push(`⚡ 【${weaponDisplayName}】武器效果:消耗${drainValue}点能量`);
|
|
@@ -3206,7 +3207,8 @@ var BattleEffectProcessor = {
|
|
|
3206
3207
|
return {
|
|
3207
3208
|
messages,
|
|
3208
3209
|
targetUpdates,
|
|
3209
|
-
success
|
|
3210
|
+
success,
|
|
3211
|
+
drainFactor
|
|
3210
3212
|
};
|
|
3211
3213
|
}, "handleWeaponEnergyDrain"),
|
|
3212
3214
|
// 统一的武器层数减少处理函数
|
|
@@ -3238,7 +3240,8 @@ var BattleEffectProcessor = {
|
|
|
3238
3240
|
return {
|
|
3239
3241
|
messages,
|
|
3240
3242
|
targetUpdates,
|
|
3241
|
-
reductionSuccess
|
|
3243
|
+
reductionSuccess,
|
|
3244
|
+
reductionAmount
|
|
3242
3245
|
};
|
|
3243
3246
|
}, "handleWeaponLayerReduction"),
|
|
3244
3247
|
handleToxicSaliva: /* @__PURE__ */ __name(function(targetBoss) {
|
|
@@ -3889,19 +3892,18 @@ var BattleEffectProcessor = {
|
|
|
3889
3892
|
return null;
|
|
3890
3893
|
}
|
|
3891
3894
|
const currentStacks = targetBoss.skillStacks || 0;
|
|
3892
|
-
const
|
|
3893
|
-
if (
|
|
3895
|
+
const halfStacks = Math.floor(currentStacks / 2);
|
|
3896
|
+
if (halfStacks <= 0) {
|
|
3894
3897
|
return null;
|
|
3895
3898
|
}
|
|
3896
|
-
const healAmount =
|
|
3899
|
+
const healAmount = halfStacks * 5;
|
|
3897
3900
|
return {
|
|
3898
|
-
messages: [`🧬
|
|
3901
|
+
messages: [`🧬 【加快分化】生效:回复${healAmount}点生命值`],
|
|
3899
3902
|
targetUpdates: {
|
|
3900
3903
|
name: targetBoss.name,
|
|
3901
3904
|
updates: {
|
|
3902
|
-
hpChange: healAmount
|
|
3903
|
-
|
|
3904
|
-
// 消耗层数
|
|
3905
|
+
hpChange: healAmount
|
|
3906
|
+
// 不再消耗层数
|
|
3905
3907
|
}
|
|
3906
3908
|
}
|
|
3907
3909
|
};
|
|
@@ -4009,6 +4011,8 @@ function applyPassiveEffects(targetBoss, activeBosses, weaponName, damage, hasCr
|
|
|
4009
4011
|
let armor = 0;
|
|
4010
4012
|
let pulseGrenadeTriggered = false;
|
|
4011
4013
|
let burnLayerAdded = false;
|
|
4014
|
+
let drainFactor = 0;
|
|
4015
|
+
let reductionAmount = 0;
|
|
4012
4016
|
const weaponData = weaponConfig[weaponName] || { type: "" };
|
|
4013
4017
|
let doubleAstralWind = false;
|
|
4014
4018
|
let isolatedImmunityMark = false;
|
|
@@ -4309,6 +4313,7 @@ function applyPassiveEffects(targetBoss, activeBosses, weaponName, damage, hasCr
|
|
|
4309
4313
|
updateStatsByName(energyDrainResult.targetUpdates.name, energyDrainResult.targetUpdates.updates);
|
|
4310
4314
|
}
|
|
4311
4315
|
energyDrained = energyDrainResult.success || false;
|
|
4316
|
+
drainFactor = energyDrainResult.drainFactor;
|
|
4312
4317
|
}
|
|
4313
4318
|
const layerReduceResult = BattleEffectProcessor.handleWeaponLayerReduction(targetBoss, weaponName, maxStatsForTarget);
|
|
4314
4319
|
if (layerReduceResult) {
|
|
@@ -4317,6 +4322,7 @@ function applyPassiveEffects(targetBoss, activeBosses, weaponName, damage, hasCr
|
|
|
4317
4322
|
updateStatsByName(layerReduceResult.targetUpdates.name, layerReduceResult.targetUpdates.updates);
|
|
4318
4323
|
}
|
|
4319
4324
|
layerReduced = layerReduceResult.reductionSuccess || false;
|
|
4325
|
+
reductionAmount = layerReduceResult.reductionAmount;
|
|
4320
4326
|
}
|
|
4321
4327
|
let finalDamage = damage;
|
|
4322
4328
|
let adjustedNerfMultiplier = totalNerfMultiplier * (1 - ignoreRate);
|
|
@@ -4340,7 +4346,7 @@ function applyPassiveEffects(targetBoss, activeBosses, weaponName, damage, hasCr
|
|
|
4340
4346
|
const armorBonus = geneMutationStacks * 0.1;
|
|
4341
4347
|
armor += armorBonus;
|
|
4342
4348
|
if (armorBonus > 0) {
|
|
4343
|
-
messages.push(`【组织增生】生效:临时增加${armorBonus}点护甲`);
|
|
4349
|
+
messages.push(`【组织增生】生效:临时增加${armorBonus.toFixed(1)}点护甲`);
|
|
4344
4350
|
}
|
|
4345
4351
|
}
|
|
4346
4352
|
let armorDamageReduction = weaponData.armorDamageReduction || 0;
|
|
@@ -4433,8 +4439,10 @@ function applyPassiveEffects(targetBoss, activeBosses, weaponName, damage, hasCr
|
|
|
4433
4439
|
spawnNewBossMarks,
|
|
4434
4440
|
// +++ 新增生成标记 +++
|
|
4435
4441
|
pulseGrenadeTriggered,
|
|
4436
|
-
burnLayerAdded
|
|
4442
|
+
burnLayerAdded,
|
|
4437
4443
|
// 新增燃烧叠加标记
|
|
4444
|
+
drainFactor,
|
|
4445
|
+
reductionAmount
|
|
4438
4446
|
};
|
|
4439
4447
|
}
|
|
4440
4448
|
__name(applyPassiveEffects, "applyPassiveEffects");
|
|
@@ -4789,7 +4797,7 @@ var passiveConfig = {
|
|
|
4789
4797
|
derivedSkills: []
|
|
4790
4798
|
},
|
|
4791
4799
|
"加快分化": {
|
|
4792
|
-
description: "
|
|
4800
|
+
description: "每次受击回复X点血量(X为「基因变异」层数的一半并向下取整 x 5)",
|
|
4793
4801
|
belong: [],
|
|
4794
4802
|
derivedSkills: []
|
|
4795
4803
|
},
|
|
@@ -4902,10 +4910,20 @@ var ggcevoUpdates = [
|
|
|
4902
4910
|
`.trim()
|
|
4903
4911
|
},
|
|
4904
4912
|
{
|
|
4905
|
-
version: "1.5.
|
|
4913
|
+
version: "1.5.5",
|
|
4906
4914
|
time: "2025-06-28",
|
|
4907
4915
|
content: `
|
|
4908
4916
|
- 削弱了坏兄弟的加快分化基因技能
|
|
4917
|
+
- 雷达面罩价格下调至20红晶
|
|
4918
|
+
`.trim()
|
|
4919
|
+
},
|
|
4920
|
+
{
|
|
4921
|
+
version: "1.5.6",
|
|
4922
|
+
time: "2025-06-29",
|
|
4923
|
+
content: `
|
|
4924
|
+
- 重制了坏兄弟的分化基因技能
|
|
4925
|
+
- 重制了辛迪加海盗阵营的辛迪加财务经理职业,并提高其转职门槛
|
|
4926
|
+
- 增强了MK-4激光步枪暴击保底机制
|
|
4909
4927
|
`.trim()
|
|
4910
4928
|
}
|
|
4911
4929
|
];
|
|
@@ -5675,7 +5693,7 @@ async function calculateCrit(ctx, handle, equippedWeapon, weaponName) {
|
|
|
5675
5693
|
critSources: []
|
|
5676
5694
|
};
|
|
5677
5695
|
}
|
|
5678
|
-
if (weaponName === "MK-4激光步枪" && pityCounter >=
|
|
5696
|
+
if (weaponName === "MK-4激光步枪" && pityCounter >= 2) {
|
|
5679
5697
|
return {
|
|
5680
5698
|
hasCrit: true,
|
|
5681
5699
|
critSources: ["🔫 MK-4激光步枪:保底暴击"]
|
|
@@ -6065,7 +6083,9 @@ async function handlePrimaryAttack(ctx, session, handle, config, equippedWeapon,
|
|
|
6065
6083
|
pulseApplied: EffectProcessor.layerReduced,
|
|
6066
6084
|
arcApplied: EffectProcessor.energyDrained,
|
|
6067
6085
|
pulseGrenadeTriggered: EffectProcessor.pulseGrenadeTriggered,
|
|
6068
|
-
burnLayerAdded: EffectProcessor.burnLayerAdded
|
|
6086
|
+
burnLayerAdded: EffectProcessor.burnLayerAdded,
|
|
6087
|
+
drainFactor: EffectProcessor.drainFactor,
|
|
6088
|
+
reductionAmount: EffectProcessor.reductionAmount
|
|
6069
6089
|
};
|
|
6070
6090
|
}
|
|
6071
6091
|
__name(handlePrimaryAttack, "handlePrimaryAttack");
|
|
@@ -6118,10 +6138,10 @@ async function handleScatterAttack(ctx, session, handle, config, equippedWeapon,
|
|
|
6118
6138
|
taskUpdates.push({ taskId: 3, count: 1 });
|
|
6119
6139
|
}
|
|
6120
6140
|
if (EffectProcessor.layerReduced) {
|
|
6121
|
-
taskUpdates.push({ taskId: 4, count:
|
|
6141
|
+
taskUpdates.push({ taskId: 4, count: EffectProcessor.reductionAmount });
|
|
6122
6142
|
}
|
|
6123
6143
|
if (EffectProcessor.energyDrained) {
|
|
6124
|
-
taskUpdates.push({ taskId: 5, count:
|
|
6144
|
+
taskUpdates.push({ taskId: 5, count: EffectProcessor.drainFactor });
|
|
6125
6145
|
}
|
|
6126
6146
|
if (EffectProcessor.pulseGrenadeTriggered) {
|
|
6127
6147
|
taskUpdates.push({ taskId: 6, count: 1 });
|
|
@@ -7227,18 +7247,22 @@ ${itemDetails.join("\n")}`;
|
|
|
7227
7247
|
const finalPoints = Math.round(basePoints * (1 + totalBonus));
|
|
7228
7248
|
let redCrystal = 0;
|
|
7229
7249
|
if (careerData?.group === "辛迪加海盗" && careerData.career === "辛迪加财务经理") {
|
|
7230
|
-
if (monthlyDays < 7)
|
|
7231
|
-
|
|
7232
|
-
|
|
7233
|
-
|
|
7234
|
-
|
|
7235
|
-
|
|
7236
|
-
|
|
7237
|
-
|
|
7250
|
+
if (monthlyDays < 7) redCrystal = 1;
|
|
7251
|
+
else if (monthlyDays < 14) redCrystal = 2;
|
|
7252
|
+
else if (monthlyDays < 21) redCrystal = 3;
|
|
7253
|
+
else if (monthlyDays < 28) redCrystal = 4;
|
|
7254
|
+
else redCrystal = 5;
|
|
7255
|
+
const crystalStock = careerData.redcrystal || 0;
|
|
7256
|
+
const extraBonus = Math.min(Math.floor(crystalStock / 20), 5);
|
|
7257
|
+
if (extraBonus > 0) {
|
|
7258
|
+
redCrystal += extraBonus;
|
|
7259
|
+
messages.push(
|
|
7260
|
+
`🎖️ 辛迪加财务经理职业:+${redCrystal - extraBonus}枚红晶(基础)
|
|
7261
|
+
▸ 红晶储量加成:+${extraBonus}枚`
|
|
7262
|
+
);
|
|
7238
7263
|
} else {
|
|
7239
|
-
redCrystal
|
|
7264
|
+
messages.push(`🎖️ 辛迪加财务经理职业:+${redCrystal}枚红晶`);
|
|
7240
7265
|
}
|
|
7241
|
-
messages.push(`🎖️ 辛迪加财务经理职业:+${redCrystal}枚红晶`);
|
|
7242
7266
|
}
|
|
7243
7267
|
await ctx.database.withTransaction(async () => {
|
|
7244
7268
|
await ctx.database.upsert("ggcevo_sign", [{
|
|
@@ -9214,10 +9238,10 @@ ${validTypes.join("、")}`;
|
|
|
9214
9238
|
taskUpdates.push({ taskId: 3, count: 1 });
|
|
9215
9239
|
}
|
|
9216
9240
|
if (primaryAttackResult.pulseApplied) {
|
|
9217
|
-
taskUpdates.push({ taskId: 4, count:
|
|
9241
|
+
taskUpdates.push({ taskId: 4, count: primaryAttackResult.reductionAmount });
|
|
9218
9242
|
}
|
|
9219
9243
|
if (primaryAttackResult.arcApplied) {
|
|
9220
|
-
taskUpdates.push({ taskId: 5, count:
|
|
9244
|
+
taskUpdates.push({ taskId: 5, count: primaryAttackResult.drainFactor });
|
|
9221
9245
|
}
|
|
9222
9246
|
if (primaryAttackResult.pulseGrenadeTriggered) {
|
|
9223
9247
|
taskUpdates.push({ taskId: 6, count: 1 });
|
package/lib/tasks.d.ts
CHANGED
|
@@ -27,17 +27,17 @@ export declare const Tasklist: {
|
|
|
27
27
|
readonly id: 4;
|
|
28
28
|
readonly type: "可重复任务";
|
|
29
29
|
readonly target: 1;
|
|
30
|
-
readonly price:
|
|
30
|
+
readonly price: 40;
|
|
31
31
|
readonly redCrystalCost: 0;
|
|
32
|
-
readonly condition: "
|
|
32
|
+
readonly condition: "使用【脉冲扰乱枪】攻击目标并成功减少其1层技能层数";
|
|
33
33
|
};
|
|
34
34
|
readonly 能量消耗: {
|
|
35
35
|
readonly id: 5;
|
|
36
36
|
readonly type: "可重复任务";
|
|
37
37
|
readonly target: 1;
|
|
38
|
-
readonly price:
|
|
38
|
+
readonly price: 40;
|
|
39
39
|
readonly redCrystalCost: 0;
|
|
40
|
-
readonly condition: "使用【弧焊枪】或【DG-3
|
|
40
|
+
readonly condition: "使用【弧焊枪】或【DG-3电弧步枪】攻击目标并成功消耗其100能量";
|
|
41
41
|
};
|
|
42
42
|
readonly 破甲先锋: {
|
|
43
43
|
readonly id: 6;
|
|
@@ -45,7 +45,7 @@ export declare const Tasklist: {
|
|
|
45
45
|
readonly target: 1;
|
|
46
46
|
readonly price: 200;
|
|
47
47
|
readonly redCrystalCost: 0;
|
|
48
|
-
readonly condition: "使用【M4AE
|
|
48
|
+
readonly condition: "使用【M4AE脉冲步枪】攻击目标并成功削减其0.5护甲";
|
|
49
49
|
};
|
|
50
50
|
readonly 烈火燎原: {
|
|
51
51
|
readonly id: 7;
|