英雄分解修改 提交
parent
4c3f272357
commit
c525e3e429
|
@ -2,6 +2,7 @@ package com.ljsd.jieling.config.clazzStaticCfg;
|
|||
|
||||
import com.ljsd.jieling.core.GlobalsDef;
|
||||
import config.SCHeroRankUpConfig;
|
||||
import config.SHeroSacrifice;
|
||||
import config.SLotterySetting;
|
||||
import manager.AbstractClassStaticConfig;
|
||||
import manager.STableManager;
|
||||
|
@ -19,6 +20,7 @@ public class HeroStaticConfig extends AbstractClassStaticConfig {
|
|||
private Map<Integer, Map<Integer, Map<Integer, SCHeroRankUpConfig>>> scHeroRankUpConfigByShow;
|
||||
private Map<Integer, Map<Integer, Map<Integer, SCHeroRankUpConfig>>> scHeroRankUpConfigByType;
|
||||
|
||||
private Map<Integer,Map<Integer, SHeroSacrifice>> sHeroSacrificeMap;
|
||||
private Set<Integer> randomHeroIds;
|
||||
private Map<Integer,Integer> randomPoolByType;
|
||||
|
||||
|
@ -69,6 +71,12 @@ public class HeroStaticConfig extends AbstractClassStaticConfig {
|
|||
}
|
||||
scHeroRankUpConfigByShow = result;
|
||||
scHeroRankUpConfigByType = calc;
|
||||
Map<Integer,Map<Integer, SHeroSacrifice>> sHeroSacrificeMapTemp = new HashMap<>();
|
||||
Map<Integer, SHeroSacrifice> sHeroSacrificeConfig = STableManager.getConfig(SHeroSacrifice.class);
|
||||
for(SHeroSacrifice sacrificeconfig:sHeroSacrificeConfig.values()){
|
||||
sHeroSacrificeMapTemp.computeIfAbsent(sacrificeconfig.getType(),n->new HashMap<>()).put(sacrificeconfig.getKey(),sacrificeconfig);
|
||||
}
|
||||
sHeroSacrificeMap = sHeroSacrificeMapTemp;
|
||||
|
||||
} catch (Exception e) {
|
||||
LOGGER.error("SCHeroRankUpConfig init fail");
|
||||
|
@ -98,6 +106,10 @@ public class HeroStaticConfig extends AbstractClassStaticConfig {
|
|||
return scHeroRankUpConfigByType.get(type).get(heroInitStar);
|
||||
}
|
||||
|
||||
public SHeroSacrifice getsHeroSacrificeMap(int type,int param) {
|
||||
return sHeroSacrificeMap.get(type).get(param);
|
||||
}
|
||||
|
||||
public Set<Integer> getRandomHeroIds() {
|
||||
return randomHeroIds;
|
||||
}
|
||||
|
|
|
@ -2,6 +2,7 @@ package com.ljsd.jieling.logic.item;
|
|||
|
||||
import com.ljsd.jieling.chat.logic.ChatLogic;
|
||||
import com.ljsd.jieling.config.clazzStaticCfg.CommonStaticConfig;
|
||||
import com.ljsd.jieling.config.clazzStaticCfg.HeroStaticConfig;
|
||||
import com.ljsd.jieling.exception.ErrorCode;
|
||||
import com.ljsd.jieling.exception.ErrorCodeException;
|
||||
import com.ljsd.jieling.globals.BIReason;
|
||||
|
@ -367,7 +368,6 @@ public class ItemLogic {
|
|||
CommonProto.Drop.Builder baseBuilder = CommonProto.Drop.newBuilder();
|
||||
User user = UserManager.getUser(uid);
|
||||
HeroManager heroManager = user.getHeroManager();
|
||||
StringBuilder reward = new StringBuilder();
|
||||
ErrorCode erroMags = checkHeroResolve(heroIdsList,user);
|
||||
if (null!=erroMags){
|
||||
throw new ErrorCodeException(erroMags);
|
||||
|
@ -377,46 +377,25 @@ public class ItemLogic {
|
|||
//1裸角色卡(没有突破过的角色卡)熔炼后返还的材料=当前等级返还升级材料+item表返还材料
|
||||
//2有过突破的卡 =当前等级返还升级材料+突破表返还材料
|
||||
Map<Integer, Integer> baseItemMap = new HashMap<>();
|
||||
Map<Integer, Integer> baseCardMap = new HashMap<>();
|
||||
Map<Integer, Integer> baseEquipMap = new HashMap<>();
|
||||
Map<Integer,Integer> baseRandomMap = new HashMap<>();
|
||||
int rankUpReturnPercent= SSpecialConfig.getIntegerValue(SSpecialConfig.HERO_SACRIFICE_PERCENT);
|
||||
for (String heroId : heroIdsList) {
|
||||
Hero hero = heroManager.getHeroMap().get(heroId);
|
||||
heroManager.removeHero(uid,heroId);
|
||||
int[][] sumConsume = SHeroLevlConfig.getsHeroLevlConfigMap().get(hero.getLevel()).getSumConsume();
|
||||
|
||||
ItemUtil.combineReward(itemReturnPercent(sumConsume,rankUpReturnPercent),baseItemMap,baseCardMap,baseEquipMap,baseRandomMap);
|
||||
int breakId = hero.getBreakId();
|
||||
int starBreakId = hero.getStarBreakId();
|
||||
if(breakId!=0 || starBreakId!=0){
|
||||
SCHeroRankUpConfig scHeroRankUpConfig = STableManager.getConfig(SCHeroRankUpConfig.class).get(breakId);
|
||||
if(scHeroRankUpConfig!=null){
|
||||
int[][] levelUpReturn = scHeroRankUpConfig.getSumConsume();
|
||||
ItemUtil.combineReward(itemReturnPercent(levelUpReturn,rankUpReturnPercent),baseItemMap,baseCardMap,baseEquipMap,baseRandomMap);
|
||||
}
|
||||
scHeroRankUpConfig = STableManager.getConfig(SCHeroRankUpConfig.class).get(starBreakId);
|
||||
if(scHeroRankUpConfig!=null){
|
||||
int[][] levelUpReturn = scHeroRankUpConfig.getSumConsume();
|
||||
ItemUtil.combineReward(itemReturnPercent(levelUpReturn,rankUpReturnPercent),baseItemMap,baseCardMap,baseEquipMap,baseRandomMap);
|
||||
}
|
||||
|
||||
continue;
|
||||
SHeroSacrifice starSHeroSacrifice = STableManager.getFigureConfig(HeroStaticConfig.class).getsHeroSacrificeMap(1, hero.getStar());
|
||||
SHeroSacrifice breakSHeroSacrifice = STableManager.getFigureConfig(HeroStaticConfig.class).getsHeroSacrificeMap(2, hero.getBreakId());
|
||||
for(int[] item:sumConsume){
|
||||
baseItemMap.put(item[0],baseItemMap.getOrDefault(item[0],0)+item[1]);
|
||||
}
|
||||
SItem sItem = SItem.getsItemMap().get(hero.getTemplateId());
|
||||
|
||||
if(null==filterItem){
|
||||
if (reward.length() == 0) {
|
||||
reward = new StringBuilder(sItem.getResolveReward());
|
||||
} else {
|
||||
reward.append("#").append(sItem.getResolveReward());
|
||||
}
|
||||
for(int[] item:starSHeroSacrifice.getValue()){
|
||||
baseItemMap.put(item[0],baseItemMap.getOrDefault(item[0],0)+item[1]);
|
||||
}
|
||||
for(int[] item:breakSHeroSacrifice.getValue()){
|
||||
baseItemMap.put(item[0],baseItemMap.getOrDefault(item[0],0)+item[1]);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
ItemUtil.combineReward(user,false, StringUtil.parseFiledInt(reward.toString()),1,baseItemMap,baseCardMap,baseEquipMap,baseRandomMap,-1);
|
||||
|
||||
int[][] itemArray = ItemUtil.mapToArray(baseItemMap);
|
||||
int reson = BIReason.DECOMPOS_HERO_REWARD;
|
||||
if(null!=filterItem){
|
||||
reson= BIReason.UPHERO_DECOMPOS_HERO_REWARD;
|
||||
|
@ -428,10 +407,7 @@ public class ItemLogic {
|
|||
}else {
|
||||
user.getUserMissionManager().onGameEvent(user,GameEvent.DESPOSE_HERO,heroIdsList.size());
|
||||
}
|
||||
|
||||
|
||||
ItemUtil.drop(user,baseBuilder,baseItemMap,baseCardMap,baseEquipMap,baseRandomMap, reson);
|
||||
return baseBuilder;
|
||||
return ItemUtil.drop(user,itemReturnPercent(itemArray,rankUpReturnPercent),reson);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -672,7 +672,7 @@ public class ItemUtil {
|
|||
}
|
||||
playerInfoManager.setExp(curExp);
|
||||
if (playerInfoManager.getLevel() > oldLevel) {
|
||||
ReportUtil.onReportEvent(user, ReportEventEnum.LEVEL_UP.getType(),1,playerInfoManager.getLevel());
|
||||
ReportUtil.onReportEvent(user, ReportEventEnum.LEVEL_UP.getType(),oldLevel,playerInfoManager.getLevel()-oldLevel,playerInfoManager.getLevel());
|
||||
user.getUserMissionManager().onGameEvent(user, GameEvent.USER_LEVELUP,oldLevel+1,playerInfoManager.getLevel());
|
||||
}
|
||||
|
||||
|
@ -1463,6 +1463,27 @@ public class ItemUtil {
|
|||
}
|
||||
return sourceNum;
|
||||
}
|
||||
public static int[][] mapToArray(Map<Integer,Integer> map){
|
||||
|
||||
int[][] itemArray = new int[map.size()][];
|
||||
int i = 0 ;
|
||||
for(Map.Entry<Integer,Integer> entry:map.entrySet()){
|
||||
itemArray[i] = new int[]{entry.getKey(),entry.getValue()};
|
||||
i++;
|
||||
}
|
||||
return itemArray;
|
||||
|
||||
}
|
||||
public static Map<Integer,Integer> arrayToMap(int[][] array){
|
||||
|
||||
Map<Integer,Integer> map = new HashMap<>(array.length);
|
||||
for(int[] itemArray:array ){
|
||||
map.put(itemArray[0],map.getOrDefault(itemArray[0],0)+itemArray[1]);
|
||||
}
|
||||
return map;
|
||||
|
||||
}
|
||||
|
||||
|
||||
private static int parseTheValueByPrivilegeMap(User user,int sourceNum,int privigeId){
|
||||
int privigeValue = PlayerLogic.getInstance().getMaxCountByPrivilegeType(user,privigeId);
|
||||
|
|
|
@ -0,0 +1,43 @@
|
|||
package config;
|
||||
|
||||
import manager.STableManager;
|
||||
import manager.Table;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
@Table(name ="HeroSacrifice")
|
||||
public class SHeroSacrifice implements BaseConfig {
|
||||
|
||||
private int id;
|
||||
|
||||
private int type;
|
||||
|
||||
private int key;
|
||||
|
||||
private int[][] value;
|
||||
|
||||
|
||||
@Override
|
||||
public void init() throws Exception {
|
||||
|
||||
}
|
||||
|
||||
|
||||
public int getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public int getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
public int getKey() {
|
||||
return key;
|
||||
}
|
||||
|
||||
public int[][] getValue() {
|
||||
return value;
|
||||
}
|
||||
|
||||
|
||||
}
|
Loading…
Reference in New Issue