koishi-plugin-ggcevo-game 1.6.66 → 1.6.68
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 +1 -1
- package/lib/index.js +31 -68
- package/lib/utils.d.ts +0 -1
- package/package.json +1 -1
|
@@ -585,7 +585,7 @@ export declare const BattleEffectProcessor: {
|
|
|
585
585
|
fusionExplosionTriggered: boolean;
|
|
586
586
|
messages: string[];
|
|
587
587
|
};
|
|
588
|
-
handleBurnEffect: (targetBoss: any, weaponName: string, equippedWeapon: any) => {
|
|
588
|
+
handleBurnEffect: (targetBoss: any, weaponName: string, equippedWeapon: any, isImmuneFire: boolean) => {
|
|
589
589
|
messages: string[];
|
|
590
590
|
targetUpdates: {
|
|
591
591
|
name: string;
|
package/lib/index.js
CHANGED
|
@@ -3950,9 +3950,12 @@ var BattleEffectProcessor = {
|
|
|
3950
3950
|
return null;
|
|
3951
3951
|
}, "handleFusionCannonEffect"),
|
|
3952
3952
|
// 在 BattleEffectProcessor 对象中添加以下函数
|
|
3953
|
-
handleBurnEffect: /* @__PURE__ */ __name(function(targetBoss, weaponName, equippedWeapon) {
|
|
3953
|
+
handleBurnEffect: /* @__PURE__ */ __name(function(targetBoss, weaponName, equippedWeapon, isImmuneFire) {
|
|
3954
3954
|
const messages = [];
|
|
3955
3955
|
let burnLayerAdded = false;
|
|
3956
|
+
if (isImmuneFire) {
|
|
3957
|
+
return null;
|
|
3958
|
+
}
|
|
3956
3959
|
const isBurnWeapon = weaponName === "焚烧枪" || weaponName === "龙息霰弹枪";
|
|
3957
3960
|
if (!isBurnWeapon) {
|
|
3958
3961
|
return null;
|
|
@@ -4413,7 +4416,7 @@ function applyPassiveEffects(targetBoss, activeBosses, weaponName, damage, hasCr
|
|
|
4413
4416
|
if (fusionEffect) {
|
|
4414
4417
|
messages.push(...fusionEffect.messages);
|
|
4415
4418
|
}
|
|
4416
|
-
const burnEffectResult = BattleEffectProcessor.handleBurnEffect(targetBoss, weaponName, equippedWeapon);
|
|
4419
|
+
const burnEffectResult = BattleEffectProcessor.handleBurnEffect(targetBoss, weaponName, equippedWeapon, isImmuneFire);
|
|
4417
4420
|
if (burnEffectResult) {
|
|
4418
4421
|
messages.push(...burnEffectResult.messages);
|
|
4419
4422
|
if (burnEffectResult.targetUpdates) {
|
|
@@ -5770,8 +5773,7 @@ async function applyItemEffect(ctx, session, handle, itemConfig2, target) {
|
|
|
5770
5773
|
if (itemConfig2.id === 1) {
|
|
5771
5774
|
return {
|
|
5772
5775
|
success: false,
|
|
5773
|
-
message: "暂时被禁用了。"
|
|
5774
|
-
isDefeated: false
|
|
5776
|
+
message: "暂时被禁用了。"
|
|
5775
5777
|
};
|
|
5776
5778
|
const activeSentry = await ctx.database.get("ggcevo_boss", {
|
|
5777
5779
|
name: "空间站哨枪塔",
|
|
@@ -5779,8 +5781,7 @@ async function applyItemEffect(ctx, session, handle, itemConfig2, target) {
|
|
|
5779
5781
|
});
|
|
5780
5782
|
if (!activeSentry.length) return {
|
|
5781
5783
|
success: false,
|
|
5782
|
-
message: "⚠️ 目标「空间站哨枪塔」未存活"
|
|
5783
|
-
isDefeated: false
|
|
5784
|
+
message: "⚠️ 目标「空间站哨枪塔」未存活"
|
|
5784
5785
|
};
|
|
5785
5786
|
const [SentryTower] = await ctx.database.get("ggcevo_boss", {
|
|
5786
5787
|
name: "空间站哨枪塔",
|
|
@@ -5809,15 +5810,13 @@ async function applyItemEffect(ctx, session, handle, itemConfig2, target) {
|
|
|
5809
5810
|
});
|
|
5810
5811
|
return {
|
|
5811
5812
|
success: true,
|
|
5812
|
-
message: `成功引爆${itemName},对空间站哨枪塔造成${damageValue}
|
|
5813
|
-
isDefeated: false
|
|
5813
|
+
message: `成功引爆${itemName},对空间站哨枪塔造成${damageValue}点伤害,获得等额金币。`
|
|
5814
5814
|
};
|
|
5815
5815
|
}
|
|
5816
5816
|
if (itemConfig2.id === 2) {
|
|
5817
5817
|
if (!target) return {
|
|
5818
5818
|
success: false,
|
|
5819
|
-
message: "您未选择合适的目标。"
|
|
5820
|
-
isDefeated: false
|
|
5819
|
+
message: "您未选择合适的目标。"
|
|
5821
5820
|
};
|
|
5822
5821
|
const [targetboss] = await ctx.database.get("ggcevo_boss", {
|
|
5823
5822
|
name: target,
|
|
@@ -5825,29 +5824,25 @@ async function applyItemEffect(ctx, session, handle, itemConfig2, target) {
|
|
|
5825
5824
|
});
|
|
5826
5825
|
if (!targetboss) return {
|
|
5827
5826
|
success: false,
|
|
5828
|
-
message: "无法找到指定的目标。"
|
|
5829
|
-
isDefeated: false
|
|
5827
|
+
message: "无法找到指定的目标。"
|
|
5830
5828
|
};
|
|
5831
5829
|
if (targetboss.skills.includes("开天眼")) {
|
|
5832
5830
|
return {
|
|
5833
5831
|
success: false,
|
|
5834
|
-
message:
|
|
5835
|
-
isDefeated: false
|
|
5832
|
+
message: `目标免疫闪光弹,无法使用此物品。`
|
|
5836
5833
|
};
|
|
5837
5834
|
}
|
|
5838
5835
|
if (targetboss.tags.includes("建筑") || targetboss.tags.includes("重型") || targetboss.skills.includes("开天眼")) {
|
|
5839
5836
|
return {
|
|
5840
5837
|
success: false,
|
|
5841
|
-
message: `目标${target}拥有"${targetboss.tags.includes("建筑") ? "建筑" : "重型"}"
|
|
5842
|
-
isDefeated: false
|
|
5838
|
+
message: `目标${target}拥有"${targetboss.tags.includes("建筑") ? "建筑" : "重型"}"标签,无法使用此物品。`
|
|
5843
5839
|
};
|
|
5844
5840
|
}
|
|
5845
5841
|
const currentCount = targetboss?.skillStacks || 0;
|
|
5846
5842
|
if (currentCount <= 0) {
|
|
5847
5843
|
return {
|
|
5848
5844
|
success: false,
|
|
5849
|
-
message: `目标${target}的技能层数已为0
|
|
5850
|
-
isDefeated: false
|
|
5845
|
+
message: `目标${target}的技能层数已为0,无需使用此物品。`
|
|
5851
5846
|
};
|
|
5852
5847
|
}
|
|
5853
5848
|
const newCount = Math.max(0, currentCount - 10);
|
|
@@ -5859,15 +5854,13 @@ async function applyItemEffect(ctx, session, handle, itemConfig2, target) {
|
|
|
5859
5854
|
);
|
|
5860
5855
|
return {
|
|
5861
5856
|
success: true,
|
|
5862
|
-
message: `成功使用${itemName},使${target}的技能层数减少10
|
|
5863
|
-
isDefeated: false
|
|
5857
|
+
message: `成功使用${itemName},使${target}的技能层数减少10层`
|
|
5864
5858
|
};
|
|
5865
5859
|
}
|
|
5866
5860
|
if (itemConfig2.id === 4) {
|
|
5867
5861
|
if (!target) return {
|
|
5868
5862
|
success: false,
|
|
5869
|
-
message: "您未选择合适的目标。"
|
|
5870
|
-
isDefeated: false
|
|
5863
|
+
message: "您未选择合适的目标。"
|
|
5871
5864
|
};
|
|
5872
5865
|
const [targetboss] = await ctx.database.get("ggcevo_boss", {
|
|
5873
5866
|
name: target,
|
|
@@ -5876,14 +5869,12 @@ async function applyItemEffect(ctx, session, handle, itemConfig2, target) {
|
|
|
5876
5869
|
if (targetboss.skills.includes("质粒增殖")) {
|
|
5877
5870
|
return {
|
|
5878
5871
|
success: false,
|
|
5879
|
-
message:
|
|
5880
|
-
isDefeated: false
|
|
5872
|
+
message: `目标免疫脉冲手雷,无法使用此物品。`
|
|
5881
5873
|
};
|
|
5882
5874
|
}
|
|
5883
5875
|
if (!targetboss || targetboss?.energy === 0) return {
|
|
5884
5876
|
success: false,
|
|
5885
|
-
message: "您无法对没有能量的目标使用。"
|
|
5886
|
-
isDefeated: false
|
|
5877
|
+
message: "您无法对没有能量的目标使用。"
|
|
5887
5878
|
};
|
|
5888
5879
|
await ctx.database.set(
|
|
5889
5880
|
"ggcevo_boss",
|
|
@@ -5893,15 +5884,13 @@ async function applyItemEffect(ctx, session, handle, itemConfig2, target) {
|
|
|
5893
5884
|
);
|
|
5894
5885
|
return {
|
|
5895
5886
|
success: true,
|
|
5896
|
-
message: `成功使用${itemName},消耗${target}500
|
|
5897
|
-
isDefeated: false
|
|
5887
|
+
message: `成功使用${itemName},消耗${target}500点能量`
|
|
5898
5888
|
};
|
|
5899
5889
|
}
|
|
5900
5890
|
if (itemConfig2.id === 9) {
|
|
5901
5891
|
if (!target) return {
|
|
5902
5892
|
success: false,
|
|
5903
|
-
message: "使用燃烧弹需要指定目标。"
|
|
5904
|
-
isDefeated: false
|
|
5893
|
+
message: "使用燃烧弹需要指定目标。"
|
|
5905
5894
|
};
|
|
5906
5895
|
const [targetBoss] = await ctx.database.get("ggcevo_boss", {
|
|
5907
5896
|
name: target,
|
|
@@ -5909,15 +5898,13 @@ async function applyItemEffect(ctx, session, handle, itemConfig2, target) {
|
|
|
5909
5898
|
});
|
|
5910
5899
|
if (!targetBoss) return {
|
|
5911
5900
|
success: false,
|
|
5912
|
-
message: `目标「${target}
|
|
5913
|
-
isDefeated: false
|
|
5901
|
+
message: `目标「${target}」未存活或不存在。`
|
|
5914
5902
|
};
|
|
5915
5903
|
const aerialTargets = ["吸血蝙蝠首领", "吸血蝙蝠", "猛毒异兽", "剧毒蝙蝠"];
|
|
5916
5904
|
if (aerialTargets.includes(targetBoss.name)) {
|
|
5917
5905
|
return {
|
|
5918
5906
|
success: false,
|
|
5919
|
-
message: "无法对空中目标使用。"
|
|
5920
|
-
isDefeated: false
|
|
5907
|
+
message: "无法对空中目标使用。"
|
|
5921
5908
|
};
|
|
5922
5909
|
}
|
|
5923
5910
|
const immuneSkills = ["猎手异形", "环境适应"];
|
|
@@ -5926,8 +5913,7 @@ async function applyItemEffect(ctx, session, handle, itemConfig2, target) {
|
|
|
5926
5913
|
);
|
|
5927
5914
|
if (isImmune) return {
|
|
5928
5915
|
success: false,
|
|
5929
|
-
message: `目标「${target}
|
|
5930
|
-
isDefeated: false
|
|
5916
|
+
message: `目标「${target}」免疫燃烧效果。`
|
|
5931
5917
|
};
|
|
5932
5918
|
const baseLayers = 5;
|
|
5933
5919
|
let bonusLayers = 0;
|
|
@@ -5954,15 +5940,13 @@ async function applyItemEffect(ctx, session, handle, itemConfig2, target) {
|
|
|
5954
5940
|
const careerBonusMsg = playerCareer === "纵火狂" ? `(纵火狂使用莫洛托夫燃烧弹的效果提高100%)` : "";
|
|
5955
5941
|
return {
|
|
5956
5942
|
success: true,
|
|
5957
|
-
message: `成功使用${itemName},目标「${target}」的燃烧层数增加${totalLayers}层${careerBonusMsg}
|
|
5958
|
-
isDefeated: false
|
|
5943
|
+
message: `成功使用${itemName},目标「${target}」的燃烧层数增加${totalLayers}层${careerBonusMsg}`
|
|
5959
5944
|
};
|
|
5960
5945
|
}
|
|
5961
5946
|
if (itemConfig2.id === 10) {
|
|
5962
5947
|
if (!target) return {
|
|
5963
5948
|
success: false,
|
|
5964
|
-
message: "使用铝热炸弹需要指定目标。"
|
|
5965
|
-
isDefeated: false
|
|
5949
|
+
message: "使用铝热炸弹需要指定目标。"
|
|
5966
5950
|
};
|
|
5967
5951
|
const [targetBoss] = await ctx.database.get("ggcevo_boss", {
|
|
5968
5952
|
name: target,
|
|
@@ -5970,22 +5954,19 @@ async function applyItemEffect(ctx, session, handle, itemConfig2, target) {
|
|
|
5970
5954
|
});
|
|
5971
5955
|
if (!targetBoss) return {
|
|
5972
5956
|
success: false,
|
|
5973
|
-
message: `目标「${target}
|
|
5974
|
-
isDefeated: false
|
|
5957
|
+
message: `目标「${target}」未存活或不存在。`
|
|
5975
5958
|
};
|
|
5976
5959
|
const aerialTargets = ["吸血蝙蝠首领", "吸血蝙蝠", "猛毒异兽", "剧毒蝙蝠"];
|
|
5977
5960
|
if (aerialTargets.includes(targetBoss.name)) {
|
|
5978
5961
|
return {
|
|
5979
5962
|
success: false,
|
|
5980
|
-
message: "无法对空中目标使用。"
|
|
5981
|
-
isDefeated: false
|
|
5963
|
+
message: "无法对空中目标使用。"
|
|
5982
5964
|
};
|
|
5983
5965
|
}
|
|
5984
5966
|
if (targetBoss.HP === 1) {
|
|
5985
5967
|
return {
|
|
5986
5968
|
success: false,
|
|
5987
|
-
message: `目标「${target}」血量已是1点,无法使用${itemName}
|
|
5988
|
-
isDefeated: false
|
|
5969
|
+
message: `目标「${target}」血量已是1点,无法使用${itemName}。`
|
|
5989
5970
|
};
|
|
5990
5971
|
}
|
|
5991
5972
|
let baseDamage = 100;
|
|
@@ -6020,22 +6001,18 @@ async function applyItemEffect(ctx, session, handle, itemConfig2, target) {
|
|
|
6020
6001
|
const lowHpMsg = newHP === 1 ? ",目标血量已降至1点" : "";
|
|
6021
6002
|
return {
|
|
6022
6003
|
success: true,
|
|
6023
|
-
message: `成功使用${itemName},对${isBuilding ? "建筑目标" : "目标"}「${target}」造成${actualDamage}点伤害${lowHpMsg}${careerBonusMsg}
|
|
6024
|
-
isDefeated: false
|
|
6025
|
-
// 永远不会消灭目标
|
|
6004
|
+
message: `成功使用${itemName},对${isBuilding ? "建筑目标" : "目标"}「${target}」造成${actualDamage}点伤害${lowHpMsg}${careerBonusMsg}`
|
|
6026
6005
|
};
|
|
6027
6006
|
}
|
|
6028
6007
|
return {
|
|
6029
6008
|
success: false,
|
|
6030
|
-
message: `${itemName}
|
|
6031
|
-
isDefeated: false
|
|
6009
|
+
message: `${itemName} 无法使用。`
|
|
6032
6010
|
};
|
|
6033
6011
|
} catch (error) {
|
|
6034
6012
|
console.error("物品效果处理失败:", error);
|
|
6035
6013
|
return {
|
|
6036
6014
|
success: false,
|
|
6037
|
-
message: "⚠️ 物品效果处理异常,已回滚操作。"
|
|
6038
|
-
isDefeated: false
|
|
6015
|
+
message: "⚠️ 物品效果处理异常,已回滚操作。"
|
|
6039
6016
|
};
|
|
6040
6017
|
}
|
|
6041
6018
|
}
|
|
@@ -11506,25 +11483,11 @@ ${discountReason}` : "",
|
|
|
11506
11483
|
{ handle, itemId: targetItem.itemId },
|
|
11507
11484
|
{ quantity: newQuantity }
|
|
11508
11485
|
);
|
|
11509
|
-
const allDeadTargets = [];
|
|
11510
|
-
if (effectResult.isDefeated) {
|
|
11511
|
-
allDeadTargets.push(target);
|
|
11512
|
-
}
|
|
11513
|
-
const deathResults = await handleDeathTargets(ctx, allDeadTargets, session.username, handle);
|
|
11514
|
-
bossEventBroadcast = deathResults.bossBroadcast;
|
|
11515
|
-
cleanerRewardBroadcast = deathResults.cleanerBroadcast;
|
|
11516
11486
|
await session.send(
|
|
11517
11487
|
`✅ 成功使用 ${itemNameConfirmed}
|
|
11518
11488
|
剩余数量:${newQuantity}
|
|
11519
11489
|
触发效果:${effectResult.message}`
|
|
11520
11490
|
);
|
|
11521
|
-
const groupId = [...config.groupId];
|
|
11522
|
-
await handleBroadcasts(
|
|
11523
|
-
ctx,
|
|
11524
|
-
groupId,
|
|
11525
|
-
bossEventBroadcast,
|
|
11526
|
-
cleanerRewardBroadcast
|
|
11527
|
-
);
|
|
11528
11491
|
} catch (error) {
|
|
11529
11492
|
ctx.logger("GGCEVO").error(error);
|
|
11530
11493
|
return "⚠️ 物品使用失败,请联系管理员";
|
|
@@ -11609,7 +11572,7 @@ ${Spacestationtechnology.map((t) => t.techname).join("、")}`;
|
|
|
11609
11572
|
let itemBonusRate = 0;
|
|
11610
11573
|
let miningRobotBonus = 0;
|
|
11611
11574
|
const miningItem = warehouseItems.find((item) => item.itemId === 8);
|
|
11612
|
-
if (miningItem) {
|
|
11575
|
+
if (miningItem && career.group === "辛迪加海盗") {
|
|
11613
11576
|
miningRobotBonus = (10 + miningItem.bonus) / 100;
|
|
11614
11577
|
itemBonusRate += miningRobotBonus;
|
|
11615
11578
|
}
|
package/lib/utils.d.ts
CHANGED
|
@@ -15,7 +15,6 @@ export declare function calculateTotalPower(ctx: Context, config: Config, handle
|
|
|
15
15
|
export declare function applyItemEffect(ctx: Context, session: any, handle: string, itemConfig: any, target?: string): Promise<{
|
|
16
16
|
success: boolean;
|
|
17
17
|
message: string;
|
|
18
|
-
isDefeated: boolean;
|
|
19
18
|
}>;
|
|
20
19
|
export declare function handleTechUpgrade(ctx: Context, handle: string, target: string): Promise<string>;
|
|
21
20
|
export declare function handleWeaponUpgrade(ctx: Context, handle: string, target: string): Promise<string>;
|