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 bd955cff0..21e5431ef 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 @@ -7,6 +7,7 @@ import com.ljsd.jieling.handler.map.MapManager; import com.ljsd.jieling.logic.dao.*; import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.dao.UserManager; +import com.ljsd.jieling.logic.hero.HeroAttributeEnum; import com.ljsd.jieling.network.session.ISession; import com.ljsd.jieling.protocols.CommonProto; import com.ljsd.jieling.protocols.FightInfoProto; @@ -249,6 +250,9 @@ public class CombatLogic { Map> heroAllAttributeMap = mapManager.getHeroAllAttributeMap(); for(Map.Entry> item : heroAllAttributeMap.entrySet()){ Map value = item.getValue(); + if(value.get(HeroAttributeEnum.CurHP.getPropertyId()) == 0){ + continue; + } for(int[] effectPara : effectParas){ int effectId = effectPara[0]; int effectValue = effectPara[1]; @@ -256,7 +260,22 @@ public class CombatLogic { value.put(effectId,effectValue); continue; } - value.put( effectId,value.get(effectId) + effectValue ); + int finalValue = value.get(effectId) + effectValue; + if(finalValue < 0){ + finalValue = 0; + } + if(effectId == HeroAttributeEnum.CurHP.getPropertyId()){ + Integer maxValue = value.get(HeroAttributeEnum.Hp.getPropertyId()); + if(finalValue>maxValue){ + finalValue = maxValue; + } + if(finalValue == 0){ + finalValue =1; + } + } + + + value.put( effectId,finalValue ); change = true; } } 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 6453277ca..d6adb1e7b 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 @@ -316,7 +316,7 @@ public class WorkShopLogic { MessageUtil.sendErrorResponse(session,0,MessageTypeProto.MessageType.WORKSHOP_REBUILD_RESPONSE_VALUE,""); return; } - String err = checkForRebuildEquip(user, consumeEquipIds, sEquipConfig); + String err = checkForRebuildEquip(user, consumeEquipIds, sEquipConfig,equipId); if(!"".equals(err)){ MessageUtil.sendErrorResponse(session,0,MessageTypeProto.MessageType.WORKSHOP_REBUILD_RESPONSE_VALUE,err); return; @@ -332,7 +332,7 @@ public class WorkShopLogic { } - private String checkForRebuildEquip( User user,List consumeEquipIds,SEquipConfig sEquipConfig) throws Exception { + private String checkForRebuildEquip( User user,List consumeEquipIds,SEquipConfig sEquipConfig,String excludeEquipId) throws Exception { EquipManager equipManager = user.getEquipManager(); Map equipMap = equipManager.getEquipMap(); SWorkShopRebuildConfig sWorkShopRebuildConfig = SWorkShopRebuildConfig.getsWorkShopRebuildConfigByQulity(sEquipConfig.getQuality()); @@ -345,6 +345,9 @@ public class WorkShopLogic { return "祭品数量不对"; } for(String consumeEquipId : consumeEquipIds){ + if(consumeEquipId.equals(excludeEquipId)){ + return "祭品错误"; + } Equip consumeEquip = equipMap.get(consumeEquipId); if(consumeEquip == null){ costResult = false;