koishi-plugin-ggcevo-game 1.4.87 → 1.4.88
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 +10 -0
- package/lib/boss/attackhandling.d.ts +1 -0
- package/lib/database.d.ts +1 -0
- package/lib/index.js +69 -11
- package/lib/tasks.d.ts +9 -1
- package/package.json +1 -1
|
@@ -12,6 +12,7 @@ export interface BattleStatistics {
|
|
|
12
12
|
statusLayersChanged: number;
|
|
13
13
|
radiationLayersChange: number;
|
|
14
14
|
coldLayersChange: number;
|
|
15
|
+
burnLayersChanged: number;
|
|
15
16
|
lastWeaponName: string;
|
|
16
17
|
}
|
|
17
18
|
export declare const battleStatsMap: Record<string, BattleStatistics>;
|
|
@@ -577,6 +578,14 @@ export declare const BattleEffectProcessor: {
|
|
|
577
578
|
fusionExplosionTriggered: boolean;
|
|
578
579
|
messages: string[];
|
|
579
580
|
};
|
|
581
|
+
handleBurnEffect: (targetBoss: any, weaponName: string) => {
|
|
582
|
+
messages: string[];
|
|
583
|
+
targetUpdates: {
|
|
584
|
+
name: string;
|
|
585
|
+
updates: Partial<BattleStatistics>;
|
|
586
|
+
} | null;
|
|
587
|
+
burnLayerAdded: boolean;
|
|
588
|
+
} | null;
|
|
580
589
|
};
|
|
581
590
|
/**
|
|
582
591
|
* 统一处理所有被动效果(包含伤害修正、免疫检查、状态更新等)
|
|
@@ -596,4 +605,5 @@ export declare function applyPassiveEffects(targetBoss: any, activeBosses: any[]
|
|
|
596
605
|
bileDetonationTrigger: boolean;
|
|
597
606
|
spawnNewBossMarks: string[];
|
|
598
607
|
pulseGrenadeTriggered: boolean;
|
|
608
|
+
burnLayerAdded: boolean;
|
|
599
609
|
};
|
|
@@ -14,6 +14,7 @@ export declare function handlePrimaryAttack(ctx: Context, session: any, handle:
|
|
|
14
14
|
pulseApplied: boolean;
|
|
15
15
|
arcApplied: boolean;
|
|
16
16
|
pulseGrenadeTriggered: boolean;
|
|
17
|
+
burnLayerAdded: boolean;
|
|
17
18
|
}>;
|
|
18
19
|
export declare function handleScatterAttack(ctx: Context, session: any, handle: string, config: Config, equippedWeapon: any, targetBoss: any, weaponName: string, activeBosses: any[], careerData: any): Promise<{
|
|
19
20
|
scatterEffectMessages: string[];
|
package/lib/database.d.ts
CHANGED
package/lib/index.js
CHANGED
|
@@ -71,7 +71,7 @@ var weaponConfig = {
|
|
|
71
71
|
damage: 23,
|
|
72
72
|
armorDamageReduction: 0.25,
|
|
73
73
|
description: "基于热能的强大武器,烧烬一切",
|
|
74
|
-
specialeffect: "",
|
|
74
|
+
specialeffect: "攻击时为目标附加[燃烧]效果,每层使目标受到火焰伤害时额外造成5点伤害(至多额外造成100点伤害)",
|
|
75
75
|
price: 450,
|
|
76
76
|
redCrystalCost: 4,
|
|
77
77
|
isantiair: false,
|
|
@@ -363,10 +363,10 @@ var weaponConfig = {
|
|
|
363
363
|
id: 103,
|
|
364
364
|
type: "实弹武器",
|
|
365
365
|
category: "传奇武器",
|
|
366
|
-
damage:
|
|
366
|
+
damage: 90,
|
|
367
367
|
armorDamageReduction: 0,
|
|
368
368
|
description: "这是传说中的武器",
|
|
369
|
-
specialeffect: "",
|
|
369
|
+
specialeffect: "攻击时为目标附加[燃烧]效果,每层使目标受到火焰伤害时额外造成5点伤害(至多额外造成100点伤害)",
|
|
370
370
|
price: 6400,
|
|
371
371
|
redCrystalCost: 200,
|
|
372
372
|
isantiair: false,
|
|
@@ -740,7 +740,7 @@ var syndicatePirateConfig = [
|
|
|
740
740
|
},
|
|
741
741
|
{
|
|
742
742
|
professionName: "计算机专家",
|
|
743
|
-
effect: "黑市订购设备工具类享有50%折扣; 被动应战的PK
|
|
743
|
+
effect: "黑市订购设备工具类享有50%折扣; 被动应战的PK对战结果为失败时,不会损失金币;每日获得3枚红晶(前日每被PK一次,红晶数量-1,下限为1)",
|
|
744
744
|
requirements: "仓库中至少拥有一个黑市订购的设备工具类物品",
|
|
745
745
|
Jobtransfer: true,
|
|
746
746
|
costredcrystal: 30
|
|
@@ -768,7 +768,7 @@ var syndicatePirateConfig = [
|
|
|
768
768
|
},
|
|
769
769
|
{
|
|
770
770
|
professionName: "征募官",
|
|
771
|
-
effect: "",
|
|
771
|
+
effect: "购买DG-3电弧步枪(传奇)享有50%的折扣",
|
|
772
772
|
requirements: "",
|
|
773
773
|
Jobtransfer: false,
|
|
774
774
|
costredcrystal: 10
|
|
@@ -1156,9 +1156,17 @@ var Tasklist = {
|
|
|
1156
1156
|
id: 6,
|
|
1157
1157
|
type: "可重复任务",
|
|
1158
1158
|
target: 1,
|
|
1159
|
-
price:
|
|
1159
|
+
price: 200,
|
|
1160
1160
|
redCrystalCost: 0,
|
|
1161
1161
|
condition: "使用【M4AE脉冲步枪】攻击目标并成功削减其护甲"
|
|
1162
|
+
},
|
|
1163
|
+
"烈火燎原": {
|
|
1164
|
+
id: 7,
|
|
1165
|
+
type: "可重复任务",
|
|
1166
|
+
target: 1,
|
|
1167
|
+
price: 50,
|
|
1168
|
+
redCrystalCost: 0,
|
|
1169
|
+
condition: "使用【焚烧枪】或【龙息霰弹枪】攻击目标并成功增加其燃烧层数"
|
|
1162
1170
|
}
|
|
1163
1171
|
};
|
|
1164
1172
|
|
|
@@ -1576,6 +1584,7 @@ function updateStatsByName(name2, updates) {
|
|
|
1576
1584
|
statusLayersChanged: 0,
|
|
1577
1585
|
radiationLayersChange: 0,
|
|
1578
1586
|
coldLayersChange: 0,
|
|
1587
|
+
burnLayersChanged: 0,
|
|
1579
1588
|
lastWeaponName: ""
|
|
1580
1589
|
};
|
|
1581
1590
|
battleStatsMap[name2] = {
|
|
@@ -1590,6 +1599,7 @@ function updateStatsByName(name2, updates) {
|
|
|
1590
1599
|
radiationLayersChange: existing.radiationLayersChange + (updates.radiationLayersChange ?? 0),
|
|
1591
1600
|
coldLayersChange: existing.coldLayersChange + (updates.coldLayersChange ?? 0),
|
|
1592
1601
|
armorChange: existing.armorChange + (updates.armorChange ?? 0),
|
|
1602
|
+
burnLayersChanged: existing.burnLayersChanged + (updates.burnLayersChanged ?? 0),
|
|
1593
1603
|
// 数组类型:合并(新增内容追加到现有数组)
|
|
1594
1604
|
tagsAdded: [...existing.tagsAdded, ...updates.tagsAdded ?? []],
|
|
1595
1605
|
tagsRemoved: [...existing.tagsRemoved, ...updates.tagsRemoved ?? []],
|
|
@@ -3657,7 +3667,30 @@ var BattleEffectProcessor = {
|
|
|
3657
3667
|
};
|
|
3658
3668
|
}
|
|
3659
3669
|
return null;
|
|
3660
|
-
}, "handleFusionCannonEffect")
|
|
3670
|
+
}, "handleFusionCannonEffect"),
|
|
3671
|
+
// 在 BattleEffectProcessor 对象中添加以下函数
|
|
3672
|
+
handleBurnEffect: /* @__PURE__ */ __name(function(targetBoss, weaponName) {
|
|
3673
|
+
const messages = [];
|
|
3674
|
+
let burnLayerAdded = false;
|
|
3675
|
+
const isBurnWeapon = weaponName === "焚烧枪" || weaponName === "龙息霰弹枪";
|
|
3676
|
+
if (!isBurnWeapon) {
|
|
3677
|
+
return null;
|
|
3678
|
+
}
|
|
3679
|
+
const targetUpdates = {
|
|
3680
|
+
name: targetBoss.name,
|
|
3681
|
+
updates: {
|
|
3682
|
+
burnLayersChanged: 1
|
|
3683
|
+
// 燃烧层数+1
|
|
3684
|
+
}
|
|
3685
|
+
};
|
|
3686
|
+
burnLayerAdded = true;
|
|
3687
|
+
messages.push(`🔥 【${weaponName}】武器效果:目标获得1层「燃烧」`);
|
|
3688
|
+
return {
|
|
3689
|
+
messages,
|
|
3690
|
+
targetUpdates,
|
|
3691
|
+
burnLayerAdded
|
|
3692
|
+
};
|
|
3693
|
+
}, "handleBurnEffect")
|
|
3661
3694
|
};
|
|
3662
3695
|
function applyPassiveEffects(targetBoss, activeBosses, weaponName, damage, hasCrit, ignoreRate, careerData, equippedWeapon) {
|
|
3663
3696
|
const messages = [];
|
|
@@ -3672,6 +3705,7 @@ function applyPassiveEffects(targetBoss, activeBosses, weaponName, damage, hasCr
|
|
|
3672
3705
|
let spawnNewBossMarks = [];
|
|
3673
3706
|
let armor = 0;
|
|
3674
3707
|
let pulseGrenadeTriggered = false;
|
|
3708
|
+
let burnLayerAdded = false;
|
|
3675
3709
|
const weaponData = weaponConfig[weaponName] || { type: "" };
|
|
3676
3710
|
let doubleAstralWind = false;
|
|
3677
3711
|
let isolatedImmunityMark = false;
|
|
@@ -3754,6 +3788,14 @@ function applyPassiveEffects(targetBoss, activeBosses, weaponName, damage, hasCr
|
|
|
3754
3788
|
if (fusionEffect) {
|
|
3755
3789
|
messages.push(...fusionEffect.messages);
|
|
3756
3790
|
}
|
|
3791
|
+
const burnEffectResult = BattleEffectProcessor.handleBurnEffect(targetBoss, weaponName);
|
|
3792
|
+
if (burnEffectResult) {
|
|
3793
|
+
messages.push(...burnEffectResult.messages);
|
|
3794
|
+
if (burnEffectResult.targetUpdates) {
|
|
3795
|
+
updateStatsByName(burnEffectResult.targetUpdates.name, burnEffectResult.targetUpdates.updates);
|
|
3796
|
+
}
|
|
3797
|
+
burnLayerAdded = burnEffectResult.burnLayerAdded;
|
|
3798
|
+
}
|
|
3757
3799
|
const carpetBombResult = BattleEffectProcessor.handleCarpetBombing(targetBoss);
|
|
3758
3800
|
if (carpetBombResult) {
|
|
3759
3801
|
isolatedImmunityMark = carpetBombResult.tempMark || false;
|
|
@@ -3957,6 +3999,11 @@ function applyPassiveEffects(targetBoss, activeBosses, weaponName, damage, hasCr
|
|
|
3957
3999
|
if (hasCrit) {
|
|
3958
4000
|
finalDamage *= 2;
|
|
3959
4001
|
}
|
|
4002
|
+
const burnDamage = (targetBoss?.burnLayers || 0) * 5;
|
|
4003
|
+
if (burnDamage > 0) {
|
|
4004
|
+
messages.push(`🔥 【燃烧】效果造成额外${burnDamage}点伤害`);
|
|
4005
|
+
}
|
|
4006
|
+
finalDamage += burnDamage;
|
|
3960
4007
|
let armorDamageReduction = weaponData.armorDamageReduction || 0;
|
|
3961
4008
|
if (careerData?.career === "猩红杀手" && weaponName === "侦察步枪") {
|
|
3962
4009
|
armorDamageReduction = 1;
|
|
@@ -4046,7 +4093,9 @@ function applyPassiveEffects(targetBoss, activeBosses, weaponName, damage, hasCr
|
|
|
4046
4093
|
bileDetonationTrigger,
|
|
4047
4094
|
spawnNewBossMarks,
|
|
4048
4095
|
// +++ 新增生成标记 +++
|
|
4049
|
-
pulseGrenadeTriggered
|
|
4096
|
+
pulseGrenadeTriggered,
|
|
4097
|
+
burnLayerAdded
|
|
4098
|
+
// 新增燃烧叠加标记
|
|
4050
4099
|
};
|
|
4051
4100
|
}
|
|
4052
4101
|
__name(applyPassiveEffects, "applyPassiveEffects");
|
|
@@ -5434,7 +5483,8 @@ async function handlePrimaryAttack(ctx, session, handle, config, equippedWeapon,
|
|
|
5434
5483
|
bileStacks: EffectProcessor.bileDetonationTrigger,
|
|
5435
5484
|
pulseApplied: EffectProcessor.layerReduced,
|
|
5436
5485
|
arcApplied: EffectProcessor.energyDrained,
|
|
5437
|
-
pulseGrenadeTriggered: EffectProcessor.pulseGrenadeTriggered
|
|
5486
|
+
pulseGrenadeTriggered: EffectProcessor.pulseGrenadeTriggered,
|
|
5487
|
+
burnLayerAdded: EffectProcessor.burnLayerAdded
|
|
5438
5488
|
};
|
|
5439
5489
|
}
|
|
5440
5490
|
__name(handlePrimaryAttack, "handlePrimaryAttack");
|
|
@@ -5493,6 +5543,9 @@ async function handleScatterAttack(ctx, session, handle, config, equippedWeapon,
|
|
|
5493
5543
|
if (EffectProcessor.pulseGrenadeTriggered) {
|
|
5494
5544
|
taskUpdates.push({ taskId: 6, count: 1 });
|
|
5495
5545
|
}
|
|
5546
|
+
if (EffectProcessor.burnLayerAdded) {
|
|
5547
|
+
taskUpdates.push({ taskId: 7, count: 1 });
|
|
5548
|
+
}
|
|
5496
5549
|
const isDead = currentHP <= 0;
|
|
5497
5550
|
scatterEffectMessages.push(...EffectProcessor.messages.map((m) => ` 对 ${secondaryTarget.name} ${m}`));
|
|
5498
5551
|
if (isDead) {
|
|
@@ -5739,6 +5792,9 @@ async function updateDatabaseWithStats(ctx, stats) {
|
|
|
5739
5792
|
if (stats.coldLayersChange !== 0) {
|
|
5740
5793
|
updateData.coldLayers = Math.max(0, boss.coldLayers + stats.coldLayersChange);
|
|
5741
5794
|
}
|
|
5795
|
+
if (stats.burnLayersChanged !== 0) {
|
|
5796
|
+
updateData.burnLayers = Math.max(0, boss.burnLayers + stats.burnLayersChanged);
|
|
5797
|
+
}
|
|
5742
5798
|
if (stats.tagsAdded.length > 0 || stats.tagsRemoved.length > 0) {
|
|
5743
5799
|
updateData.tags = [
|
|
5744
5800
|
...boss.tags.filter((tag) => !stats.tagsRemoved.includes(tag)),
|
|
@@ -6078,10 +6134,10 @@ function apply(ctx, config) {
|
|
|
6078
6134
|
skills: "list",
|
|
6079
6135
|
skillStacks: "unsigned",
|
|
6080
6136
|
skillStatus: "unsigned",
|
|
6081
|
-
// 新增:表示技能当前的状态值
|
|
6082
6137
|
statusLayers: "unsigned",
|
|
6083
6138
|
radiationLayers: "unsigned",
|
|
6084
6139
|
coldLayers: "unsigned",
|
|
6140
|
+
burnLayers: "unsigned",
|
|
6085
6141
|
lastWeaponName: "string",
|
|
6086
6142
|
isActive: "boolean",
|
|
6087
6143
|
respawnTime: "timestamp"
|
|
@@ -8558,6 +8614,9 @@ ${validTypes.join("、")}`;
|
|
|
8558
8614
|
if (primaryAttackResult.pulseGrenadeTriggered) {
|
|
8559
8615
|
taskUpdates.push({ taskId: 6, count: 1 });
|
|
8560
8616
|
}
|
|
8617
|
+
if (primaryAttackResult.burnLayerAdded) {
|
|
8618
|
+
taskUpdates.push({ taskId: 7, count: 1 });
|
|
8619
|
+
}
|
|
8561
8620
|
if (scatterResult && scatterResult.taskUpdates) {
|
|
8562
8621
|
scatterResult.taskUpdates.forEach((update) => {
|
|
8563
8622
|
taskUpdates.push(update);
|
|
@@ -10071,7 +10130,6 @@ ${Spacestationtechnology.map((t) => t.techname).join("、")}`;
|
|
|
10071
10130
|
`✨ 您获得了传奇武器:${awardedWeapon.name}`,
|
|
10072
10131
|
`🔧 武器类型:${awardedWeapon.type}`,
|
|
10073
10132
|
`⚔️ 基础伤害:${awardedWeapon.damage}`,
|
|
10074
|
-
`🔮 特殊效果:${awardedWeapon.specialeffect || "无"}`,
|
|
10075
10133
|
`📖 描述:${awardedWeapon.description}`
|
|
10076
10134
|
].join("\n");
|
|
10077
10135
|
});
|
package/lib/tasks.d.ts
CHANGED
|
@@ -43,8 +43,16 @@ export declare const Tasklist: {
|
|
|
43
43
|
readonly id: 6;
|
|
44
44
|
readonly type: "可重复任务";
|
|
45
45
|
readonly target: 1;
|
|
46
|
-
readonly price:
|
|
46
|
+
readonly price: 200;
|
|
47
47
|
readonly redCrystalCost: 0;
|
|
48
48
|
readonly condition: "使用【M4AE脉冲步枪】攻击目标并成功削减其护甲";
|
|
49
49
|
};
|
|
50
|
+
readonly 烈火燎原: {
|
|
51
|
+
readonly id: 7;
|
|
52
|
+
readonly type: "可重复任务";
|
|
53
|
+
readonly target: 1;
|
|
54
|
+
readonly price: 50;
|
|
55
|
+
readonly redCrystalCost: 0;
|
|
56
|
+
readonly condition: "使用【焚烧枪】或【龙息霰弹枪】攻击目标并成功增加其燃烧层数";
|
|
57
|
+
};
|
|
50
58
|
};
|