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 7142b55b4..dc24abc9e 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 @@ -271,6 +271,7 @@ public class CombatLogic { while (timesTemp-->0){ ItemUtil.combineReward(user,true,targetMainLevelConfig.getRandomReward(), 1f,randomItemMap,randomCardMap,randomEquipMap,randomRandomMap,BIReason.ADVENTURE_RANDOM_REWARDD); } + randomEquipMap = equipAutoCombine(randomEquipMap); ItemUtil.drop(user,baseBuilder,baseItemMap,baseCardMap,baseEquipMap,baseRandomMap,BIReason.ADVENTURE_BASE_REWARD); ItemUtil.drop(user,randomBuilder,randomItemMap,randomCardMap,randomEquipMap,randomRandomMap,BIReason.ADVENTURE_RANDOM_REWARDD); Map result = new HashMap<>(2); @@ -953,6 +954,8 @@ public class CombatLogic { } ItemUtil.extraAddItem(user,baseItemMap,BIReason.ADVENTURE_BASE_REWARD); ItemUtil.extraAddItem(user,randomItemMap,BIReason.ADVENTURE_RANDOM_REWARDD); + //装备合成 + randomEquipMap = equipAutoCombine(randomEquipMap); if(viewBaseReward){ myResult = true; rewardStr = ItemUtil.getReward(baseItemMap, baseCardMap, baseEquipMap, baseRandomMap); @@ -980,5 +983,48 @@ public class CombatLogic { myResult = false; return this; } + + } + private static Map equipAutoCombine(Map equipMap){ + if(equipMap.isEmpty()) + return equipMap; + Map config = STableManager.getConfig(SEquipConfig.class); + Map tempMap = new HashMap<>(); + for(Map.Entry entry:equipMap.entrySet()) { + tempMap.put(entry.getKey(),entry.getValue()); + } + boolean isOver; + int count = 0; + do { + isOver = true; + Iterator it = equipMap.keySet().iterator(); + while(it.hasNext()){ + int key = it.next(); + int value = equipMap.get(key); + SEquipConfig sEquipConfig = config.get(key); + if(sEquipConfig==null) + continue; + int star = sEquipConfig.getStar(); + SEquipStarsConfig sEquipStarsConfig = STableManager.getConfig(SEquipStarsConfig.class).get(star); + int createCount = value / sEquipStarsConfig.getRankupCount(); + if(createCount==0){ + continue; + } + int position = sEquipConfig.getPosition(); + tempMap.put(key,value%sEquipStarsConfig.getRankupCount()); + SEquipConfig createConfig = SEquipConfig.positionStarMap.get(position).get(star + 1); + + if(createConfig==null) + continue; + + int createId = createConfig.getId(); + + tempMap.put(createId,tempMap.getOrDefault(createId,0)+createCount); + isOver = false; + } + equipMap = tempMap; + count++; + }while(!isOver&&count<5); + return equipMap; } }