From bbd9fe8271af4420eb42f30e45235c2d71856bea Mon Sep 17 00:00:00 2001 From: wangyuan Date: Thu, 16 Apr 2020 11:52:20 +0800 Subject: [PATCH 1/3] team force --- .../jieling/logic/dao/TeamPosManager.java | 2 + .../ljsd/jieling/logic/fight/CombatLogic.java | 50 +++++++++++-------- .../PassiveSkillProcessor.java | 2 +- .../passiveSkillCal/PassiveskillCalEnum.java | 17 +++---- .../ljsd/jieling/logic/hero/HeroLogic.java | 30 +++++------ 5 files changed, 53 insertions(+), 48 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/TeamPosManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/TeamPosManager.java index 963528c92..c56173c00 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/TeamPosManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/TeamPosManager.java @@ -88,6 +88,8 @@ public class TeamPosManager extends MongoBase { public void setCurTeamPosId(int curTeamPosId) { this.curTeamPosId = curTeamPosId; + //缓存失效 + cachePassskill.remove(curTeamPosId); } public Map> getCacheTeamPro() { 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 292dc38e6..948ebc5f0 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 @@ -738,34 +738,42 @@ public class CombatLogic { public List passiveskillEffect(User user,Hero targetHero,int teamId){ List passiveskillEffect = new ArrayList<>(); - if(teamId == 0){ - List heroSkillList = HeroLogic.getInstance().getHeroSkillList(user, targetHero); - heroSkillList.forEach(skill->{ - SPassiveSkillLogicConfig config = SPassiveSkillLogicConfig.getConfig(skill); - if(config!=null &&config.getEffectiveRange()!=1 && PassiveskillCalEnum.contains(config.getType())){ - passiveskillEffect.add(config.getId()); - } - }); - return passiveskillEffect; - } - List result = user.getTeamPosManager().getCachePassskill().get(teamId); - if(result!=null){ - return result; - } - Map heroMap = user.getHeroManager().getHeroMap(); - List teamPosHeroInfos = user.getTeamPosManager().getTeamPosForHero().get(teamId); + List heroSkillList = HeroLogic.getInstance().getHeroSkillList(user, targetHero); + heroSkillList.forEach(skill->{ + SPassiveSkillLogicConfig config = SPassiveSkillLogicConfig.getConfig(skill); + if(config!=null &&config.getEffectiveRange()!=1 && config.getType()!=94 && PassiveskillCalEnum.contains(config.getType())){ + passiveskillEffect.add(config.getId()); + } + }); + if(teamId!=0){ + List result = user.getTeamPosManager().getCachePassskill().get(teamId); + if(result!=null){ + passiveskillEffect.addAll(result); + return passiveskillEffect; + } + Map heroMap = user.getHeroManager().getHeroMap(); + List teamPosHeroInfos = user.getTeamPosManager().getTeamPosForHero().get(teamId); - for(TeamPosHeroInfo teamPosHeroInfo :teamPosHeroInfos){ - Hero hero = heroMap.get(teamPosHeroInfo.getHeroId()); - List heroSkillList = HeroLogic.getInstance().getHeroSkillList(user, hero); + for(TeamPosHeroInfo teamPosHeroInfo :teamPosHeroInfos){ + Hero hero = heroMap.get(teamPosHeroInfo.getHeroId()); + List heroSkillListTmp = HeroLogic.getInstance().getHeroSkillList(user, hero); + heroSkillListTmp.forEach(skill->{ + SPassiveSkillLogicConfig config = SPassiveSkillLogicConfig.getConfig(skill); + if(config!=null &&config.getEffectiveRange()!=1 && config.getType()==94){ + passiveskillEffect.add(config.getId()); + } + }); + } + user.getTeamPosManager().updatePassSkillTeamPos(teamId,passiveskillEffect); + }else{ heroSkillList.forEach(skill->{ SPassiveSkillLogicConfig config = SPassiveSkillLogicConfig.getConfig(skill); - if(config!=null &&config.getEffectiveRange()!=1 && PassiveskillCalEnum.contains(config.getType())){ + if(config!=null &&config.getEffectiveRange()!=1 && config.getType()==94){ passiveskillEffect.add(config.getId()); } }); } - user.getTeamPosManager().updatePassSkillTeamPos(teamId,passiveskillEffect); + return passiveskillEffect; } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/passiveSkillCal/PassiveSkillProcessor.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/passiveSkillCal/PassiveSkillProcessor.java index 84175ee03..5085e073f 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/passiveSkillCal/PassiveSkillProcessor.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/passiveSkillCal/PassiveSkillProcessor.java @@ -6,5 +6,5 @@ import config.SPassiveSkillLogicConfig; import java.util.Map; public interface PassiveSkillProcessor { - void process(SPassiveSkillLogicConfig config, Hero hero, Map sourceMap, Map heroSkillAdMap); + void process(SPassiveSkillLogicConfig config, Hero hero, Map heroSkillAdMap); } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/passiveSkillCal/PassiveskillCalEnum.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/passiveSkillCal/PassiveskillCalEnum.java index 9e366ad5f..9a0ce70e1 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/passiveSkillCal/PassiveskillCalEnum.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/passiveSkillCal/PassiveskillCalEnum.java @@ -9,7 +9,7 @@ import java.util.Map; //90 94 171 public enum PassiveskillCalEnum { - SingleAdd(90,(config,hero,sourceMap,heroSkillAdMap)->{ + SingleAdd(90,(config,hero,heroSkillAdMap)->{ float[] value = config.getValue(); int battlePropertyId = (int) value[0]; SPropertyConfig sPropertyConfig = SPropertyConfig.getsPropertyConfigByBattlePID(battlePropertyId); @@ -23,10 +23,10 @@ public enum PassiveskillCalEnum { parm = value[1]*10000; } - int extreeValue = (int) cal(optCode, sourceMap.getOrDefault(sPropertyConfig.getPropertyId(), 0), parm); + int extreeValue = (int) cal(optCode, parm); heroSkillAdMap.put(sPropertyConfig.getPropertyId(),heroSkillAdMap.getOrDefault(sPropertyConfig.getPropertyId(),0)+extreeValue); }), - AllAdd(94,(config,hero,sourceMap,heroSkillAdMap)->{ + AllAdd(94,(config,hero,heroSkillAdMap)->{ float[] value = config.getValue(); int battlePropertyId = (int) value[1]; SPropertyConfig sPropertyConfig = SPropertyConfig.getsPropertyConfigByBattlePID(battlePropertyId); @@ -39,10 +39,10 @@ public enum PassiveskillCalEnum { } parm = value[0]*10000; } - int extreeValue = (int) cal(optCode, sourceMap.getOrDefault(sPropertyConfig.getPropertyId(), 0), parm); + int extreeValue = (int) cal(optCode, parm); heroSkillAdMap.put(sPropertyConfig.getPropertyId(),heroSkillAdMap.getOrDefault(sPropertyConfig.getPropertyId(),0)+extreeValue); }), - HEROAFTER100ADD(171,(config,hero,sourceMap,heroSkillAdMap)->{ + HEROAFTER100ADD(171,(config,hero,heroSkillAdMap)->{ float[] value = config.getValue(); int battlePropertyId = (int) value[0]; SPropertyConfig sPropertyConfig = SPropertyConfig.getsPropertyConfigByBattlePID(battlePropertyId); @@ -87,7 +87,6 @@ public enum PassiveskillCalEnum { /** * @param optCode - * @param source * @param parm * a(当前属性) oa(战斗初始属性)b(增量) * 1 加算 a+b 增益 @@ -95,19 +94,19 @@ public enum PassiveskillCalEnum { * 3 减算 a-b 减益 * 4 乘减算 a*(1-b) 减益 对当前属性其效果,不是基础属性 */ - public static float cal(int optCode,int source,float parm){ + public static float cal(int optCode,float parm){ switch (optCode){ case 1:{ return parm; } case 2:{ - return parm*10000; + return parm; } case 3:{ return -parm; } case 4:{ - return -parm*10000; + return -parm; } } return 0f; 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 9e791f5b0..711eacbf0 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 @@ -672,8 +672,6 @@ public class HeroLogic{ HeroInfoProto.UpHeroLevelResponse build = HeroInfoProto.UpHeroLevelResponse.newBuilder().setHeroId(heroId).setTargetLevel(hero.getLevel()).build(); //发送成功消息 MessageUtil.sendMessage(session,1,MessageTypeProto.MessageType.UP_HERO_LEVEL_RESPONSE_VALUE,build,true); - calHeoForce(user,hero); - } /** @@ -1016,7 +1014,7 @@ public class HeroLogic{ int especialEquipId = equipTalismana[1]; Map sEquipTalismana = SEquipTalismana.equipTalismanaStarMap.get(especialEquipId); sEquipTalismana.forEach((k,v)->{ - if(kskillList.add(i)); } }); @@ -1291,6 +1289,10 @@ public class HeroLogic{ int tempStar = hero.getEspecialEquipLevel(); Map> equipTalismanaMap = SEquipTalismana.equipTalismanaStarMap; SEquipTalismana equipTali = equipTalismanaMap.get(equipTempId).get(tempStar); + Arrays.stream(equipTali.getProperty()).forEach(e->{ + System.out.println("----------" + e[0] +"----" +e[1] ); + }); + combinedAttribute(equipTali.getProperty(),heroAllAttribute); } @@ -1336,7 +1338,7 @@ public class HeroLogic{ heroSkillList.forEach(skill->{ SPassiveSkillLogicConfig config = SPassiveSkillLogicConfig.getConfig(skill); if(config.getValue()[2] !=4){ - PassiveskillCalEnum.calEnumMap.get(config.getType()).getPassiveSkillProcessor().process(config,hero,heroAllAttribute,heroSkillAdMap); + PassiveskillCalEnum.calEnumMap.get(config.getType()).getPassiveSkillProcessor().process(config,hero,heroSkillAdMap); } }); @@ -1344,11 +1346,13 @@ public class HeroLogic{ combinedAttribute(heroSkillAdMap,heroAllAttribute); heroSkillAdMap.clear(); } + calInteractAdd(heroAllAttribute); + heroSkillList.forEach(skill->{ SPassiveSkillLogicConfig configTmp = SPassiveSkillLogicConfig.getConfig(skill); if(configTmp.getValue()[2] ==4){ - PassiveskillCalEnum.calEnumMap.get(configTmp.getType()).getPassiveSkillProcessor().process(configTmp,hero,heroAllAttribute,heroSkillAdMap); + PassiveskillCalEnum.calEnumMap.get(configTmp.getType()).getPassiveSkillProcessor().process(configTmp,hero,heroSkillAdMap); } }); if(!heroSkillAdMap.isEmpty()){ @@ -1366,6 +1370,7 @@ public class HeroLogic{ + public Map calRobotHeroAttribute(SCHero scHero,int heroLevel,int heroBrekId,int[] pokemonIds,int pokemonLevel,boolean isForce){ Map heroAllAttribute = calRobotHeroAllAttribute(scHero.getId(),heroLevel,heroBrekId,isForce); heroAllAttribute.put(HeroAttributeEnum.CurHP.getPropertyId(),heroAllAttribute.get(GlobalsDef.HP_TYPE)); @@ -2023,15 +2028,6 @@ public class HeroLogic{ } hero.setIsLock(lockState); MessageUtil.sendMessage(session,1,responseMsgId,null,true); - - Map pokemonAttributeMap = new HashMap<>(); - Map pokemonMap = user.getPokemonManager().getPokemonMap(); - for(Pokemon pokemon : pokemonMap.values()){ - combinePokemonAttribute(pokemonAttributeMap, pokemon,false); - } - for(Map.Entry item : pokemonAttributeMap.entrySet()){ - LOGGER.info("the proId={},the value={}",item.getKey(),item.getValue()); - } } /** @@ -2092,9 +2088,9 @@ public class HeroLogic{ int userLevel = user.getPlayerInfoManager().getLevel(); for(HeroInfoProto.SoulEquipPos item:soulEquipIdsList){ int equipId = item.getEquipId(); - int[] sign_locations = SSpecialConfig.getOnceArrayValue("Sign_Location"); - int position = item.getPosition(); - if(positionsign_locations.length-1 || userLevel < sign_locations[position]){ + int[] sign_locations = SSpecialConfig.getOnceArrayValue(SSpecialConfig.Sign_Location); + int position = item.getPosition()-1; + if(position<0||position>sign_locations.length|| position>sign_locations.length-1 || userLevel < sign_locations[position]){ throw new ErrorCodeException(ErrorCode.SERVER_DEFINE); } SEquipConfig sEquipConfig = STableManager.getConfig(SEquipConfig.class).get(equipId); From 8f247ddff286d9c70bf97147130ebf01e6c25786 Mon Sep 17 00:00:00 2001 From: wangyuan Date: Wed, 22 Apr 2020 15:06:24 +0800 Subject: [PATCH 2/3] fix item drop --- .../main/java/com/ljsd/jieling/logic/hero/HeroLogic.java | 6 ++++-- .../src/main/java/com/ljsd/jieling/util/ItemUtil.java | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) 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 711eacbf0..c79fd500f 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 @@ -1023,12 +1023,14 @@ public class HeroLogic{ public StringBuilder getHeroSkills(User user,Hero hero, StringBuilder sb){ List heroSkillList = getHeroSkillList(user, hero); - heroSkillList.forEach(skill->{ + for(int i=2;i Date: Wed, 22 Apr 2020 15:07:02 +0800 Subject: [PATCH 3/3] fix --- .../handler/map/behavior/BehaviorUtil.java | 1 + .../com/ljsd/jieling/logic/hero/HeroLogic.java | 18 +++++++++++++++++- .../com/ljsd/jieling/util/FightDataUtil.java | 2 ++ .../java/config/SPassiveSkillLogicConfig.java | 4 ++++ 4 files changed, 24 insertions(+), 1 deletion(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/BehaviorUtil.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/BehaviorUtil.java index 1f1b0741c..e417657b9 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/BehaviorUtil.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/behavior/BehaviorUtil.java @@ -233,6 +233,7 @@ public class BehaviorUtil { .setUnitId(Integer.toString(hero.getTemplateId())) .setUnitSkillIds(heroSkill.substring(0,heroSkill.length()-1)) .setProperty(property.substring(0, property.length()-1)) + .setPosition(teamPosHeroInfo.getPosition()) .build(); heroFightInfos.add(heroFightInfo); } 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 c79fd500f..985fd9aa6 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 @@ -1021,10 +1021,26 @@ public class HeroLogic{ return skillList; } + public void coverSkill(List heroSkillList){ + Set coverSkillIds = new HashSet<>(); + heroSkillList.forEach(skill->{ + SPassiveSkillLogicConfig config = SPassiveSkillLogicConfig.getConfig(skill); + if(config!=null &&config.getCoverID()!=0){ + coverSkillIds.add(config.getCoverID()); + } + }); + heroSkillList.removeAll(coverSkillIds); + } + public StringBuilder getHeroSkills(User user,Hero hero, StringBuilder sb){ List heroSkillList = getHeroSkillList(user, hero); - for(int i=2;i