diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/Jewel.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/Jewel.java index cd173db75..e6f060be8 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/Jewel.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/Jewel.java @@ -41,6 +41,15 @@ public class Jewel extends PropertyItem implements Cloneable { this.setGodTreeLv(jewel.getGodTreeLv()); } + public Jewel(com.ljsd.jieling.thrift.idl.PropertyItem propertyItem){ + this.setId(propertyItem.getId()); + this.setEquipId(propertyItem.getEquipId()); + this.setHeroId(propertyItem.heroId); + this.setBuildLevel(propertyItem.getRebuildLevel()); + this.setLevel(propertyItem.getLevel()); + this.setGodTreeLv(propertyItem.getGodTreeLv()); + } + public int getGodTreeLv() { return godTreeLv; } @@ -74,12 +83,13 @@ public class Jewel extends PropertyItem implements Cloneable { public int getLevelByHongMeng(HeroManager heroManager,String heroId) { // 英雄在共鳴池中 - if (heroManager.getResonances().values().contains(heroId)) { + if (heroManager.getResonances().containsValue(heroId)) { // 1:魂宝,2:灵宝 HongMengAddAttribute hongMengAddAttribute = null; if (jewelType == 1){ hongMengAddAttribute = heroManager.getResonanceAddition().get(HongMengAttributeEnum.SOUL_EQUIP); - }else if (jewelType == 2){ + } + if (jewelType == 2){ hongMengAddAttribute = heroManager.getResonanceAddition().get(HongMengAttributeEnum.SPIRIT_EQUIP); } // 读配置表 @@ -88,9 +98,9 @@ public class Jewel extends PropertyItem implements Cloneable { int[] max = config.getMax(); if (hongMengAddAttribute != null){ // 比较当前等级和共鸣等级 - int newLevel = getLevel() >= hongMengAddAttribute.value?getLevel():hongMengAddAttribute.value; + int newLevel = Math.max(getLevel(), hongMengAddAttribute.value); // 第一次结果和最大等级限制比较 - newLevel = max[0] >= newLevel?newLevel:max[0]; + newLevel = Math.min(max[0], newLevel); return newLevel; } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/PurpleMansionSeal.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/PurpleMansionSeal.java index 20ad5be99..ab8397d75 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/PurpleMansionSeal.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/PurpleMansionSeal.java @@ -37,6 +37,13 @@ public class PurpleMansionSeal{ this.state = state; } + public PurpleMansionSeal(com.ljsd.jieling.thrift.idl.PurpleMansionSeal seal) { + this.sealId = seal.getSealId(); + this.type = seal.getType(); + this.subId = seal.getSubId(); + this.state = seal.getState(); + } + public int getSealId() { return sealId; } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/vo/HeroVo.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/vo/HeroVo.java new file mode 100644 index 000000000..31990d96d --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/vo/HeroVo.java @@ -0,0 +1,142 @@ +package com.ljsd.jieling.logic.dao.vo; + +import com.ljsd.jieling.logic.dao.Hero; +import com.ljsd.jieling.logic.dao.HeroManager; +import com.ljsd.jieling.logic.dao.Jewel; +import com.ljsd.jieling.logic.dao.PurpleMansionSeal; +import com.ljsd.jieling.logic.dao.root.User; +import com.ljsd.jieling.thrift.idl.ArenaOfHero; +import com.ljsd.jieling.thrift.idl.CrossArenaManager; +import com.ljsd.jieling.util.CBean2Proto; +import config.SCHero; + +import java.util.HashMap; +import java.util.Map; + +/** + * 说明: + * + * @author ascend + * 2022/11/17 15:26:54 + */ +public class HeroVo { + private String id; + private int templateId; + private int star; + private int HMBreakId; + private int starBreakId; + private int HMEspecialEquipLevel; + private int propertyId; + private int godSoulLv; + private Map soulEquipByPositionMap = new HashMap<>(); + private Map godSealByPositionMap = new HashMap<>(); + private Map purpleMansionSealMap = new HashMap<>(); + private Map HMEquipPositionMap = new HashMap<>(); + private Map faBaoGongMingSkillMap = new HashMap<>(); + private Map userMountValidTime = new HashMap<>(); + + private Map jewelMap = new HashMap<>(); + + public HeroVo(User user, Hero hero) { + HeroManager heroManager = user.getHeroManager(); + this.id = hero.getId(); + this.templateId = hero.getTemplateId(); + this.star = hero.getTemplateId(); + this.HMBreakId = hero.getBreakIdByHongMeng(heroManager); + this.starBreakId = hero.getStarBreakId(); + this.HMEspecialEquipLevel = hero.getEspecialEquipLevelByHongmeng(heroManager,hero.getId()); + this.propertyId = hero.getPropertyId(); + this.godSoulLv = hero.getGodSoulLv(); + this.soulEquipByPositionMap = new HashMap<>(hero.getSoulEquipByPositionMap()); + this.godSealByPositionMap = new HashMap<>(hero.getGodSealByPositionMap()); + this.purpleMansionSealMap = new HashMap<>(heroManager.getPurpleMansionSeal()); + this.HMEquipPositionMap = new HashMap<>(hero.getEquipByHongmengPositionMap(heroManager)); + this.faBaoGongMingSkillMap = new HashMap<>(heroManager.getFaBaoGongMingSkillMap()); + this.userMountValidTime = new HashMap<>(user.getPlayerInfoManager().getUserMountValidTime()); + this.jewelMap = new HashMap<>(CBean2Proto.jewelOfLocal(user,hero)); + } + + public HeroVo(CrossArenaManager arena, ArenaOfHero hero) { + this.id = hero.getId(); + this.templateId = hero.getTemplateId(); + this.star = hero.getTemplateId(); + this.HMBreakId = hero.getBreakId(); + this.starBreakId = hero.getStarBreakId(); + this.HMEspecialEquipLevel = hero.getEspecialEquipLevel(); + this.propertyId = hero.getPropertyId(); + this.godSoulLv = hero.getGodSoulLv(); + this.soulEquipByPositionMap = new HashMap<>(hero.getSoulEquipByPositionMap()); + this.godSealByPositionMap = new HashMap<>(hero.getGodSealByPositionMap()); + this.purpleMansionSealMap = CBean2Proto.sealOfCross(arena.getSeals()); + this.HMEquipPositionMap = new HashMap<>(hero.getEquipByPositionMap()); + this.faBaoGongMingSkillMap = new HashMap<>(arena.getFaBaoGongMingSkillMap()); + this.userMountValidTime = new HashMap<>(); + this.jewelMap = new HashMap<>(CBean2Proto.jewelOfCross(arena,hero)); + } + + + + public String getId() { + return id; + } + + public int getGodSoulLv() { + return godSoulLv; + } + + public int getPropertyId() { + if (propertyId == 0) { + SCHero scHero = SCHero.getsCHero().get(templateId); + return scHero.getPropertyName(); + } + return propertyId; + } + + public Map getJewelMap() { + return jewelMap; + } + + public Map getUserMountValidTime() { + return userMountValidTime; + } + + public int getTemplateId() { + return templateId; + } + + public int getStar() { + return star; + } + + public int getHMBreakId() { + return HMBreakId; + } + + public int getStarBreakId() { + return starBreakId; + } + + public int getHMEspecialEquipLevel() { + return HMEspecialEquipLevel; + } + + public Map getSoulEquipByPositionMap() { + return soulEquipByPositionMap; + } + + public Map getGodSealByPositionMap() { + return godSealByPositionMap; + } + + public Map getPurpleMansionSealMap() { + return purpleMansionSealMap; + } + + public Map getHMEquipPositionMap() { + return HMEquipPositionMap; + } + + public Map getFaBaoGongMingSkillMap() { + return faBaoGongMingSkillMap; + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/CombatLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/CombatLogic.java index d1cadd670..38cb32004 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/CombatLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/CombatLogic.java @@ -798,13 +798,6 @@ public class CombatLogic { } }); } -// if(teamId == GlobalsDef.EXPEDITION_TEAM){ -// user.getPlayerInfoManager().getRechargeInfo().getBuyGoodsTimes().keySet().forEach(id->{ -// for(int passId : SRechargeCommodityConfig.rechargeCommodityConfigMap.get(id).getPassiveSkill()) { -// passiveTeamskillEffect.add(passId); -// } -// }); -// } user.getTeamPosManager().updatePassSkillTeamPos(teamId,passiveTeamskillEffect); passiveskillEffect.addAll(passiveTeamskillEffect); }else{ 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 f0c135713..bd382f653 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 @@ -30,6 +30,7 @@ import com.ljsd.jieling.logic.activity.fourChallenge.FourChallengeLogic; import com.ljsd.jieling.logic.dao.*; import com.ljsd.jieling.logic.dao.cross.CSPlayer; import com.ljsd.jieling.logic.dao.root.User; +import com.ljsd.jieling.logic.dao.vo.HeroVo; import com.ljsd.jieling.logic.expedition.ExpeditionLogic; import com.ljsd.jieling.logic.fight.CombatLogic; import com.ljsd.jieling.logic.fight.passiveSkillCal.PassiveskillCalEnum; @@ -2005,7 +2006,6 @@ public class HeroLogic { return getParaRate(scHero, hero.getStar(), hero.getLevel(user.getHeroManager()), hero.getBreakIdByHongMeng(user.getHeroManager())); } - //todo private Map getParaForRobotHero(SCHero scHero, int level, int breakId) { return getParaRate(scHero, scHero.getStar(), level, breakId); } @@ -2030,31 +2030,34 @@ public class HeroLogic { break; default: break; - } return result; } /** - * 获取英雄所有技能,新技能添加到此方法, 跨服获取英雄技能也需要添加新技能 - * @param user - * @param hero + * 获取英雄所有技能,原点方法 + * 新技能添加到此方法, 跨服获取英雄技能也需要添加新技能 + * @param heroVo * @return */ - public List getHeroSkillList(User user, Hero hero) { + public List originGetHeroSkillList(HeroVo heroVo) { List skillList = new ArrayList<>(); - SCHero tempHero = SCHero.getsCHero().get(hero.getTemplateId()); - List skillListByStar = tempHero.getSkillListByStar(hero.getStar()); + + int templateId = heroVo.getTemplateId(); + int star = heroVo.getStar(); + + SCHero tempHero = SCHero.getsCHero().get(templateId); + List skillListByStar = tempHero.getSkillListByStar(star); if (skillListByStar != null) { skillList.addAll(skillListByStar); } // 大于10星,觉醒技 - if (hero.getStar() > HERO_MAX_STAR) { - skillList.addAll(tempHero.getAwakSkills(1, hero.getBreakIdByHongMeng(user.getHeroManager()))); - skillList.addAll(tempHero.getAwakSkills(2, hero.getStarBreakId())); + if (star > HERO_MAX_STAR) { + skillList.addAll(tempHero.getAwakSkills(1, heroVo.getHMBreakId())); + skillList.addAll(tempHero.getAwakSkills(2, heroVo.getStarBreakId())); } else { - skillList.addAll(tempHero.getPassiveSkills(1, hero.getBreakIdByHongMeng(user.getHeroManager()))); - skillList.addAll(tempHero.getPassiveSkills(2, hero.getStarBreakId())); + skillList.addAll(tempHero.getPassiveSkills(1, heroVo.getHMBreakId())); + skillList.addAll(tempHero.getPassiveSkills(2, heroVo.getStarBreakId())); } // 角色初始被动 @@ -2068,21 +2071,63 @@ public class HeroLogic { Map config = STableManager.getConfig(SEquipConfig.class); //魂印 - Map soulEquipByPositionMap = hero.getSoulEquipByPositionMap(); + Map soulEquipByPositionMap = heroVo.getSoulEquipByPositionMap(); soulEquipByPositionMap.values().forEach(e -> { Arrays.stream(config.get(e).getPassiveSkill()).forEach(skillList::add); }); //神印 - Map godSealByPositionMap = hero.getGodSealByPositionMap(); + Map godSealByPositionMap = heroVo.getGodSealByPositionMap(); godSealByPositionMap.values().forEach(e -> { Arrays.stream(config.get(e).getPassiveSkill()).forEach(skillList::add); }); + // 神印套装 + Iterator> godSealIterator = godSealByPositionMap.entrySet().iterator(); + ArrayList godSealSuiteNumList = new ArrayList<>(); + while (godSealIterator.hasNext()) { + Map.Entry next = godSealIterator.next(); + SEquipConfig sEquipConfig = config.get(next.getValue()); + // 添加到套装list + godSealSuiteNumList.add(sEquipConfig); + } + Collections.sort(godSealSuiteNumList); + // 记录当前长度(位置) + int godSealNum = godSealSuiteNumList.size(); + if (!godSealSuiteNumList.isEmpty()) { + // 遍历套装list + for (SEquipConfig item : godSealSuiteNumList) { + //根据星级读取配置表,为空表示不是套装 + SEquipSuiteConfig sEquipSuiteConfig = SEquipSuiteConfig.config.get(item.getStar()); + if (null != sEquipSuiteConfig) { + // 根据套装数量读表,为空标是套装数量不足 + Integer integer = sEquipSuiteConfig.getSuiteSkills().get(godSealNum); + if (integer == null) { + godSealNum -= 1; + continue; + } + skillList.add(integer); + } + // 不管是否是套装,都要-1 + godSealNum -= 1; + } + } + + // 魂灵宝 + Map map = STableManager.getConfig(SJewelConfig.class); + for (Jewel jewel : heroVo.getJewelMap().values()) { + SJewelConfig jewelConfig = map.get(jewel.getEquipId()); + if (jewelConfig == null){ + continue; + } + SJewelRankupConfig rankUp = SJewelRankupConfig.rankupMap.get(jewelConfig.getRankupPool()).get(2).get(jewel.getBuildLevel()); + skillList.add(rankUp.getPassiveSkillId()); + } + //法宝技能 int[] equipTalismana = tempHero.getEquipTalismana(); - if (equipTalismana.length >= 2 && hero.getStar() >= equipTalismana[0]) { - int especialEquipLevel = hero.getEspecialEquipLevelByHongmeng(user.getHeroManager(), hero.getId()); + if (equipTalismana.length >= 2 && star >= equipTalismana[0]) { + int especialEquipLevel = heroVo.getHMEspecialEquipLevel(); int especialEquipId = equipTalismana[1]; Map sEquipTalismana = SEquipTalismana.equipTalismanaStarMap.get(especialEquipId); sEquipTalismana.forEach((k, v) -> { @@ -2092,26 +2137,26 @@ public class HeroLogic { }); } - // 紫府神印技能 - Collection seals = user.getHeroManager().getPurpleMansionSeal().values(); - seals.forEach(v -> { - // 使用中神印 - if (v.getState() == 1) { - // 附身神印 - if (v.getType() == 1) { - if (v.getSubId().equals(hero.getId())) { - getPurpleMansionSealSkill(v.getSealId(), hero.getPropertyId(), skillList); - } - } - // 通用神印 - else { - getPurpleMansionSealSkill(v.getSealId(), hero.getPropertyId(), skillList); - } - } - }); + int propertyId = heroVo.getPropertyId(); - Iterator> iterator = hero.getEquipByHongmengPositionMap(user.getHeroManager()).entrySet().iterator(); - // 套装list初始化 + // 紫府神印技能 + for (PurpleMansionSeal seal : heroVo.getPurpleMansionSealMap().values()) { + // 使用中神印 + if (seal.getState() != 1){ + continue; + } + // 通用神印 + if (seal.getType() == 0){ + getPurpleMansionSealSkill(seal.getSealId(), propertyId, skillList); + } + // 附身神印 + if (seal.getType() == 1 && seal.getSubId().equals(heroVo.getId())) { + getPurpleMansionSealSkill(seal.getSealId(), propertyId, skillList); + } + } + + // 装备套装list初始化 + Iterator> iterator = heroVo.getHMEquipPositionMap().entrySet().iterator(); ArrayList suiteNumList = new ArrayList<>(); while (iterator.hasNext()) { Map.Entry next = iterator.next(); @@ -2140,8 +2185,9 @@ public class HeroLogic { num -= 1; } } + // 坐骑技能 - for (Map.Entry entry : user.getPlayerInfoManager().getUserMountValidTime().entrySet()) { + for (Map.Entry entry : heroVo.getUserMountValidTime().entrySet()) { if (!SPlayerHeadIcon.getHeadIconMap().containsKey(entry.getKey())) { continue; } @@ -2153,27 +2199,30 @@ public class HeroLogic { } //神魂技能 - if (hero.getGodSoulLv() > 0) { - List godSoulSkills = GetGodSoulSkill(hero.getTemplateId(), hero.getGodSoulLv()); + int godSoulLv = heroVo.getGodSoulLv(); + if (godSoulLv > 0) { + List godSoulSkills = GetGodSoulSkill(templateId, godSoulLv); skillList.addAll(godSoulSkills); } + ///法宝之魂共鸣技能 - if (user.getHeroManager().getFaBaoGongMingSkillMap().size()>0) { + Map faBaoGongMingSkillMap = heroVo.getFaBaoGongMingSkillMap(); + if (faBaoGongMingSkillMap.size() > 0) { List faBaoSoulSkills=new ArrayList<>(); - for (Map.Entry entry : user.getHeroManager().getFaBaoGongMingSkillMap().entrySet()) { + for (Map.Entry entry : faBaoGongMingSkillMap.entrySet()) { SXiuXianSkill sXiuXianSkill= STableManager.getConfig(SXiuXianSkill.class).get(entry.getValue()); if (sXiuXianSkill.getFitList()[0]==0){ for (int skillId : sXiuXianSkill.getSkillId()) { faBaoSoulSkills.add(skillId); } }else if(sXiuXianSkill.getFitList()[0]==1){ - if (sXiuXianSkill.getFitList()[1]==hero.getPropertyId()){ + if (sXiuXianSkill.getFitList()[1]==propertyId){ for (int skillId : sXiuXianSkill.getSkillId()) { faBaoSoulSkills.add(skillId); } } }else if(sXiuXianSkill.getFitList()[0]==2){ - if (sXiuXianSkill.getFitList()[1]==hero.getPropertyId()){ + if (sXiuXianSkill.getFitList()[1]==propertyId){ for (int skillId : sXiuXianSkill.getSkillId()) { faBaoSoulSkills.add(skillId); } @@ -2188,6 +2237,17 @@ public class HeroLogic { return skillList; } + /** + * 本服玩家使用 + * @param user + * @param hero + * @return + */ + public List getHeroSkillList(User user, Hero hero) { + HeroVo heroVo = new HeroVo(user, hero); + return originGetHeroSkillList(heroVo); + } + /** * 跨服获取英雄技能 * @param crossArenaManager @@ -2196,141 +2256,8 @@ public class HeroLogic { */ public StringBuilder getCrossHeroSkillStr(CrossArenaManager crossArenaManager, com.ljsd.jieling.thrift.idl.ArenaOfHero hero) { - List skillList = new ArrayList<>(); - SCHero tempHero = SCHero.getsCHero().get(hero.getTemplateId()); - List skillListByStar = tempHero.getSkillListByStar(hero.getStar()); - if (skillListByStar != null) { - skillList.addAll(skillListByStar); - } - // 大于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 config = STableManager.getConfig(SEquipConfig.class); - //魂印 - Map soulEquipByPositionMap = hero.getSoulEquipByPositionMap(); - soulEquipByPositionMap.values().forEach(e -> { - Arrays.stream(config.get(e).getPassiveSkill()).forEach(skillList::add); - }); - - //神印 - Map godSealByPositionMap = hero.getGodSealByPositionMap(); - godSealByPositionMap.values().forEach(e -> { - Arrays.stream(config.get(e).getPassiveSkill()).forEach(skillList::add); - }); - - //法宝技能 - int[] equipTalismana = tempHero.getEquipTalismana(); - if (equipTalismana.length >= 1 && hero.getStar() >= equipTalismana[0]) { - int especialEquipLevel = hero.getEspecialEquipLevel(); - int especialEquipId = equipTalismana[1]; - Map sEquipTalismana = SEquipTalismana.equipTalismanaStarMap.get(especialEquipId); - sEquipTalismana.forEach((k, v) -> { - if (k <= especialEquipLevel && v.getOpenSkillRules() != null) { - Arrays.stream(v.getOpenSkillRules()).forEach(i -> skillList.add(i)); - } - }); - } - - // 紫府神印技能 - //Collection seals = user.getHeroManager().getPurpleMansionSeal().values(); - Collection seals = crossArenaManager.getSeals().values(); - seals.forEach(v -> { - // 使用中神印 - if (v.getState() == 1) { - // 附身神印 - if (v.getType() == 1) { - if (v.getSubId().equals(hero.getId())) { - getPurpleMansionSealSkill(v.getSealId(), hero.getPropertyId(), skillList); - } - } - // 通用神印 - else { - getPurpleMansionSealSkill(v.getSealId(), hero.getPropertyId(), skillList); - } - } - }); - // 坐骑技能 - for (int skill : crossArenaManager.getSkill()) { - if (!SPlayerHeadIcon.getHeadIconMap().containsKey(skill)) { - continue; - } - SPlayerHeadIcon sPlayerHeadIcon = SPlayerHeadIcon.getHeadIconMap().get(skill); - if (sPlayerHeadIcon.getSkill() == null || sPlayerHeadIcon.getSkill().length <= 0) { - continue; - } - skillList.add(sPlayerHeadIcon.getSkill()[0][0]); - //sb.append(sPlayerHeadIcon.getSkill()[0][0]).append(DIVISION); - } - - Iterator> iterator = hero.getEquipByPositionMap().entrySet().iterator(); - // 套装list初始化 - ArrayList suiteNumList = new ArrayList<>(); - while (iterator.hasNext()) { - Map.Entry next = iterator.next(); - SEquipConfig sEquipConfig = STableManager.getConfig(SEquipConfig.class).get(next.getValue()); - // 添加到套装list - suiteNumList.add(sEquipConfig); - } - Collections.sort(suiteNumList); - // 记录当前长度(位置) - int num = suiteNumList.size(); - if (!suiteNumList.isEmpty()) { - // 遍历套装list - for (SEquipConfig item : suiteNumList) { - //根据星级读取配置表,为空表示不是套装 - SEquipSuiteConfig sEquipSuiteConfig = SEquipSuiteConfig.config.get(item.getStar()); - if (null != sEquipSuiteConfig) { - // 根据套装数量读表,为空标是套装数量不足 - Integer integer = sEquipSuiteConfig.getSuiteSkills().get(num); - if (integer == null) { - num -= 1; - continue; - } - skillList.add(integer); - //sb.append(integer).append(DIVISION); - } - // 不管是否是套装,都要-1 - num -= 1; - } - } - //神魂技能 - if (hero.getGodSoulLv() > 0) { - List godSoulSkills = GetGodSoulSkill(hero.getTemplateId(), hero.getGodSoulLv()); - skillList.addAll(godSoulSkills); - } - ///法宝之魂共鸣技能 - if (crossArenaManager.getFaBaoGongMingSkillMap().size()>0) { - List faBaoSoulSkills=new ArrayList<>(); - for (Map.Entry entry : crossArenaManager.getFaBaoGongMingSkillMap().entrySet()) { - SXiuXianSkill sXiuXianSkill= STableManager.getConfig(SXiuXianSkill.class).get(entry.getValue()); - if (sXiuXianSkill.getFitList()[0]==0){ - for (int skillId : sXiuXianSkill.getSkillId()) { - faBaoSoulSkills.add(skillId); - } - }else if(sXiuXianSkill.getFitList()[0]==1){ - if (sXiuXianSkill.getFitList()[1]==hero.getPropertyId()){ - for (int skillId : sXiuXianSkill.getSkillId()) { - faBaoSoulSkills.add(skillId); - } - } - }else if(sXiuXianSkill.getFitList()[0]==2){ - if (sXiuXianSkill.getFitList()[1]==hero.getPropertyId()){ - for (int skillId : sXiuXianSkill.getSkillId()) { - faBaoSoulSkills.add(skillId); - } - } - } - } - if (faBaoSoulSkills.size()>0) { - skillList.addAll(faBaoSoulSkills); - } - } + HeroVo heroVo = new HeroVo(crossArenaManager, hero); + List skillList = originGetHeroSkillList(heroVo); StringBuilder sb = new StringBuilder(); coverSkill(skillList); @@ -2345,7 +2272,6 @@ public class HeroLogic { sb.append(skill).append(DIVISION); } } - return sb; } @@ -2371,13 +2297,7 @@ public class HeroLogic { skillList.add(skillId); break; case 1: - // 阵营限制 - if (propertyId == fitList[1]) { - skillList.add(skillId); - } - break; - case 2: - // 职业限制 + case 2:// 阵营限制,职业限制 if (propertyId == fitList[1]) { skillList.add(skillId); } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/util/CBean2Proto.java b/serverlogic/src/main/java/com/ljsd/jieling/util/CBean2Proto.java index d9d860d97..bdc3fd4b3 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/util/CBean2Proto.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/util/CBean2Proto.java @@ -21,6 +21,8 @@ import com.ljsd.jieling.logic.help.HelpTypeEnum; import com.ljsd.jieling.logic.hero.HeroLogic; import com.ljsd.jieling.logic.home.HomeLogic; import com.ljsd.jieling.logic.store.newRechargeInfo.NewRechargeInfo; +import com.ljsd.jieling.thrift.idl.ArenaOfHero; +import com.ljsd.jieling.thrift.idl.CrossArenaManager; import config.*; import manager.STableManager; import org.slf4j.Logger; @@ -1342,4 +1344,45 @@ public class CBean2Proto { builder.setEspecialEquipLevel(hero.getEspecialEquipLevel()); return builder.build(); } + + /** + * 跨服,转换神印对象 + * @param crossSeals + * @return + */ + public static Map sealOfCross(Map crossSeals){ + HashMap result = new HashMap<>(); + for (Map.Entry entry : crossSeals.entrySet()) { + PurpleMansionSeal seal = new PurpleMansionSeal(entry.getValue()); + result.put(entry.getKey(),seal); + } + return result; + } + + /** + * 跨服,转换魂宝对象 + * @return + */ + public static Map jewelOfCross(CrossArenaManager arena, ArenaOfHero hero){ + HashMap result = new HashMap<>(); + for (String id : hero.getJewelInfo()) { + Jewel jewel = new Jewel(arena.getJewels().get(id)); + result.put(id,jewel); + } + return result; + } + + /** + * 本服,转换魂宝对象 + * @return + */ + public static Map jewelOfLocal(User user, Hero hero){ + HashMap result = new HashMap<>(); + Map itemMap = user.getEquipManager().getEquipMap(); + for (String id : hero.getJewelInfo()) { + Jewel jewel = (Jewel) itemMap.get(id); + result.put(id,jewel); + } + return result; + } } diff --git a/tablemanager/src/main/java/config/SEquipConfig.java b/tablemanager/src/main/java/config/SEquipConfig.java index 3ac65c9e4..63476fb05 100644 --- a/tablemanager/src/main/java/config/SEquipConfig.java +++ b/tablemanager/src/main/java/config/SEquipConfig.java @@ -12,6 +12,8 @@ public class SEquipConfig implements BaseConfig,Comparable { private int suiteID; + private int suiteID1; + private int professionLimit; private int position; @@ -187,6 +189,10 @@ public class SEquipConfig implements BaseConfig,Comparable { return suiteID; } + public int getSuiteID1() { + return suiteID1; + } + @Override public int compareTo(SEquipConfig o) { return this.getStar() - o.getStar(); diff --git a/tablemanager/src/main/java/config/SJewelRankupConfig.java b/tablemanager/src/main/java/config/SJewelRankupConfig.java index 9a8c855bd..2b83b9f8a 100644 --- a/tablemanager/src/main/java/config/SJewelRankupConfig.java +++ b/tablemanager/src/main/java/config/SJewelRankupConfig.java @@ -23,6 +23,8 @@ public class SJewelRankupConfig implements BaseConfig { private int[][] upExpend; + private int passiveSkillId; + /** * 第一层《poolId,map》 * 第二层《type,map》 @@ -69,5 +71,7 @@ public class SJewelRankupConfig implements BaseConfig { return upExpend; } - + public int getPassiveSkillId() { + return passiveSkillId; + } } \ No newline at end of file