koishi-plugin-ggcevo-game 1.5.0 → 1.5.2
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 +50 -0
- package/lib/index.js +324 -19
- package/package.json +1 -1
|
@@ -586,6 +586,56 @@ export declare const BattleEffectProcessor: {
|
|
|
586
586
|
} | null;
|
|
587
587
|
burnLayerAdded: boolean;
|
|
588
588
|
} | null;
|
|
589
|
+
handleGeneMutation: (targetBoss: any) => {
|
|
590
|
+
messages: string[];
|
|
591
|
+
targetUpdates: {
|
|
592
|
+
name: string;
|
|
593
|
+
updates: Partial<BattleStatistics>;
|
|
594
|
+
} | null;
|
|
595
|
+
tempMark: boolean;
|
|
596
|
+
} | null;
|
|
597
|
+
handleRedundancyOptimization: (targetBoss: any, weaponName: string) => {
|
|
598
|
+
isImmune: boolean;
|
|
599
|
+
messages: string[];
|
|
600
|
+
targetUpdates: {
|
|
601
|
+
name: string;
|
|
602
|
+
updates: Partial<BattleStatistics>;
|
|
603
|
+
} | null;
|
|
604
|
+
} | null;
|
|
605
|
+
handleEnvironmentalAdaptation: (targetBoss: any, weaponName: string) => {
|
|
606
|
+
isImmune: boolean;
|
|
607
|
+
messages: string[];
|
|
608
|
+
targetUpdates: {
|
|
609
|
+
name: string;
|
|
610
|
+
updates: Partial<BattleStatistics>;
|
|
611
|
+
} | null;
|
|
612
|
+
} | null;
|
|
613
|
+
handleAcceleratedDifferentiation: (targetBoss: any) => {
|
|
614
|
+
messages: string[];
|
|
615
|
+
targetUpdates: {
|
|
616
|
+
name: string;
|
|
617
|
+
updates: Partial<BattleStatistics>;
|
|
618
|
+
} | null;
|
|
619
|
+
} | null;
|
|
620
|
+
handleEnduranceEnhancement: (targetBoss: any) => {
|
|
621
|
+
messages: string[];
|
|
622
|
+
nerfMultiplier: number;
|
|
623
|
+
} | null;
|
|
624
|
+
handleThickenedCarapace: (targetBoss: any) => {
|
|
625
|
+
nerfMultiplier: number;
|
|
626
|
+
messages: string[];
|
|
627
|
+
} | null;
|
|
628
|
+
handleAcceleratedMetabolism: (targetBoss: any) => {
|
|
629
|
+
messages: string[];
|
|
630
|
+
targetUpdates: {
|
|
631
|
+
name: string;
|
|
632
|
+
updates: Partial<BattleStatistics>;
|
|
633
|
+
} | null;
|
|
634
|
+
} | null;
|
|
635
|
+
handleBiologicalSignatureImitation: (targetBoss: any) => {
|
|
636
|
+
isImmune: boolean;
|
|
637
|
+
messages: string[];
|
|
638
|
+
} | null;
|
|
589
639
|
};
|
|
590
640
|
/**
|
|
591
641
|
* 统一处理所有被动效果(包含伤害修正、免疫检查、状态更新等)
|
package/lib/index.js
CHANGED
|
@@ -1600,12 +1600,12 @@ var bossPool = [
|
|
|
1600
1600
|
main: {
|
|
1601
1601
|
name: "坏兄弟",
|
|
1602
1602
|
type: "主宰",
|
|
1603
|
-
maxHP:
|
|
1603
|
+
maxHP: 25e3,
|
|
1604
1604
|
maxShield: 0,
|
|
1605
1605
|
maxEnergy: 1e3,
|
|
1606
1606
|
armor: 3,
|
|
1607
1607
|
shieldArmor: 0,
|
|
1608
|
-
maxStacks:
|
|
1608
|
+
maxStacks: 100,
|
|
1609
1609
|
tags: ["生物", "异形"],
|
|
1610
1610
|
passive: ["基因变异"]
|
|
1611
1611
|
},
|
|
@@ -3737,7 +3737,260 @@ var BattleEffectProcessor = {
|
|
|
3737
3737
|
targetUpdates,
|
|
3738
3738
|
burnLayerAdded
|
|
3739
3739
|
};
|
|
3740
|
-
}, "handleBurnEffect")
|
|
3740
|
+
}, "handleBurnEffect"),
|
|
3741
|
+
// 基因变异处理函数
|
|
3742
|
+
handleGeneMutation: /* @__PURE__ */ __name(function(targetBoss) {
|
|
3743
|
+
const messages = [];
|
|
3744
|
+
let targetUpdates = null;
|
|
3745
|
+
let tempMark = false;
|
|
3746
|
+
if (!targetBoss.skills.includes("基因变异")) {
|
|
3747
|
+
return null;
|
|
3748
|
+
}
|
|
3749
|
+
tempMark = true;
|
|
3750
|
+
const currentStatusLayers = targetBoss.statusLayers || 0;
|
|
3751
|
+
targetUpdates = {
|
|
3752
|
+
name: targetBoss.name,
|
|
3753
|
+
updates: {
|
|
3754
|
+
statusLayersChanged: 1,
|
|
3755
|
+
// statusLayers +1
|
|
3756
|
+
skillStacksChanged: 1
|
|
3757
|
+
// skillStacks +1
|
|
3758
|
+
}
|
|
3759
|
+
};
|
|
3760
|
+
messages.push(`🧬 【基因变异】生效:获得1层「基因变异」`);
|
|
3761
|
+
const energyGain = 100;
|
|
3762
|
+
targetUpdates.updates.energyChange = energyGain;
|
|
3763
|
+
messages.push(`🧬 【基因变异】生效:回复${energyGain}点能量`);
|
|
3764
|
+
if ((currentStatusLayers + 1) % 3 === 0) {
|
|
3765
|
+
const geneSkills = targetBoss.skills.filter((skill) => [
|
|
3766
|
+
"优化冗余片段",
|
|
3767
|
+
"开天眼",
|
|
3768
|
+
"环境适应",
|
|
3769
|
+
"加快分化",
|
|
3770
|
+
"耐力强化",
|
|
3771
|
+
"稳定DNA",
|
|
3772
|
+
"增厚甲壳",
|
|
3773
|
+
"质粒增殖",
|
|
3774
|
+
"加速代谢",
|
|
3775
|
+
"组织增生",
|
|
3776
|
+
"模仿生物签名"
|
|
3777
|
+
].includes(skill));
|
|
3778
|
+
const geneSkillCount = geneSkills.length;
|
|
3779
|
+
if (geneSkillCount >= 4) {
|
|
3780
|
+
targetUpdates.updates.statusLayersChanged = -(currentStatusLayers + 1);
|
|
3781
|
+
targetUpdates.updates.skillsRemoved = [...geneSkills];
|
|
3782
|
+
messages.push(`🧬 【基因变异】触发:移除所有基因技能`);
|
|
3783
|
+
} else {
|
|
3784
|
+
const availableSkills = [
|
|
3785
|
+
"优化冗余片段",
|
|
3786
|
+
"开天眼",
|
|
3787
|
+
"环境适应",
|
|
3788
|
+
"加快分化",
|
|
3789
|
+
"耐力强化",
|
|
3790
|
+
"稳定DNA",
|
|
3791
|
+
"增厚甲壳",
|
|
3792
|
+
"质粒增殖",
|
|
3793
|
+
"加速代谢",
|
|
3794
|
+
"组织增生",
|
|
3795
|
+
"模仿生物签名"
|
|
3796
|
+
].filter((skill) => !targetBoss.skills.includes(skill));
|
|
3797
|
+
if (availableSkills.length > 0) {
|
|
3798
|
+
const randomIndex = Math.floor(Math.random() * availableSkills.length);
|
|
3799
|
+
const newSkill = availableSkills[randomIndex];
|
|
3800
|
+
const updates = targetUpdates.updates;
|
|
3801
|
+
updates.skillsAdded = updates.skillsAdded || [];
|
|
3802
|
+
updates.skillsAdded.push(newSkill);
|
|
3803
|
+
messages.push(`🧬 【基因变异】触发:获得基因技能「${newSkill}」`);
|
|
3804
|
+
}
|
|
3805
|
+
}
|
|
3806
|
+
}
|
|
3807
|
+
return {
|
|
3808
|
+
messages,
|
|
3809
|
+
targetUpdates,
|
|
3810
|
+
tempMark
|
|
3811
|
+
};
|
|
3812
|
+
}, "handleGeneMutation"),
|
|
3813
|
+
// 优化冗余片段处理(免疫辐射伤害)
|
|
3814
|
+
handleRedundancyOptimization: /* @__PURE__ */ __name(function(targetBoss, weaponName) {
|
|
3815
|
+
const messages = [];
|
|
3816
|
+
if (!targetBoss.skills.includes("优化冗余片段")) {
|
|
3817
|
+
return null;
|
|
3818
|
+
}
|
|
3819
|
+
const isRadiationDamage = weaponName === "伽马枪";
|
|
3820
|
+
if (!isRadiationDamage) {
|
|
3821
|
+
return null;
|
|
3822
|
+
}
|
|
3823
|
+
if (targetBoss.radiationLayers > 0) {
|
|
3824
|
+
const updates = {
|
|
3825
|
+
radiationLayersChange: -(targetBoss.radiationLayers + 2)
|
|
3826
|
+
};
|
|
3827
|
+
return {
|
|
3828
|
+
isImmune: true,
|
|
3829
|
+
messages: [`🧬 【优化冗余片段】生效:免疫辐射伤害并清空所有辐射层数`],
|
|
3830
|
+
targetUpdates: {
|
|
3831
|
+
name: targetBoss.name,
|
|
3832
|
+
updates
|
|
3833
|
+
}
|
|
3834
|
+
};
|
|
3835
|
+
}
|
|
3836
|
+
return {
|
|
3837
|
+
isImmune: true,
|
|
3838
|
+
messages: [`🧬 【优化冗余片段】生效:免疫辐射伤害`],
|
|
3839
|
+
targetUpdates: null
|
|
3840
|
+
};
|
|
3841
|
+
}, "handleRedundancyOptimization"),
|
|
3842
|
+
// 环境适应处理(免疫火焰和寒冷伤害,任意攻击都会清空寒冷/燃烧层数)
|
|
3843
|
+
handleEnvironmentalAdaptation: /* @__PURE__ */ __name(function(targetBoss, weaponName) {
|
|
3844
|
+
const messages = [];
|
|
3845
|
+
if (!targetBoss.skills.includes("环境适应")) {
|
|
3846
|
+
return null;
|
|
3847
|
+
}
|
|
3848
|
+
const isFireDamage = weaponName === "焚烧枪";
|
|
3849
|
+
const isColdDamage = weaponName === "零度之下";
|
|
3850
|
+
const updates = {};
|
|
3851
|
+
let clearMessage = "";
|
|
3852
|
+
if (targetBoss.burnLayers > 0) {
|
|
3853
|
+
updates.burnLayersChanged = -(targetBoss.burnLayers + 1);
|
|
3854
|
+
clearMessage += `清空所有燃烧层数`;
|
|
3855
|
+
}
|
|
3856
|
+
if (targetBoss.coldLayers > 0) {
|
|
3857
|
+
updates.coldLayersChange = -(targetBoss.coldLayers + 1);
|
|
3858
|
+
if (clearMessage) clearMessage += "和";
|
|
3859
|
+
clearMessage += `清空所有寒冷层数`;
|
|
3860
|
+
}
|
|
3861
|
+
let isImmune = false;
|
|
3862
|
+
let immuneMessage = "";
|
|
3863
|
+
if (isFireDamage || isColdDamage) {
|
|
3864
|
+
isImmune = true;
|
|
3865
|
+
immuneMessage = `免疫${isFireDamage ? "火焰" : "寒冷"}伤害`;
|
|
3866
|
+
}
|
|
3867
|
+
let fullMessage = `🧬 【环境适应】生效:`;
|
|
3868
|
+
if (immuneMessage && clearMessage) {
|
|
3869
|
+
fullMessage += `${immuneMessage}并${clearMessage}`;
|
|
3870
|
+
} else if (immuneMessage) {
|
|
3871
|
+
fullMessage += immuneMessage;
|
|
3872
|
+
} else if (clearMessage) {
|
|
3873
|
+
fullMessage += clearMessage;
|
|
3874
|
+
} else {
|
|
3875
|
+
return null;
|
|
3876
|
+
}
|
|
3877
|
+
return {
|
|
3878
|
+
isImmune,
|
|
3879
|
+
messages: [fullMessage],
|
|
3880
|
+
targetUpdates: Object.keys(updates).length > 0 ? {
|
|
3881
|
+
name: targetBoss.name,
|
|
3882
|
+
updates
|
|
3883
|
+
} : null
|
|
3884
|
+
};
|
|
3885
|
+
}, "handleEnvironmentalAdaptation"),
|
|
3886
|
+
// 加快分化处理(回复生命值)
|
|
3887
|
+
handleAcceleratedDifferentiation: /* @__PURE__ */ __name(function(targetBoss) {
|
|
3888
|
+
if (!targetBoss.skills.includes("加快分化")) {
|
|
3889
|
+
return null;
|
|
3890
|
+
}
|
|
3891
|
+
const geneStacks = targetBoss.skillStacks || 0;
|
|
3892
|
+
if (geneStacks === 0) {
|
|
3893
|
+
return null;
|
|
3894
|
+
}
|
|
3895
|
+
const healAmount = geneStacks * 10;
|
|
3896
|
+
return {
|
|
3897
|
+
messages: [`🧬 【加快分化】生效:回复${healAmount}点生命值`],
|
|
3898
|
+
targetUpdates: {
|
|
3899
|
+
name: targetBoss.name,
|
|
3900
|
+
updates: {
|
|
3901
|
+
hpChange: healAmount
|
|
3902
|
+
}
|
|
3903
|
+
}
|
|
3904
|
+
};
|
|
3905
|
+
}, "handleAcceleratedDifferentiation"),
|
|
3906
|
+
// 耐力强化处理(能量回复和减伤)
|
|
3907
|
+
handleEnduranceEnhancement: /* @__PURE__ */ __name(function(targetBoss) {
|
|
3908
|
+
if (!targetBoss.skills.includes("耐力强化")) {
|
|
3909
|
+
return null;
|
|
3910
|
+
}
|
|
3911
|
+
const messages = [];
|
|
3912
|
+
let nerfMultiplier = 0;
|
|
3913
|
+
const currentEnergy = targetBoss.energy || 0;
|
|
3914
|
+
const maxEnergy = getMaxEnergyByName(targetBoss.name);
|
|
3915
|
+
const energyPercent = maxEnergy > 0 ? currentEnergy / maxEnergy : 0;
|
|
3916
|
+
if (energyPercent >= 0.8) {
|
|
3917
|
+
nerfMultiplier = 0.8;
|
|
3918
|
+
messages.push(`🧬 【耐力强化】生效:能量≥80%,受到的伤害-80%`);
|
|
3919
|
+
} else if (energyPercent >= 0.5) {
|
|
3920
|
+
nerfMultiplier = 0.5;
|
|
3921
|
+
messages.push(`🧬 【耐力强化】生效:能量≥50%,受到的伤害-50%`);
|
|
3922
|
+
} else if (energyPercent >= 0.3) {
|
|
3923
|
+
nerfMultiplier = 0.3;
|
|
3924
|
+
messages.push(`🧬 【耐力强化】生效:能量≥30%,受到的伤害-30%`);
|
|
3925
|
+
}
|
|
3926
|
+
return {
|
|
3927
|
+
messages,
|
|
3928
|
+
nerfMultiplier
|
|
3929
|
+
};
|
|
3930
|
+
}, "handleEnduranceEnhancement"),
|
|
3931
|
+
// 增厚甲壳处理(减伤)
|
|
3932
|
+
handleThickenedCarapace: /* @__PURE__ */ __name(function(targetBoss) {
|
|
3933
|
+
if (!targetBoss.skills.includes("增厚甲壳")) {
|
|
3934
|
+
return null;
|
|
3935
|
+
}
|
|
3936
|
+
const geneStacks = targetBoss.skillStacks || 0;
|
|
3937
|
+
const nerfMultiplier = geneStacks * 0.05;
|
|
3938
|
+
if (nerfMultiplier === 0) {
|
|
3939
|
+
return null;
|
|
3940
|
+
}
|
|
3941
|
+
return {
|
|
3942
|
+
nerfMultiplier,
|
|
3943
|
+
messages: [`🧬 【增厚甲壳】生效:受到的伤害-${(nerfMultiplier * 100).toFixed(0)}%`]
|
|
3944
|
+
};
|
|
3945
|
+
}, "handleThickenedCarapace"),
|
|
3946
|
+
// 加速代谢处理(额外增加基因变异层数)
|
|
3947
|
+
handleAcceleratedMetabolism: /* @__PURE__ */ __name(function(targetBoss) {
|
|
3948
|
+
if (!targetBoss.skills.includes("加速代谢")) {
|
|
3949
|
+
return null;
|
|
3950
|
+
}
|
|
3951
|
+
const geneSkillsCount = targetBoss.skills.filter((skill) => [
|
|
3952
|
+
"优化冗余片段",
|
|
3953
|
+
"开天眼",
|
|
3954
|
+
"环境适应",
|
|
3955
|
+
"加快分化",
|
|
3956
|
+
"耐力强化",
|
|
3957
|
+
"稳定DNA",
|
|
3958
|
+
"增厚甲壳",
|
|
3959
|
+
"质粒增殖",
|
|
3960
|
+
"加速代谢",
|
|
3961
|
+
"组织增生",
|
|
3962
|
+
"模仿生物签名"
|
|
3963
|
+
].includes(skill)).length;
|
|
3964
|
+
if (geneSkillsCount > 0) {
|
|
3965
|
+
return {
|
|
3966
|
+
messages: [`🧬 【加速代谢】生效:当前拥有${geneSkillsCount}个基因技能,额外增加${geneSkillsCount}层基因变异`],
|
|
3967
|
+
targetUpdates: {
|
|
3968
|
+
name: targetBoss.name,
|
|
3969
|
+
updates: {
|
|
3970
|
+
skillStacksChanged: geneSkillsCount
|
|
3971
|
+
}
|
|
3972
|
+
}
|
|
3973
|
+
};
|
|
3974
|
+
}
|
|
3975
|
+
return null;
|
|
3976
|
+
}, "handleAcceleratedMetabolism"),
|
|
3977
|
+
// 模仿生物签名处理(概率免疫伤害)
|
|
3978
|
+
handleBiologicalSignatureImitation: /* @__PURE__ */ __name(function(targetBoss) {
|
|
3979
|
+
if (!targetBoss.skills.includes("模仿生物签名")) {
|
|
3980
|
+
return null;
|
|
3981
|
+
}
|
|
3982
|
+
const geneStacks = targetBoss.skillStacks || 0;
|
|
3983
|
+
const baseChance = 0.05;
|
|
3984
|
+
const stackBonus = geneStacks * 0.01;
|
|
3985
|
+
const totalChance = Math.min(baseChance + stackBonus, 0.99);
|
|
3986
|
+
if (Math.random() < totalChance) {
|
|
3987
|
+
return {
|
|
3988
|
+
isImmune: true,
|
|
3989
|
+
messages: [`🧬 【模仿生物签名】生效:${(totalChance * 100).toFixed(1)}%概率免疫本次伤害`]
|
|
3990
|
+
};
|
|
3991
|
+
}
|
|
3992
|
+
return null;
|
|
3993
|
+
}, "handleBiologicalSignatureImitation")
|
|
3741
3994
|
};
|
|
3742
3995
|
function applyPassiveEffects(targetBoss, activeBosses, weaponName, damage, hasCrit, ignoreRate, careerData, equippedWeapon) {
|
|
3743
3996
|
const messages = [];
|
|
@@ -3795,6 +4048,16 @@ function applyPassiveEffects(targetBoss, activeBosses, weaponName, damage, hasCr
|
|
|
3795
4048
|
}
|
|
3796
4049
|
];
|
|
3797
4050
|
const fireImmuneEffects = [];
|
|
4051
|
+
const conditionImmuneEffects = [
|
|
4052
|
+
{
|
|
4053
|
+
effect: BattleEffectProcessor.handleRedundancyOptimization,
|
|
4054
|
+
args: [targetBoss, weaponName]
|
|
4055
|
+
},
|
|
4056
|
+
{
|
|
4057
|
+
effect: BattleEffectProcessor.handleEnvironmentalAdaptation,
|
|
4058
|
+
args: [targetBoss, weaponName]
|
|
4059
|
+
}
|
|
4060
|
+
];
|
|
3798
4061
|
const chanceImmuneEffects = [
|
|
3799
4062
|
{
|
|
3800
4063
|
effect: BattleEffectProcessor.handleDeadlyHit,
|
|
@@ -3807,9 +4070,13 @@ function applyPassiveEffects(targetBoss, activeBosses, weaponName, damage, hasCr
|
|
|
3807
4070
|
{
|
|
3808
4071
|
effect: BattleEffectProcessor.handleAncientOmen,
|
|
3809
4072
|
args: [targetBoss, weaponData]
|
|
4073
|
+
},
|
|
4074
|
+
{
|
|
4075
|
+
effect: BattleEffectProcessor.handleBiologicalSignatureImitation,
|
|
4076
|
+
args: [targetBoss]
|
|
3810
4077
|
}
|
|
3811
4078
|
];
|
|
3812
|
-
const allImmuneEffects = [...coldImmuneEffects, ...fireImmuneEffects, ...chanceImmuneEffects];
|
|
4079
|
+
const allImmuneEffects = [...coldImmuneEffects, ...fireImmuneEffects, ...chanceImmuneEffects, ...conditionImmuneEffects];
|
|
3813
4080
|
for (const immuneEffect of allImmuneEffects) {
|
|
3814
4081
|
const result = processEffect(immuneEffect.effect, ...immuneEffect.args);
|
|
3815
4082
|
if (result?.isImmune) immune = true;
|
|
@@ -3851,6 +4118,14 @@ function applyPassiveEffects(targetBoss, activeBosses, weaponName, damage, hasCr
|
|
|
3851
4118
|
}
|
|
3852
4119
|
messages.push(...carpetBombResult.messages);
|
|
3853
4120
|
}
|
|
4121
|
+
const geneMutationResult = BattleEffectProcessor.handleGeneMutation(targetBoss);
|
|
4122
|
+
if (geneMutationResult) {
|
|
4123
|
+
messages.push(...geneMutationResult.messages);
|
|
4124
|
+
if (geneMutationResult.targetUpdates) {
|
|
4125
|
+
updateStatsByName(geneMutationResult.targetUpdates.name, geneMutationResult.targetUpdates.updates);
|
|
4126
|
+
}
|
|
4127
|
+
isolatedImmunityMark = geneMutationResult.tempMark;
|
|
4128
|
+
}
|
|
3854
4129
|
const damageAdjustEffects = [
|
|
3855
4130
|
// 单参数效果
|
|
3856
4131
|
{ effect: BattleEffectProcessor.handleWeakForm, args: [targetBoss] },
|
|
@@ -3878,7 +4153,10 @@ function applyPassiveEffects(targetBoss, activeBosses, weaponName, damage, hasCr
|
|
|
3878
4153
|
{ effect: BattleEffectProcessor.handleHunterAlien, args: [targetBoss, activeBosses, weaponName] },
|
|
3879
4154
|
{ effect: BattleEffectProcessor.handleHiveMind, args: [targetBoss, activeBosses] },
|
|
3880
4155
|
{ effect: BattleEffectProcessor.handleReleasePheromones, args: [targetBoss] },
|
|
3881
|
-
{ effect: BattleEffectProcessor.handleWeakeningSpit, args: [targetBoss, activeBosses] }
|
|
4156
|
+
{ effect: BattleEffectProcessor.handleWeakeningSpit, args: [targetBoss, activeBosses] },
|
|
4157
|
+
{ effect: BattleEffectProcessor.handleThickenedCarapace, args: [targetBoss] },
|
|
4158
|
+
{ effect: BattleEffectProcessor.handleEnduranceEnhancement, args: [targetBoss] },
|
|
4159
|
+
{ effect: BattleEffectProcessor.handleAcceleratedMetabolism, args: [targetBoss] }
|
|
3882
4160
|
];
|
|
3883
4161
|
for (const effectItem of damageAdjustEffects) {
|
|
3884
4162
|
const result = processEffect(effectItem.effect, ...effectItem.args);
|
|
@@ -3959,7 +4237,8 @@ function applyPassiveEffects(targetBoss, activeBosses, weaponName, damage, hasCr
|
|
|
3959
4237
|
// 6. 淬毒撕咬
|
|
3960
4238
|
{ effect: BattleEffectProcessor.handlePoisonedBite, args: [targetBoss] },
|
|
3961
4239
|
{ effect: BattleEffectProcessor.handleHealingSwarm, args: [targetBoss, activeBosses] },
|
|
3962
|
-
{ effect: BattleEffectProcessor.handleBurrowAmbush, args: [targetBoss, activeBosses] }
|
|
4240
|
+
{ effect: BattleEffectProcessor.handleBurrowAmbush, args: [targetBoss, activeBosses] },
|
|
4241
|
+
{ effect: BattleEffectProcessor.handleAcceleratedDifferentiation, args: [targetBoss] }
|
|
3963
4242
|
];
|
|
3964
4243
|
for (const effectItem of healingEffects) {
|
|
3965
4244
|
processEffect(effectItem.effect, ...effectItem.args);
|
|
@@ -4053,11 +4332,19 @@ function applyPassiveEffects(targetBoss, activeBosses, weaponName, damage, hasCr
|
|
|
4053
4332
|
}
|
|
4054
4333
|
finalDamage += burnDamage;
|
|
4055
4334
|
}
|
|
4335
|
+
if (targetBoss.skills && targetBoss.skills.includes("组织增生")) {
|
|
4336
|
+
const geneMutationStacks = targetBoss?.skillStacks || 0;
|
|
4337
|
+
const armorBonus = geneMutationStacks;
|
|
4338
|
+
armor += armorBonus;
|
|
4339
|
+
if (armorBonus > 0) {
|
|
4340
|
+
messages.push(`【组织增生】生效:临时增加${armorBonus}点护甲`);
|
|
4341
|
+
}
|
|
4342
|
+
}
|
|
4056
4343
|
let armorDamageReduction = weaponData.armorDamageReduction || 0;
|
|
4057
4344
|
if (careerData?.career === "猩红杀手" && weaponName === "侦察步枪") {
|
|
4058
4345
|
armorDamageReduction = 1;
|
|
4059
4346
|
}
|
|
4060
|
-
armor
|
|
4347
|
+
armor += targetBoss.armor - targetBoss.radiationLayers * 0.05;
|
|
4061
4348
|
const armorReduction = armorDamageReduction * armor;
|
|
4062
4349
|
if (armorReduction !== 0) {
|
|
4063
4350
|
messages.push(`护甲减伤: ${armorReduction.toFixed(2)}点`);
|
|
@@ -4467,7 +4754,7 @@ var passiveConfig = {
|
|
|
4467
4754
|
derivedSkills: []
|
|
4468
4755
|
},
|
|
4469
4756
|
"基因变异": {
|
|
4470
|
-
description: "移除孤立无援状态;每次受击叠加1
|
|
4757
|
+
description: "移除孤立无援状态;每次受击叠加1层「基因变异」(上限100层);每次受击回复100点能量;每受击3次随机获得1个基因技能,累计获得4个基因后再次触发则移除全部基因技能",
|
|
4471
4758
|
belong: ["坏兄弟"],
|
|
4472
4759
|
derivedSkills: [
|
|
4473
4760
|
"优化冗余片段",
|
|
@@ -4519,17 +4806,17 @@ var passiveConfig = {
|
|
|
4519
4806
|
derivedSkills: []
|
|
4520
4807
|
},
|
|
4521
4808
|
"质粒增殖": {
|
|
4522
|
-
description: "
|
|
4809
|
+
description: "免疫脉冲手雷",
|
|
4523
4810
|
belong: [],
|
|
4524
4811
|
derivedSkills: []
|
|
4525
4812
|
},
|
|
4526
4813
|
"加速代谢": {
|
|
4527
|
-
description: "每次受击叠加X层「基因变异」(X
|
|
4814
|
+
description: "每次受击叠加X层「基因变异」(X为当前拥有的基因技能数量)",
|
|
4528
4815
|
belong: [],
|
|
4529
4816
|
derivedSkills: []
|
|
4530
4817
|
},
|
|
4531
4818
|
"组织增生": {
|
|
4532
|
-
description: "
|
|
4819
|
+
description: "每层「基因变异」使护甲值临时提高1点",
|
|
4533
4820
|
belong: [],
|
|
4534
4821
|
derivedSkills: []
|
|
4535
4822
|
},
|
|
@@ -4899,7 +5186,13 @@ async function applyItemEffect(ctx, session, handle, itemConfig2, target) {
|
|
|
4899
5186
|
success: false,
|
|
4900
5187
|
message: "无法找到指定的目标。"
|
|
4901
5188
|
};
|
|
4902
|
-
if (targetboss.
|
|
5189
|
+
if (targetboss.skills.includes("开天眼")) {
|
|
5190
|
+
return {
|
|
5191
|
+
success: false,
|
|
5192
|
+
message: `目标免疫闪光弹,无法使用此物品。`
|
|
5193
|
+
};
|
|
5194
|
+
}
|
|
5195
|
+
if (targetboss.tags.includes("建筑") || targetboss.tags.includes("重型") || targetboss.skills.includes("开天眼")) {
|
|
4903
5196
|
return {
|
|
4904
5197
|
success: false,
|
|
4905
5198
|
message: `目标${target}拥有"${targetboss.tags.includes("建筑") ? "建筑" : "重型"}"标签,无法使用此物品。`
|
|
@@ -4933,6 +5226,12 @@ async function applyItemEffect(ctx, session, handle, itemConfig2, target) {
|
|
|
4933
5226
|
name: target,
|
|
4934
5227
|
isActive: true
|
|
4935
5228
|
});
|
|
5229
|
+
if (targetboss.skills.includes("质粒增殖")) {
|
|
5230
|
+
return {
|
|
5231
|
+
success: false,
|
|
5232
|
+
message: `目标免疫脉冲手雷,无法使用此物品。`
|
|
5233
|
+
};
|
|
5234
|
+
}
|
|
4936
5235
|
if (!targetboss || targetboss?.energy === 0) return {
|
|
4937
5236
|
success: false,
|
|
4938
5237
|
message: "您无法对没有能量的目标使用。"
|
|
@@ -5309,11 +5608,17 @@ async function calculateTotalDamage(ctx, session, config, equippedWeapon, target
|
|
|
5309
5608
|
const levelBonusRate = isLegendary ? 0.05 : 0.1;
|
|
5310
5609
|
const baseDamage = weaponData.damage * (1 + levelBonusRate * equippedWeapon.level);
|
|
5311
5610
|
effectMessage.push(`🔫 ${weaponName} Lv.${equippedWeapon.level}:基础伤害${baseDamage.toFixed(1)}`);
|
|
5312
|
-
|
|
5313
|
-
|
|
5314
|
-
if (
|
|
5315
|
-
|
|
5316
|
-
|
|
5611
|
+
let tagMultiplier = 1;
|
|
5612
|
+
let tagAdditive = 0;
|
|
5613
|
+
if (targetBoss.skills && targetBoss.skills.includes("稳定DNA")) {
|
|
5614
|
+
effectMessage.push(`🧬 稳定DNA:目标免疫标签伤害加成`);
|
|
5615
|
+
} else {
|
|
5616
|
+
tagAdditive = await calculateTagMultiplier(weaponData, finalTags, equippedWeapon);
|
|
5617
|
+
tagMultiplier = 1 + tagAdditive;
|
|
5618
|
+
if (tagAdditive !== 0) {
|
|
5619
|
+
const sign = tagAdditive >= 0 ? "+" : "";
|
|
5620
|
+
effectMessage.push(`📌 标签加成:攻击伤害${sign}${Math.round(tagAdditive * 100)}%`);
|
|
5621
|
+
}
|
|
5317
5622
|
}
|
|
5318
5623
|
const { totalModAdd, modMessages } = calculateModifiers(equippedWeapon, weaponName);
|
|
5319
5624
|
effectMessage.push(...modMessages);
|
|
@@ -9123,7 +9428,7 @@ ${testResult.passiveMessages.map((m) => `▸ ${m}`).join("\n")}`
|
|
|
9123
9428
|
} else {
|
|
9124
9429
|
result.push("➤ 无");
|
|
9125
9430
|
}
|
|
9126
|
-
const countingSkill = mainBoss.skills?.find((s) => ["岗哨机枪", "吸血唾液", "灼烧粘液", "光影之刃", "毒性唾液"].includes(s));
|
|
9431
|
+
const countingSkill = mainBoss.skills?.find((s) => ["岗哨机枪", "吸血唾液", "灼烧粘液", "光影之刃", "毒性唾液", "基因变异"].includes(s));
|
|
9127
9432
|
if (countingSkill) {
|
|
9128
9433
|
result.push(`📈 ${countingSkill}:${mainBoss.skillStacks}层`);
|
|
9129
9434
|
}
|
|
@@ -9190,7 +9495,7 @@ ${testResult.passiveMessages.map((m) => `▸ ${m}`).join("\n")}`
|
|
|
9190
9495
|
} else {
|
|
9191
9496
|
minionInfo.push("➤ 无");
|
|
9192
9497
|
}
|
|
9193
|
-
const minionCountingSkill = minion.skills?.find((s) => ["岗哨机枪", "吸血唾液", "灼烧粘液", "光影之刃", "毒性唾液"].includes(s));
|
|
9498
|
+
const minionCountingSkill = minion.skills?.find((s) => ["岗哨机枪", "吸血唾液", "灼烧粘液", "光影之刃", "毒性唾液", "基因变异"].includes(s));
|
|
9194
9499
|
if (minionCountingSkill) {
|
|
9195
9500
|
minionInfo.push(`📈 ${minionCountingSkill}:${minion.skillStacks}层`);
|
|
9196
9501
|
}
|