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 933c8a9f0..d24286bbe 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 @@ -328,15 +328,18 @@ public class CombatLogic { int contiue = sFoodsConfig.getContiue(); if(contiue==0){ int type = sFoodsConfig.getType(); - int target = sFoodsConfig.getTarget(); int[][] effectParas = sFoodsConfig.getEffectPara(); - if(type == GlobalsDef.FOOD_ADDITION_EXPLORE_TYPE && target == GlobalsDef.FOOD_EAT_AFFECT_PERSON){ + if(type == GlobalsDef.FOOD_ADDITION_EXPLORE_TYPE){ for(int[] effectPara : effectParas){ if(effectPara[0] == GlobalsDef.EXPLORE_MAP_ACTION_POWER_RORMULA_TYPE){ mapManager.setTotalStep(mapManager.getTotalStep() + effectPara[1]); } } } + if(type == GlobalsDef.FOOD_ADDITION_BATTLE_TYPE){ + mapManager.eatFood(foodIdOrEventId,sFoodsConfig.getContiue()); + } + }else{ mapManager.eatFood(foodIdOrEventId,sFoodsConfig.getContiue()); } @@ -345,9 +348,16 @@ public class CombatLogic { public Map attributeByEatFood( User user,int type,int target){ Map foddAddResult = new HashMap<>(); MapManager mapManager = user.getMapManager(); + Set removeFoodBufferIds = new HashSet<>(); Map foodBufferMap = mapManager.getFoodBufferMap(); for(Map.Entry foodBuffer : foodBufferMap.entrySet()){ int foodId = foodBuffer.getKey(); + Integer step = foodBuffer.getValue(); + int times =1; + if(step<0){ + times = step*-1; + removeFoodBufferIds.add(foodId); + } SFoodsConfig sFoodsConfig = SFoodsConfig.getsFoodsConfigByFoodId(foodId); int typeTmp = sFoodsConfig.getType(); int targetTmp = sFoodsConfig.getTarget(); @@ -355,7 +365,7 @@ public class CombatLogic { int[][] effectParas = sFoodsConfig.getEffectPara(); for(int[] effectPara : effectParas){ int effectId = effectPara[0]; - int effectValue = effectPara[1]; + int effectValue = effectPara[1] * times; if(!foddAddResult.containsKey(effectId)){ foddAddResult.put(effectId,effectValue); continue; @@ -364,6 +374,12 @@ public class CombatLogic { } } } + if(!removeFoodBufferIds.isEmpty()){ + for(Integer removeFoodId : removeFoodBufferIds){ + foodBufferMap.remove(removeFoodId); + } + mapManager.setFoodBufferMap(foodBufferMap); + } return foddAddResult; }