diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java index 6e534789a..594edcdcc 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java @@ -110,20 +110,20 @@ public class MapLogic { return; } // TODO 可进入地图条件判断 -// int[][] openRule = sChallengeConfig.getOpenRule(); -// if (openRule != null && openRule.length > 0) { -// if (user.getPlayerInfoManager().getLevel() < openRule[0][1]) { -// MessageUtil.sendErrorResponse(iSession, 0, messageType.getNumber(), "需要等级:" + openRule[0][1]); -// return; -// } -// LevelDifficulty levelDifficulty = user.getLevelDifficultyManager().getLevelDifficultyInfosMap().get(openRule[0][0]); -// if (levelDifficulty == null && levelDifficulty.getState() != 4) { -// if (user.getPlayerInfoManager().getLevel() < openRule[0][1]) { -// MessageUtil.sendErrorResponse(iSession, 0, messageType.getNumber(), "需要通关:" + openRule[0][0]); -// return; -// } -// } -// } + int[][] openRule = sChallengeConfig.getOpenRule(); + if (openRule != null && openRule.length > 0) { + if (user.getPlayerInfoManager().getLevel() < openRule[0][1]) { + MessageUtil.sendErrorResponse(iSession, 0, messageType.getNumber(), "需要等级:" + openRule[0][1]); + return; + } + LevelDifficulty levelDifficulty = user.getLevelDifficultyManager().getLevelDifficultyInfosMap().get(openRule[0][0]); + if (levelDifficulty == null || levelDifficulty.getState() != 4) { + if (user.getPlayerInfoManager().getLevel() < openRule[0][1]) { + MessageUtil.sendErrorResponse(iSession, 0, messageType.getNumber(), "需要通关:" + openRule[0][0]); + return; + } + } + } SChallengeSetting sChallengeSetting = SChallengeSetting.challengeSetting; if (mapManager.getDayFightCount() >= sChallengeSetting.getLimit() + mapManager.getBuyFightCount()) { LOGGER.info("enterMap() uid=>{} max fight count =>{} ", uid, mapManager.getDayFightCount()); 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 b0d7cdf7f..7e168c552 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 @@ -185,7 +185,7 @@ public class BehaviorUtil { SCHero scHero = SCHero.getsCHero().get(heroTid); List skillIds = scHero.getSkillListByStar().get(heroStar); String heroSkill = HeroLogic.getInstance().getRobotHeroSkills(skillIds,skillSb).toString(); - String property = HeroLogic.getInstance().getRobotHeroProperty(sArenaRobotConfig,heroTid,propertySb).toString(); + String property = HeroLogic.getInstance().getRobotHeroProperty(sArenaRobotConfig,scHero,propertySb).toString(); CommonProto.FightUnitInfo heroFightInfo = CommonProto.FightUnitInfo .newBuilder() .setUnitId(Integer.toString(heroTid)) 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 e11204a7e..97e6b24ab 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 @@ -776,24 +776,28 @@ public class HeroLogic { return sb; } - public StringBuilder getRobotHeroProperty(SArenaRobotConfig sArenaRobotConfig,int heroTid, StringBuilder sb){ + public StringBuilder getRobotHeroProperty(SArenaRobotConfig sArenaRobotConfig,SCHero scHero, StringBuilder sb){ int[] differDemonsId = sArenaRobotConfig.getDifferDemonsId(); int differDemonsLv = sArenaRobotConfig.getDifferDemonsLv(); - int robotLevel = sArenaRobotConfig.getRobotLevel(); - Map robotHeroAttribute = calRobotHeroAttribute(heroTid, robotLevel, sArenaRobotConfig.getBreakId(), differDemonsId, differDemonsLv); + int robotLevel = sArenaRobotConfig.getRoleLv(); + Map robotHeroAttribute = calRobotHeroAttribute(scHero, robotLevel, sArenaRobotConfig.getBreakId(), differDemonsId, differDemonsLv); sb.append(robotLevel).append(DIVISION); - SCHero scHero = SCHero.getsCHero().get(heroTid); List templatePropetyIds = transTemplateByHeroPropertyName.get(scHero.getPropertyName()); for(Integer templatePropetyId:templatePropetyIds){ Integer propertyValue = robotHeroAttribute.get(templatePropetyId); if(propertyValue == null){ propertyValue =0; } - if(templatePropetyId>100){ - sb.append(propertyValue*0.1/(robotLevel+10)).append(DIVISION); + SPropertyConfig sPropertyConfig = SPropertyConfig.getsPropertyConfigByPID(templatePropetyId); + if(sPropertyConfig.getIfFormula() == 1){ + sb.append(propertyValue*0.1/(sArenaRobotConfig.getRoleLv()+10)/100).append(DIVISION); }else{ - sb.append(propertyValue).append(DIVISION); + if(sPropertyConfig.getStyle() == GlobalsDef.PERCENT_TYPE){ + sb.append(propertyValue/10000f).append(DIVISION); + }else{ + sb.append(propertyValue).append(DIVISION); + } } } @@ -872,15 +876,21 @@ public class HeroLogic { } - public Map calRobotHeroAttribute(int template,int heroLevel,int heroBrekId,int[] pokemonIds,int pokemonLevel){ - Map heroAllAttribute = calRobotHeroAllAttribute(template,heroLevel,heroBrekId); + public Map calRobotHeroAttribute(SCHero scHero,int heroLevel,int heroBrekId,int[] pokemonIds,int pokemonLevel){ + Map heroAllAttribute = calRobotHeroAllAttribute(scHero.getId(),heroLevel,heroBrekId); heroAllAttribute.put(HeroAttributeEnum.CurHP.getPropertyId(),heroAllAttribute.get(GlobalsDef.HP_TYPE)); if(pokemonIds!=null){ + int profession = scHero.getProfession(); for(Integer pokemonId : pokemonIds){ int[] comonpentList = SDifferDemonsConfig.getsDifferDemonsConfigByPokenID(pokemonId).getComonpentList(); for(Integer comonpentId : comonpentList){ Map sDifferDemonsComonpentsConfigMap = SDifferDemonsComonpentsConfig.getsDifferDemonsComonpentsConfigMap(comonpentId); SDifferDemonsComonpentsConfig sDifferDemonsComonpentsConfig = sDifferDemonsComonpentsConfigMap.get(pokemonLevel); + Map> extraAddMap = sDifferDemonsComonpentsConfig.getExtraAddMap(); + if(extraAddMap!=null&&extraAddMap.containsKey(profession)){ + Map professionAddMap = extraAddMap.get(profession); + combinedAttribute(professionAddMap,heroAllAttribute); + } combinedAttribute(sDifferDemonsComonpentsConfig.getBaseAttribute(),heroAllAttribute); } } @@ -1257,10 +1267,11 @@ public class HeroLogic { List heroList = sArenaRobotConfig.getHeroList(); int[] differDemonsId = sArenaRobotConfig.getDifferDemonsId(); int differDemonsLv = sArenaRobotConfig.getDifferDemonsLv(); - int robotLevel = sArenaRobotConfig.getRobotLevel(); + int heroLevel = sArenaRobotConfig.getRoleLv(); for(Integer heroTid :heroList){ int heroBreakId = sArenaRobotConfig.getBreakId(); - Map robotHeroAttribute = calRobotHeroAttribute(heroTid, robotLevel, heroBreakId, differDemonsId, differDemonsLv); + SCHero scHero = SCHero.getsCHero().get(heroTid); + Map robotHeroAttribute = calRobotHeroAttribute(scHero, heroLevel, heroBreakId, differDemonsId, differDemonsLv); totalForce+=calForce(robotHeroAttribute); } return totalForce; @@ -1270,10 +1281,10 @@ public class HeroLogic { Map integerSArenaRobotConfigMap = SArenaRobotConfig.getsArenaRobotConfigMap(); for(SArenaRobotConfig sArenaRobotConfig : integerSArenaRobotConfigMap.values()){ List heroList = sArenaRobotConfig.getHeroList(); - int robotLevel = sArenaRobotConfig.getRobotLevel(); + int heroLevel = sArenaRobotConfig.getRobotLevel(); Map starHeroMap = new HashMap<>(); for(Integer heroTid :heroList){ - int heroBreakId = calRobotStarByLevel(heroTid, robotLevel,starHeroMap); + int heroBreakId = calRobotStarByLevel(heroTid, heroLevel,starHeroMap); sArenaRobotConfig.setBreakId(heroBreakId); sArenaRobotConfig.setStarOfHeroMap(starHeroMap); } @@ -1285,8 +1296,10 @@ public class HeroLogic { Map> teamPosForHero = user.getTeamPosManager().getTeamPosForHero(); for (Map.Entry> entry: teamPosForHero.entrySet() ){ List values = entry.getValue(); - if (values.contains(heroId)){ - return true; + for(TeamPosHeroInfo teamPosHeroInfo : values){ + if(heroId.equals(teamPosHeroInfo.getHeroId())){ + return true; + } } } return false;