diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/phone/GetPhoneRewardRequestHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/phone/GetPhoneRewardRequestHandler.java index 939608ec7..1277c312a 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/phone/GetPhoneRewardRequestHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/phone/GetPhoneRewardRequestHandler.java @@ -34,7 +34,7 @@ public class GetPhoneRewardRequestHandler extends BaseHandler sGlobalActivities = SGlobalActivity.sGlobalActivityMapByOpenRules.getOrDefault(3, new ArrayList<>(0)); sGlobalActivities.stream().filter(s->s.getOpenRules()[1] == activityId).forEach(s->{ ActivityMission activityMissionWillOpen = user.getActivityManager().getActivityMissionMap().get(s.getId()); 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; } } diff --git a/tablemanager/src/main/java/config/SEquipConfig.java b/tablemanager/src/main/java/config/SEquipConfig.java index 6d57ad9ae..bf63a1eb1 100644 --- a/tablemanager/src/main/java/config/SEquipConfig.java +++ b/tablemanager/src/main/java/config/SEquipConfig.java @@ -3,10 +3,7 @@ package config; import manager.STableManager; import manager.Table; -import java.util.Arrays; -import java.util.HashSet; -import java.util.Map; -import java.util.Set; +import java.util.*; @Table(name ="EquipConfig") public class SEquipConfig implements BaseConfig { @@ -57,10 +54,11 @@ public class SEquipConfig implements BaseConfig { private int[] passiveSkill; - + public static Map> positionStarMap ; @Override public void init() throws Exception { + Map> tempMap = new HashMap<>(); Map config = STableManager.getConfig(SEquipConfig.class); config.forEach((k,v)->{ if(v.getRange()!=null && v.getRange().length>0 && v.getRange()[0]!=0){ @@ -68,9 +66,12 @@ public class SEquipConfig implements BaseConfig { Arrays.stream(v.getRange()).forEach(e->rangeTemp.add(e)); v.setRangeHeroTids(rangeTemp); } - + if(v.getPosition()!=5){ + tempMap.computeIfAbsent(v.getPosition(),m->new HashMap<>()).put(v.getStar(),v); + } }); + positionStarMap = tempMap; }