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 a82bd63c0..c2c5d7f50 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 @@ -140,6 +140,8 @@ public class HeroLogic{ private static final String VERTICAL = "|"; private static final String DIVISION = "#"; + public static final int HERO_MAX_STAR = 10; // 英雄最大星级,大于10星为觉醒 + /** * 获取装备、法宝信息、魂印 @@ -886,7 +888,7 @@ public class HeroLogic{ } /** - * 妖灵师进阶 + * 妖灵师进阶 升星==进阶==觉醒 * @param session * @param heroId * @param consumeMaterialsList @@ -1226,9 +1228,14 @@ public class HeroLogic{ if(skillListByStar!=null){ skillList.addAll(skillListByStar); } - skillList.addAll( tempHero.getPassiveSkills(1,hero.getBreakId())); - skillList.addAll( tempHero.getPassiveSkills(2,hero.getStarBreakId())); - + // 大于10星,觉醒技 + if (hero.getStar() > HERO_MAX_STAR) { + skillList.addAll(tempHero.getAwakSkills(1, hero.getBreakId())); + skillList.addAll(tempHero.getAwakSkills(2, hero.getStarBreakId())); + } else { + skillList.addAll(tempHero.getPassiveSkills(1, hero.getBreakId())); + skillList.addAll(tempHero.getPassiveSkills(2, hero.getStarBreakId())); + } //装备没有技能不用计算 // Map equipByPositionMap = hero.getEquipByPositionMap(); // if(!equipByPositionMap.isEmpty()){ diff --git a/tablemanager/src/main/java/config/SCHero.java b/tablemanager/src/main/java/config/SCHero.java index 6f010b25b..d4e1fe738 100644 --- a/tablemanager/src/main/java/config/SCHero.java +++ b/tablemanager/src/main/java/config/SCHero.java @@ -42,6 +42,8 @@ public class SCHero implements BaseConfig{ private int[][] openSkillRules; + private int[][] awaken; + private int[][] openPassiveSkillRules; private int[] equipTalismana; @@ -58,6 +60,9 @@ public class SCHero implements BaseConfig{ private Map> skillListByStar; + // 觉醒增加的技能属性 + private Map>> awakSkillMap; + private Map> consumeMaterialInfoOfPositionByStar; private Map>> passiveSkillMap; @@ -109,8 +114,6 @@ public class SCHero implements BaseConfig{ } } Map> consumeMaterialInfoByStarTmp = new HashMap<>(); - int[][] openSkillRules = scHero.getOpenSkillRules(); - int[][] rankupConsumeMaterial = scHero.getRankupConsumeMaterial(); @@ -127,8 +130,8 @@ public class SCHero implements BaseConfig{ } scHero.setConsumeMaterialInfoOfPositionByStar(consumeMaterialInfoByStarTmp); - - //技能 + int[][] openSkillRules = scHero.getOpenSkillRules(); + // 技能 Map> skillTmp = new HashMap<>(); for(int i=0;i>> awakSkillMapTmp = new HashMap<>(); + if (awakens != null && awakens.length > 0) { + awakSkillMapTmp.put(1, new TreeMap<>()); + awakSkillMapTmp.put(2, new TreeMap<>()); + for (int[] openSkillRule : awakens) { + int type = openSkillRule[0]; + int starOrBreakId = openSkillRule[1]; + int skillId = openSkillRule[2]; + awakSkillMapTmp.get(type).computeIfAbsent(starOrBreakId, a -> { + return new ArrayList<>(awakSkillMapTmp.get(type).getOrDefault(a - 1, new ArrayList<>())); + }); + awakSkillMapTmp.get(type).get(starOrBreakId).add(skillId); + } + } + scHero.setAwakSkillMap(awakSkillMapTmp); } sCHero = integerSCHeroMap; piecesMap = new HashMap<>(); @@ -300,7 +319,22 @@ public class SCHero implements BaseConfig{ return passiveSkillMap.get(type).floorEntry(id).getValue(); } + public List getAwakSkills(int type, int id) { + if (awakSkillMap.get(type).floorEntry(id) == null) { + return new ArrayList<>(0); + } + return awakSkillMap.get(type).floorEntry(id).getValue(); + } + public void setPassiveSkillMap(Map>> passiveSkillMap) { this.passiveSkillMap = passiveSkillMap; } + + public void setAwakSkillMap(Map>> awakSkillMap) { + this.awakSkillMap = awakSkillMap; + } + + public int[][] getAwaken() { + return awaken; + } }