From 1d3845d9811bd712ca8d697c0bb161cf387dc212 Mon Sep 17 00:00:00 2001 From: "DESKTOP-C3M45P4\\dengdan" Date: Wed, 29 Oct 2025 11:15:19 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=B3=95=E5=AE=9D=E6=8A=A4?= =?UTF-8?q?=E4=BD=91=E7=9B=B8=E5=85=B3=E7=B3=BB=E7=BB=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ljsd/jieling/logic/equip/EquipLogic.java | 12 ++++- .../ljsd/jieling/logic/hero/HeroLogic.java | 50 ++++++++++++++++++- .../src/main/java/config/SSpecialConfig.java | 1 + 3 files changed, 59 insertions(+), 4 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/equip/EquipLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/equip/EquipLogic.java index b1ac93a2a..87799f081 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/equip/EquipLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/equip/EquipLogic.java @@ -899,8 +899,16 @@ public class EquipLogic { if (!StringUtil.isEmpty(baubles.getMasterId()) || !StringUtil.isEmpty(blessBaubles.getMasterId())){ throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE, "法宝存在已庇佑情况"); } - int number = SSpecialConfig.getIntegerValue("Huyou_Number"); - if (baubles.getBlessList().size() >= number){ + int[][] number = SSpecialConfig.getTwiceArrayValue("Huyou_Number"); + int num = 0; + //获取四灵试炼总层数 + int count = user.getPlayerInfoManager().getFourChallengeTotal(); + for(int[] position : number){ + if(count >= position[0]){ + num++; + } + } + if (baubles.getBlessList().size() >= num){ throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE, "法宝安装的庇佑数量以达到上限"); } int openLevel = SSpecialConfig.getIntegerValue("Huyou_OpenLevel"); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java index 1575a1c18..cec4774a9 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java @@ -3111,14 +3111,60 @@ public class HeroLogic { String heroBauBlesId = hero.getBauBlesId(); Baubles baubles = equipManager.getBaubles(heroBauBlesId); if (baubles != null) { + //统计满级护佑法宝的个数,用于计算满级护佑被动技能 + int maxLevelHuyuCount = 0; Map talismanaMap = SEquipTalismana.equipTalismanaStarMap.get(baubles.getEquipId()); if (talismanaMap != null && !talismanaMap.isEmpty()) { SEquipTalismana equipTalismana = talismanaMap.get(baubles.getLevel()); + Map add = new HashMap(); if (equipTalismana != null) { - int increase = baubles.getBlessList().size() * SSpecialConfig.getIntegerValue("Huyou_UpAttribute"); + //计算护佑法宝属性 + if(baubles.getBlessList() != null && baubles.getBlessList().size() > 0){ + double increase = ((double)baubles.getBlessList().size() * SSpecialConfig.getIntegerValue("Huyou_UpAttribute"))/10000; + for(String baublesId: baubles.getBlessList()){ + Baubles huBaubles = equipManager.getBaubles(heroBauBlesId); + if(huBaubles != null){ + Map huTalismanaMap = SEquipTalismana.equipTalismanaStarMap.get(baubles.getEquipId()); + if (huTalismanaMap != null && !huTalismanaMap.isEmpty()) { + int huLevel = huBaubles.getLevel(); + if(huLevel >= 50){ + maxLevelHuyuCount ++; + } + SEquipTalismana huEquipTalismana = talismanaMap.get(huLevel); + if(huEquipTalismana != null){ + for (int[] pp : huEquipTalismana.getProperty()) { + int addProp = 0; + if(add.containsKey(pp[0])){ + addProp = add.get(pp[0]); + } + add.put(pp[0], (addProp + (int)(pp[1]*increase))); + } + } + } + } + } + } HashMap map = new HashMap<>(); for (int[] pp : equipTalismana.getProperty()) { - map.put(pp[0], (long) (pp[1] + increase)); + int addProp = 0; + if(add.containsKey(pp[0])){ + addProp = add.get(pp[0]); + } + map.put(pp[0], (long) (pp[1] + addProp)); + } + //计算满级护佑法宝激活的属性 + if(maxLevelHuyuCount > 0){ + int[][] huyouAddSkill = SSpecialConfig.getTwiceArrayValue(SSpecialConfig.Huyou_Add_Skill); + if(huyouAddSkill != null && huyouAddSkill.length > 0){ + for(int[] skillProps : huyouAddSkill){ + if(!map.containsKey(skillProps[0])){ + map.put(skillProps[0],(long)(skillProps[1]*maxLevelHuyuCount)); + }else{ + long prop = map.get(skillProps[0]); + map.put(skillProps[0],prop + (long)(skillProps[1]*maxLevelHuyuCount)); + } + } + } } // LOGGER.error("法宝加成:{},{}",map, increase); combinedAttribute(map, heroAllAttribute); diff --git a/tablemanager/src/main/java/config/SSpecialConfig.java b/tablemanager/src/main/java/config/SSpecialConfig.java index 86d37758d..f673a4d31 100644 --- a/tablemanager/src/main/java/config/SSpecialConfig.java +++ b/tablemanager/src/main/java/config/SSpecialConfig.java @@ -91,6 +91,7 @@ public class SSpecialConfig implements BaseConfig { public static final String Gem_Senior_Lottery = "Gem_Senior_Lottery";//高级宝石单抽所需道具 public static final String Gem_Senior_Lottery10 = "Gem_Senior_Lottery10";//高级宝石十连所需道具 public static final String Sunlong_Add_Level = "Sunlong_Add_Level";//购买孙龙(青龙战令)增加的等级 + public static final String Huyou_Add_Skill = "Huyou_AddSkill";//满级护佑法宝激活的被动技能 @Override public void init() throws Exception {