diff --git a/serverlogic/src/main/java/com/ljsd/jieling/config/SWorkShopSetting.java b/serverlogic/src/main/java/com/ljsd/jieling/config/SWorkShopSetting.java index 1481f2de3..d3a53022e 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/config/SWorkShopSetting.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/config/SWorkShopSetting.java @@ -2,6 +2,7 @@ package com.ljsd.jieling.config; import com.ljsd.jieling.logic.STableManager; import com.ljsd.jieling.logic.Table; +import com.ljsd.jieling.util.MathUtils; import java.util.HashMap; import java.util.Map; @@ -41,18 +42,17 @@ public class SWorkShopSetting implements BaseConfig { Map promoteMapTmp = new HashMap<>(); int maxExpTmp = 0; int maxCookExpTmp = 0; - int exp =0; for(SWorkShopSetting sWorkShopSetting : sWorkShopSettingMapTmp.values()){ - exp+=sWorkShopSetting.getExp(); + Map promoteMapTmptm = new HashMap<>(promoteMapTmp); int[] promote = sWorkShopSetting.getPromote(); if(promote!=null&&promote.length>0){ promoteMapTmp.put(promote[0],promote[1]); - sWorkShopSetting.setPromoteMap(promoteMapTmp); + promoteMapTmptm.put(promote[0],promote[1]); + sWorkShopSetting.setPromoteMap(promoteMapTmptm); } - maxExpTmp+=sWorkShopSetting.getExp(); - maxExpTmp+=sWorkShopSetting.getFoodExp(); - sWorkShopSetting.setExp(exp); + maxExpTmp = MathUtils.getMaxNum(maxExpTmp,sWorkShopSetting.getExp()); + maxCookExpTmp=MathUtils.getMaxNum(maxExpTmp,sWorkShopSetting.getFoodExp()); int[][] poolWeight = sWorkShopSetting.getPoolRate(); if(poolWeight!=null && poolWeight.length>0){ int totalWeight = 0; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/Equip.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/Equip.java index b610cad64..ca3a4f965 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/Equip.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/Equip.java @@ -2,6 +2,7 @@ package com.ljsd.jieling.logic.dao; import com.ljsd.common.mogodb.MongoBase; import com.ljsd.jieling.config.*; +import com.ljsd.jieling.core.GlobalsDef; import com.ljsd.jieling.util.KeyGenUtils; import com.ljsd.jieling.util.MathUtils; import com.ljsd.jieling.util.UUIDEnum; @@ -143,29 +144,46 @@ public class Equip extends MongoBase { } public void rebuildEquip(int workShopLevle){ - SWorkShopSetting sWorkShopSetting = SWorkShopSetting.getsWorkShopSettingByLevel(workShopLevle); - if( null == sWorkShopSetting ){ - return; - } - Map promoteMap = sWorkShopSetting.getPromoteMap(); SEquipConfig sEquipConfig = SEquipConfig.getsEquipConfigById(this.equipId); int properTyId = sEquipConfig.getPropertyMin()[0]; - Integer propertyPromote = promoteMap.get(properTyId); - int properMinNum = sEquipConfig.getPropertyMin()[1]; - int properMaxNum = sEquipConfig.getPropertyMax()[1]; - int finalProperValue = MathUtils.random(properMinNum * (100 + propertyPromote) / 100, properMaxNum* (100 + propertyPromote) / 100); - this.propertyValueByIdMap.put(properTyId,finalProperValue); + SWorkShopSetting sWorkShopSetting = SWorkShopSetting.getsWorkShopSettingByLevel(workShopLevle); + Map promoteMap = null; + SPropertyConfig sPropertyConfigFirst = SPropertyConfig.getsPropertyConfigByPID(properTyId); + if(sPropertyConfigFirst != null && sPropertyConfigFirst.getStyle() == GlobalsDef.ABSOLUTE_TYPE){ + Integer propertyPromote = null; + if( sWorkShopSetting !=null ){ + promoteMap = sWorkShopSetting.getPromoteMap(); + if(promoteMap!=null){ + propertyPromote = promoteMap.get(properTyId); + } + } + if(propertyPromote==null){ + propertyPromote =0; + } + int properMinNum = sEquipConfig.getPropertyMin()[1]; + int properMaxNum = sEquipConfig.getPropertyMax()[1]; + int finalProperValue = MathUtils.random(properMinNum * (100 + propertyPromote) / 100, properMaxNum* (100 + propertyPromote) / 100); + this.propertyValueByIdMap.put(properTyId,finalProperValue); + } List sEquipPropertyPoolList = SEquipPropertyPool.getSEquipPropertyPool(sEquipConfig.getPool()); for(SEquipPropertyPool sEquipPropertyPool : sEquipPropertyPoolList){ - Integer secondPropertyId = secondValueByIdMap.get(sEquipPropertyPool.getId()); - if(secondPropertyId == null ){ + int secondPropertyId = sEquipPropertyPool.getPropertyId(); + if(!secondValueByIdMap.containsKey(secondPropertyId)){ continue; } - Integer secondPropertyPromote = promoteMap.get(secondPropertyId); + SPropertyConfig sPropertyConfig = SPropertyConfig.getsPropertyConfigByPID(secondPropertyId); + if(sPropertyConfig == null || sPropertyConfig.getStyle() != GlobalsDef.ABSOLUTE_TYPE){ + continue; + } + Integer secondPropertyPromote =null; + if(promoteMap!=null){ + secondPropertyPromote = promoteMap.get(secondPropertyId); + } if(secondPropertyPromote == null){ - continue; + secondPropertyPromote =0; } + int value = MathUtils.random(sEquipPropertyPool.getMin() * (100 + secondPropertyPromote) / 100, sEquipPropertyPool.getMax()* (100 + secondPropertyPromote) / 100); secondValueByIdMap.put(secondPropertyId,value); } 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 852eadf16..b94861d7c 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 @@ -245,17 +245,6 @@ public class HeroLogic { } Set cacheHeroIds = new HashSet<>(); - Set alreadyHeroIds = new HashSet<>(); - Map> teamPosForHero = user.getTeamPosManager().getTeamPosForHero(); - for(Integer teamIdTmp : teamPosForHero.keySet()){ - if(teamIdTmp == teamId){ - continue; - } - List teamPosHeroInfoList = teamPosForHero.get(teamIdTmp); - for(TeamPosHeroInfo teamPosHeroInfo : teamPosHeroInfoList){ - alreadyHeroIds.add(teamPosHeroInfo.getHeroId()); - } - } for(CommonProto.TeamHeroInfo teamHeroInfo: heroIds){ String heroId = teamHeroInfo.getHeroId(); if(user.getHeroManager().getHero(heroId) == null) { @@ -266,9 +255,6 @@ public class HeroLogic { if(cacheHeroIds.contains(heroId)){ return "card repeated"; } - if(alreadyHeroIds.contains(heroId)){ - return "card repeated"; - } cacheHeroIds.add(heroId); } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/item/WorkShopLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/item/WorkShopLogic.java index 2a4341208..cc3b98343 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/item/WorkShopLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/item/WorkShopLogic.java @@ -216,8 +216,9 @@ public class WorkShopLogic { User user = UserManager.getUser(uid); SWorkShopFoundationConfig sWorkShopFoundationConfig = SWorkShopFoundationConfig.getShopFoundationConfigMap().get(materialId); if(!checkIsUnlock(GlobalsDef.WORK_BASE_TYPE,sWorkShopFoundationConfig.getType(),user.getWorkShopController(),sWorkShopFoundationConfig.getOpenRules())){ - MessageUtil.sendErrorResponse(session,0,MessageTypeProto.MessageType.WORKSHOP_FOUNDATION_RESPONSE_VALUE,"未开"); - return; + // MessageUtil.sendErrorResponse(session,0,MessageTypeProto.MessageType.WORKSHOP_FOUNDATION_RESPONSE_VALUE,"未开"); + // return; + LOGGER.error("不匹配"); } int[][] cost = sWorkShopFoundationConfig.getCost(); times2Array(cost,nums); @@ -247,8 +248,9 @@ public class WorkShopLogic { User user = UserManager.getUser(uid); SWorkShopEquipmentConfig sWorkShopEquipmentConfig = SWorkShopEquipmentConfig.getsWorkShopEquipmentConfigMap().get(equipTid); if(!checkIsUnlock(GlobalsDef.WORK_CREATE_TYPE,sWorkShopEquipmentConfig.getType(),user.getWorkShopController(),sWorkShopEquipmentConfig.getOpenRules())){ - MessageUtil.sendErrorResponse(session,0,MessageTypeProto.MessageType.WORKSHOP_FOUNDATION_RESPONSE_VALUE,"未开"); - return; + // MessageUtil.sendErrorResponse(session,0,MessageTypeProto.MessageType.WORKSHOP_FOUNDATION_RESPONSE_VALUE,"未开"); + // return; + LOGGER.error("不匹配"); } int runesNum = sWorkShopEquipmentConfig.getRunesNum(); int[][] specialRunes = sWorkShopEquipmentConfig.getSpecialRunes(); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/util/MathUtils.java b/serverlogic/src/main/java/com/ljsd/jieling/util/MathUtils.java index 874a47262..2e439aa60 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/util/MathUtils.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/util/MathUtils.java @@ -112,4 +112,10 @@ public class MathUtils { return original; } + public static int getMaxNum(int a, int b) { + if(a>=b){ + return a; + } + return b; + } }