Merge branch 'master_test_hw_special_monster' of http://60.1.1.230/backend/jieling_server into master_test_hw_special_monster

# Conflicts:
#	serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java
back_recharge
lvxinran 2020-10-22 14:57:57 +08:00
commit ea949f28e5
1 changed files with 276 additions and 177 deletions

View File

@ -36,6 +36,7 @@ import com.ljsd.jieling.protocols.MessageTypeProto;
import com.ljsd.jieling.util.*;
import config.*;
import manager.STableManager;
import org.luaj.vm2.ast.Str;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import util.MathUtils;
@ -688,40 +689,6 @@ public class HeroLogic{
MessageUtil.sendMessage(iSession,1,MessageTypeProto.MessageType.TEAM_POS_SAVE_RESPONSE_VALUE,null,true);
}
/**
*
* @param session
* @param teamPokemonInfos
*/
public void savePokemonTeam(ISession session, List<CommonProto.TeamPokemonInfo> teamPokemonInfos) throws Exception {
if (teamPokemonInfos == null) {
LOGGER.info("savePokemonTeam uid=>{} , teamPokemonInfos isEmpty", session.getUid());
throw new ErrorCodeException(ErrorCode.newDefineCode("Pokemon null"));
}
User user = UserManager.getUser(session.getUid());
int level = user.getPlayerInfoManager().getLevel();
int openCount = 0;
for (int sprintLevel : SSpiritAnimalSetting.sSpiritAnimalSetting.getBlockUnlockLevel()) {
if (level >= sprintLevel) {
openCount++;
}
}
if (teamPokemonInfos.size() > openCount) {
LOGGER.info("savePokemonTeam uid=>{} , count is wrong ", session.getUid());
throw new ErrorCodeException(ErrorCode.newDefineCode("count is wrong : " + openCount));
}
Map<String, Pokemon> pokemonMap = user.getPokemonManager().getPokemonMap();
Map<Integer, String> pokemonTeamMap = new HashMap<>();
for (CommonProto.TeamPokemonInfo teamPokemonInfo : teamPokemonInfos) {
if (!pokemonMap.containsKey(teamPokemonInfo.getPokemonId())) {
LOGGER.info("savePokemonTeam uid=>{} , pokemon non-existent id=>{}", user.getId(), teamPokemonInfo.getPokemonId());
throw new ErrorCodeException(ErrorCode.newDefineCode("Pokemon null"));
}
pokemonTeamMap.put(teamPokemonInfo.getPosition(), teamPokemonInfo.getPokemonId());
}
user.getPokemonManager().updatePokemonTeamMap(pokemonTeamMap);
MessageUtil.sendMessage(session, 1, MessageTypeProto.MessageType.POKEMON_REPLACE_RESPONSE.getNumber(), null);
}
public String checkTeamPos(User user, int teamId,List<CommonProto.TeamHeroInfo> heroIds){
if(heroIds ==null || heroIds.isEmpty()){
@ -2113,37 +2080,37 @@ public class HeroLogic{
return quality;
}
public void getAllPokemon(ISession iSession) throws Exception {
int uid = iSession.getUid();
User user = UserManager.getUser(uid);
PokemonManager pokemonManager = user.getPokemonManager();
//todo 灵兽
Map<String, Pokemon> pokemonMap = pokemonManager.getPokemonMap();
//
// //TODO 测试
// if(pokemonMap.isEmpty()){
// for(SDifferDemonsConfig sDifferDemonsConfig : SDifferDemonsConfig.sDifferDemonsConfigMap.values() ){
// pokemonManager.addPokemon(new Pokemon(sDifferDemonsConfig.getId()));
// }
// public void getAllPokemon(ISession iSession) throws Exception {
// int uid = iSession.getUid();
// User user = UserManager.getUser(uid);
// PokemonManager pokemonManager = user.getPokemonManager();
// //todo 灵兽
// Map<String, Pokemon> pokemonMap = pokemonManager.getPokemonMap();
////
//// //TODO 测试
//// if(pokemonMap.isEmpty()){
//// for(SDifferDemonsConfig sDifferDemonsConfig : SDifferDemonsConfig.sDifferDemonsConfigMap.values() ){
//// pokemonManager.addPokemon(new Pokemon(sDifferDemonsConfig.getId()));
//// }
//// }
// List<CommonProto.PokemonInfo> pokemonInfoList = new ArrayList<>();
////
// for(Pokemon pokemon : pokemonMap.values()){
// pokemonInfoList.add(CBean2Proto.getPokemon(pokemon));
// }
List<CommonProto.PokemonInfo> pokemonInfoList = new ArrayList<>();
//
for(Pokemon pokemon : pokemonMap.values()){
pokemonInfoList.add(CBean2Proto.getPokemon(pokemon));
}
List<CommonProto.TeamPokemonInfo> teamPokemonInfos = new ArrayList<>();
for (Map.Entry<Integer, String> entry : pokemonManager.getPokemonTeamMap().entrySet()) {
CommonProto.TeamPokemonInfo teamPokemonInfo = CommonProto.TeamPokemonInfo.newBuilder()
.setPokemonId(entry.getValue())
.setPosition(entry.getKey())
.build();
teamPokemonInfos.add(teamPokemonInfo);
}
HeroInfoProto.GetAllPokemonResponse build = HeroInfoProto.GetAllPokemonResponse.newBuilder().addAllPokemonInfo(pokemonInfoList)
.addAllTeamPokemonInfos(teamPokemonInfos)
.build();
MessageUtil.sendMessage(iSession,1,MessageTypeProto.MessageType.GET_ALL_POKEMON_RESPONSE_VALUE,build,true);
}
// List<CommonProto.TeamPokemonInfo> teamPokemonInfos = new ArrayList<>();
// for (Map.Entry<Integer, String> entry : pokemonManager.getPokemonTeamMap().entrySet()) {
// CommonProto.TeamPokemonInfo teamPokemonInfo = CommonProto.TeamPokemonInfo.newBuilder()
// .setPokemonId(entry.getValue())
// .setPosition(entry.getKey())
// .build();
// teamPokemonInfos.add(teamPokemonInfo);
// }
// HeroInfoProto.GetAllPokemonResponse build = HeroInfoProto.GetAllPokemonResponse.newBuilder().addAllPokemonInfo(pokemonInfoList)
// .addAllTeamPokemonInfos(teamPokemonInfos)
// .build();
// MessageUtil.sendMessage(iSession,1,MessageTypeProto.MessageType.GET_ALL_POKEMON_RESPONSE_VALUE,build,true);
// }
//异妖相关 组件放置升级
public void pokemonUpLevel(ISession session, String pokemonId, int level, MessageTypeProto.MessageType messageType) throws Exception {
@ -2257,140 +2224,92 @@ public class HeroLogic{
User user = UserManager.getUser(uid);
PokemonManager pokemonManager = user.getPokemonManager();
Pokemon pokemon = pokemonManager.getPokemonMap().get(pokemonId);
if(pokemon == null){
if (pokemon == null) {
throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE);
}
if(pokemon.getLevel()==1&&pokemon.getStar()==0){
if (pokemon.getLevel() == 1 && pokemon.getStar() == 0) {
throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE);
}
int tmpId = pokemon.getTmpId();
SSpiritAnimal animalConfig = STableManager.getConfig(SSpiritAnimal.class).get(tmpId);
Map<Integer,Integer> costMap = new HashMap<>();
costMap.put(animalConfig.getReturnCost()[0],animalConfig.getReturnCost()[1]);
if(ItemUtil.checkCost(user,costMap)){
Map<Integer, Integer> costMap = new HashMap<>();
costMap.put(animalConfig.getReturnCost()[0], animalConfig.getReturnCost()[1]);
if (ItemUtil.checkCost(user, costMap)) {
throw new ErrorCodeException(ErrorCode.ITEM_NOT_ENOUGH);
}
Map<Integer,Integer> returnMap = new HashMap<>();
Map<Integer, Integer> returnMap = new HashMap<>();
getPokemonReturnReward(pokemon,returnMap);
getPokemonReturnReward(pokemon, returnMap);
//本体返还
SSpiritAnimalStar starConfig = SSpiritAnimalStar.configByQualityAndStar.get(animalConfig.getQuality()).get(pokemon.getStar());
int sumItemNum = starConfig.getSumItemNum();
if(sumItemNum!=0){
returnMap.put(tmpId,returnMap.getOrDefault(tmpId,0)+sumItemNum);
if (sumItemNum != 0) {
returnMap.put(tmpId, returnMap.getOrDefault(tmpId, 0) + sumItemNum);
}
ItemUtil.itemCost(user,costMap,BIReason.SPECIAL_BACK_CONSUME,1);
ItemUtil.itemCost(user, costMap, BIReason.SPECIAL_BACK_CONSUME, 1);
CommonProto.Drop.Builder drop = ItemUtil.drop(user, ItemUtil.mapToArray(returnMap), BIReason.SPECIAL_MONSTER_REWARD);
HeroInfoProto.PokemonBackResponse response = HeroInfoProto.PokemonBackResponse.newBuilder().setDrop(drop).build();
MessageUtil.sendMessage(session,1, messageType.getNumber(),response,true);
}
/**
*
* @param session
* @param pokemonIds
* @param pieceId
* @param pieceAmount
* @param messageType
* @throws Exception
*/
public void pokemonFree(ISession session, List<String> pokemonIds,int pieceId,int pieceAmount, MessageTypeProto.MessageType messageType) throws Exception {
int uid = session.getUid();
User user = UserManager.getUser(uid);
PokemonManager pokemonManager = user.getPokemonManager();
if(!pokemonIds.isEmpty()){
if(pieceId!=0||pieceAmount!=0){
throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE);
}
}else{
if(pieceId==0||pieceAmount==0){
throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE);
}
}
Map<Integer,Integer> returnMap = new HashMap<>();
if(!pokemonIds.isEmpty()){
for(String pokemonId:pokemonIds){
Pokemon pokemon = pokemonManager.getPokemonMap().get(pokemonId);
if(pokemon == null){
throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE);
}
getPokemonReturnReward(pokemon,returnMap);
SSpiritAnimal animalConfig = STableManager.getConfig(SSpiritAnimal.class).get(pokemon.getTmpId());
SSpiritAnimalStar starConfig = SSpiritAnimalStar.configByQualityAndStar.get(animalConfig.getQuality()).get(pokemon.getStar());
int sumItemNum = starConfig.getSumItemNum()+1;
int[] coinReturn = animalConfig.getCoinReturn();
returnMap.put(coinReturn[0],returnMap.getOrDefault(coinReturn[0],0)+coinReturn[1]*sumItemNum);
}
}else{
SSpiritAnimal animal = SSpiritAnimal.pieceConfig.get(pieceId);
Map<Integer,Integer> costMap = new HashMap<>();
if(animal==null){
throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE);
}
boolean checkCost = ItemUtil.checkCost(user, costMap);
if(!checkCost){
throw new ErrorCodeException(ErrorCode.ITEM_NOT_ENOUGH);
}
int[] piecesCoinReturn = animal.getPiecesCoinReturn();
returnMap.put(piecesCoinReturn[0],returnMap.getOrDefault(piecesCoinReturn[0],0)+piecesCoinReturn[1]*pieceAmount);
ItemUtil.itemCost(user,costMap,BIReason.SPECIAL_FREE_PIECE_CONSUME,1);
}
CommonProto.Drop.Builder drop = ItemUtil.drop(user, ItemUtil.mapToArray(returnMap), BIReason.SPECIAL_FREE_PIECE_REWARD);
HeroInfoProto.PokemonFreeResponse response = HeroInfoProto.PokemonFreeResponse.newBuilder().setDrop(drop).build();
MessageUtil.sendMessage(session,1, messageType.getNumber(),response,true);
}
/**
*
* @param pokemon
* @param returnMap
* @throws ErrorCodeException
*/
private void getPokemonReturnReward(Pokemon pokemon,Map<Integer,Integer> returnMap) throws ErrorCodeException {
SSpiritAnimal animalConfig = STableManager.getConfig(SSpiritAnimal.class).get(pokemon.getTmpId());
SSpiritAnimalLevel levelConfig = SSpiritAnimalLevel.configByQualityAndLevel.get(animalConfig.getQuality()).get(pokemon.getLevel());
if(levelConfig==null){
throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE);
}
SSpiritAnimalStar starConfig = SSpiritAnimalStar.configByQualityAndStar.get(animalConfig.getQuality()).get(pokemon.getStar());
if(starConfig==null){
throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE);
}
int[][] sumConsumeLevel = levelConfig.getSumConsume();
if(pokemon.getLevel()!=1&&sumConsumeLevel!=null&&sumConsumeLevel.length>0&&sumConsumeLevel[0].length>0){
for(int[] consume:sumConsumeLevel){
returnMap.put(consume[0],returnMap.getOrDefault(consume[0],0)+consume[1]);
}
}
int[][] sumConsumeStar = starConfig.getSumConsume();
if(pokemon.getStar()!=0&&sumConsumeStar!=null&&sumConsumeStar.length>0&&sumConsumeStar[0].length>0){
for(int[] consume:sumConsumeStar){
returnMap.put(consume[0],returnMap.getOrDefault(consume[0],0)+consume[1]);
}
}
MessageUtil.sendMessage(session, 1, messageType.getNumber(), response, true);
}
//
// public void pokemonAdvanced(ISession session,int pokemonId) throws Exception {
// int uid = session.getUid();
// User user = UserManager.getUser(uid);
// PokemonManager pokemonManager = user.getPokemonManager();
// Pokemon pokemon = pokemonManager.getPokemonMap().get(pokemonId);
// if(pokemon == null){
// throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE);
// }
// SDifferDemonsConfig sDifferDemonsConfig = SDifferDemonsConfig.getsDifferDemonsConfigByPokenID(pokemonId);
// int[] comonpentList = sDifferDemonsConfig.getComonpentList();
// Map<Integer, Integer> comonpentsLevelMap = pokemon.getComonpentsLevelMap();
// SDifferDemonsStageConfig sDifferDemonsStageConfig = SDifferDemonsStageConfig.getsDifferDemonsStageConfigMap(pokemonId*100 + pokemon.getAllStage() + 1);
// int comonpentPreStage = sDifferDemonsStageConfig.getComonpentPreStage();
//
// boolean isEnough = true;
// for(int i=0;i<comonpentList.length;i++){
// if(!comonpentsLevelMap.containsKey(comonpentList[i])){
// isEnough =false;
// break;
// }
// if(comonpentsLevelMap.get(comonpentList[i]) < comonpentPreStage){
// isEnough =false;
// break;
// }
// }
// int[][] cost = sDifferDemonsStageConfig.getCost();
//
// if(!isEnough){
// throw new ErrorCodeException(ErrorCode.newDefineCode("not tryMatch"));
// }
// isEnough = ItemUtil.itemCost(user,cost,BIReason.POKEMON_ADVANCE_CONSUME,pokemonId);
// if(!isEnough){
// throw new ErrorCodeException(ErrorCode.ITEM_NOT_ENOUGH);
// }
//
//
// pokemon.setAllStage(pokemon.getAllStage()+1);
// if(pokemon.getAllStage() == 1){
// user.getUserMissionManager().onGameEvent(user,GameEvent.POKEMON_ADVANCED,pokemonId);
// }
//
// //发送成功消息
// MessageUtil.sendMessage(session,1,MessageTypeProto.MessageType.POKEMON_ADVANCED_RESPONSE_VALUE,null,true);
// String message=null;
// if(pokemon.getAllStage()==1){
// message = SErrorCodeEerverConfig.getI18NMessage("lamp_activate_differ_content_"+sDifferDemonsConfig.getQuality(), new Object[]{user.getPlayerInfoManager().getNickName(),sDifferDemonsConfig.getName() });
//
// }else if(pokemon.getAllStage()>=SSpecialConfig.getIntegerValue(SSpecialConfig.lamp_rankup_differ_content_parm)){
// message = SErrorCodeEerverConfig.getI18NMessage("lamp_rankup_differ_content_"+sDifferDemonsConfig.getQuality(), new Object[]{user.getPlayerInfoManager().getNickName(), sDifferDemonsConfig.getName(),pokemon.getAllStage()});
// }
// if(message!=null){
// ChatLogic.getInstance().sendSysChatMessage(message,Global.DILIGENT,sDifferDemonsConfig.getId(),0,0,0,0,0);
// }
//TODO isMyself ???
public int calTeamTotalForce(User targetUser,int teamId,boolean isMyself){
@ -2974,4 +2893,184 @@ public class HeroLogic{
}
}
//============= 灵兽(异妖)系统 ========================
/**
*
* @param iSession
* @throws Exception
*/
public void getAllPokemon(ISession iSession) throws Exception {
int uid = iSession.getUid();
User user = UserManager.getUser(uid);
PokemonManager pokemonManager = user.getPokemonManager();
//todo 灵兽
Map<String, Pokemon> pokemonMap = pokemonManager.getPokemonMap();
//
// //TODO 测试
// if(pokemonMap.isEmpty()){
// for(SDifferDemonsConfig sDifferDemonsConfig : SDifferDemonsConfig.sDifferDemonsConfigMap.values() ){
// pokemonManager.addPokemon(new Pokemon(sDifferDemonsConfig.getId()));
// }
// }
List<CommonProto.PokemonInfo> pokemonInfoList = new ArrayList<>();
//
for(Pokemon pokemon : pokemonMap.values()){
pokemonInfoList.add(CBean2Proto.getPokemon(pokemon));
}
List<CommonProto.TeamPokemonInfo> teamPokemonInfos = new ArrayList<>();
for (Map.Entry<Integer, String> entry : pokemonManager.getPokemonTeamMap().entrySet()) {
CommonProto.TeamPokemonInfo teamPokemonInfo = CommonProto.TeamPokemonInfo.newBuilder()
.setPokemonId(entry.getValue())
.setPosition(entry.getKey())
.build();
teamPokemonInfos.add(teamPokemonInfo);
}
HeroInfoProto.GetAllPokemonResponse build = HeroInfoProto.GetAllPokemonResponse.newBuilder().addAllPokemonInfo(pokemonInfoList)
.addAllTeamPokemonInfos(teamPokemonInfos)
.build();
MessageUtil.sendMessage(iSession,1,MessageTypeProto.MessageType.GET_ALL_POKEMON_RESPONSE_VALUE,build,true);
}
/**
*
* @param session
* @param teamPokemonInfos
*/
public void savePokemonTeam(ISession session, List<CommonProto.TeamPokemonInfo> teamPokemonInfos) throws Exception {
if (teamPokemonInfos == null) {
LOGGER.info("savePokemonTeam uid=>{} , teamPokemonInfos isEmpty", session.getUid());
throw new ErrorCodeException(ErrorCode.newDefineCode("Pokemon null"));
}
User user = UserManager.getUser(session.getUid());
int level = user.getPlayerInfoManager().getLevel();
int openCount = 0;
for (int sprintLevel : SSpiritAnimalSetting.sSpiritAnimalSetting.getBlockUnlockLevel()) {
if (level >= sprintLevel) {
openCount++;
}
}
if (teamPokemonInfos.size() > openCount) {
LOGGER.info("savePokemonTeam uid=>{} , count is wrong ", session.getUid());
throw new ErrorCodeException(ErrorCode.newDefineCode("count is wrong : " + openCount));
}
Map<String, Pokemon> pokemonMap = user.getPokemonManager().getPokemonMap();
Map<Integer, String> pokemonTeamMap = new HashMap<>();
Set<String> addpokemons = new HashSet<>();
for (CommonProto.TeamPokemonInfo teamPokemonInfo : teamPokemonInfos) {
if (!pokemonMap.containsKey(teamPokemonInfo.getPokemonId())) {
LOGGER.info("savePokemonTeam uid=>{} , pokemon non-existent id=>{}", user.getId(), teamPokemonInfo.getPokemonId());
throw new ErrorCodeException(ErrorCode.newDefineCode("Pokemon null"));
}
addpokemons.add(teamPokemonInfo.getPokemonId());
pokemonTeamMap.put(teamPokemonInfo.getPosition(), teamPokemonInfo.getPokemonId());
}
if (addpokemons.size() != pokemonTeamMap.size()) {
LOGGER.info("savePokemonTeam uid=>{} , pokemon non-existent id=>{} =>{}", user.getId(), addpokemons.size(), addpokemons.size());
throw new ErrorCodeException(ErrorCode.newDefineCode("Pokemon null"));
}
user.getPokemonManager().updatePokemonTeamMap(pokemonTeamMap);
MessageUtil.sendMessage(session, 1, MessageTypeProto.MessageType.POKEMON_REPLACE_RESPONSE.getNumber(), null);
}
/**
*
* @param session
* @param pokemonIds
* @param pieceId
* @param pieceAmount
* @param messageType
* @throws Exception
*/
public void pokemonFree(ISession session, List<String> pokemonIds,int pieceId,int pieceAmount, MessageTypeProto.MessageType messageType) throws Exception {
int uid = session.getUid();
User user = UserManager.getUser(uid);
PokemonManager pokemonManager = user.getPokemonManager();
if(!pokemonIds.isEmpty()){
if(pieceId!=0||pieceAmount!=0){
throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE);
}
}else{
if(pieceId==0||pieceAmount==0){
throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE);
}
}
Map<Integer,Integer> returnMap = new HashMap<>();
if(!pokemonIds.isEmpty()){
for(String pokemonId:pokemonIds){
Pokemon pokemon = pokemonManager.getPokemonMap().get(pokemonId);
if(pokemon == null){
throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE);
}
getPokemonReturnReward(pokemon,returnMap);
SSpiritAnimal animalConfig = STableManager.getConfig(SSpiritAnimal.class).get(pokemon.getTmpId());
SSpiritAnimalStar starConfig = SSpiritAnimalStar.configByQualityAndStar.get(animalConfig.getQuality()).get(pokemon.getStar());
int sumItemNum = starConfig.getSumItemNum()+1;
int[] coinReturn = animalConfig.getCoinReturn();
returnMap.put(coinReturn[0],returnMap.getOrDefault(coinReturn[0],0)+coinReturn[1]*sumItemNum);
}
}else{
SSpiritAnimal animal = SSpiritAnimal.pieceConfig.get(pieceId);
Map<Integer,Integer> costMap = new HashMap<>();
if(animal==null){
throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE);
}
boolean checkCost = ItemUtil.checkCost(user, costMap);
if(!checkCost){
throw new ErrorCodeException(ErrorCode.ITEM_NOT_ENOUGH);
}
int[] piecesCoinReturn = animal.getPiecesCoinReturn();
returnMap.put(piecesCoinReturn[0],returnMap.getOrDefault(piecesCoinReturn[0],0)+piecesCoinReturn[1]*pieceAmount);
ItemUtil.itemCost(user,costMap,BIReason.SPECIAL_FREE_PIECE_CONSUME,1);
}
CommonProto.Drop.Builder drop = ItemUtil.drop(user, ItemUtil.mapToArray(returnMap), BIReason.SPECIAL_FREE_PIECE_REWARD);
HeroInfoProto.PokemonFreeResponse response = HeroInfoProto.PokemonFreeResponse.newBuilder().setDrop(drop).build();
MessageUtil.sendMessage(session,1, messageType.getNumber(),response,true);
}
/**
*
* @param pokemon
* @param returnMap
* @throws ErrorCodeException
*/
private void getPokemonReturnReward(Pokemon pokemon,Map<Integer,Integer> returnMap) throws ErrorCodeException {
SSpiritAnimal animalConfig = STableManager.getConfig(SSpiritAnimal.class).get(pokemon.getTmpId());
SSpiritAnimalLevel levelConfig = SSpiritAnimalLevel.configByQualityAndLevel.get(animalConfig.getQuality()).get(pokemon.getLevel());
if(levelConfig==null){
throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE);
}
SSpiritAnimalStar starConfig = SSpiritAnimalStar.configByQualityAndStar.get(animalConfig.getQuality()).get(pokemon.getStar());
if(starConfig==null){
throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE);
}
int[][] sumConsumeLevel = levelConfig.getSumConsume();
if(pokemon.getLevel()!=1&&sumConsumeLevel!=null&&sumConsumeLevel.length>0&&sumConsumeLevel[0].length>0){
for(int[] consume:sumConsumeLevel){
returnMap.put(consume[0],returnMap.getOrDefault(consume[0],0)+consume[1]);
}
}
int[][] sumConsumeStar = starConfig.getSumConsume();
if(pokemon.getStar()!=0&&sumConsumeStar!=null&&sumConsumeStar.length>0&&sumConsumeStar[0].length>0){
for(int[] consume:sumConsumeStar){
returnMap.put(consume[0],returnMap.getOrDefault(consume[0],0)+consume[1]);
}
}
}
}