挂机获得装备自动合成

lvxinran 2020-07-02 17:32:39 +08:00
parent f42827869a
commit 52eb8e895a
1 changed files with 46 additions and 0 deletions

View File

@ -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<Integer, CommonProto.Drop> 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<Integer,Integer> equipAutoCombine(Map<Integer,Integer> equipMap){
if(equipMap.isEmpty())
return equipMap;
Map<Integer, SEquipConfig> config = STableManager.getConfig(SEquipConfig.class);
Map<Integer,Integer> tempMap = new HashMap<>();
for(Map.Entry<Integer,Integer> entry:equipMap.entrySet()) {
tempMap.put(entry.getKey(),entry.getValue());
}
boolean isOver;
int count = 0;
do {
isOver = true;
Iterator<Integer> 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;
}
}