法宝归元

back_recharge
lvxinran 2020-08-05 16:41:42 +08:00
parent 4a50b29266
commit d7a98fe7fc
3 changed files with 52 additions and 18 deletions

View File

@ -142,6 +142,7 @@ public interface BIReason {
int PROUD_REWARD = 78;//膜拜获得金币奖励
int EQUIP_UNLOAD_REWARD = 79;
int ESPECIAL_BACK = 80;//法宝归元获得
int ADVENTURE_UPLEVEL_CONSUME = 1000;//秘境升级
int SECRETBOX_CONSUME = 1001;//秘盒抽卡

View File

@ -2418,6 +2418,34 @@ public class HeroLogic{
}
/**
*
* @param session
* @param heroIdList
* @throws Exception
*/
public void especialEquipBack(ISession session,List<String> heroIdList) throws Exception{
User user = UserManager.getUser(session.getUid());
Map<Integer,Integer> dropMap = new HashMap<>();
for(String heroId:heroIdList){
Hero hero = user.getHeroManager().getHero(heroId);
if(hero==null||hero.getEspecialEquipLevel()<=1){
throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE);
}
Map<Integer, Integer> dropTempMap = ItemLogic.getInstance().heroEspecialEquipReturnItem(hero);
if(dropTempMap==null){
throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE);
}
dropTempMap.forEach((k,v)->dropMap.put(k,dropMap.getOrDefault(k,0)+v));
hero.updateEspecial(1);
}
CommonProto.Drop.Builder drop = ItemUtil.drop(user, ItemUtil.mapToArray(dropMap), BIReason.ESPECIAL_BACK);
HeroInfoProto.EspecialEquipBackResponse response = HeroInfoProto.EspecialEquipBackResponse.newBuilder().setDrop(drop).build();
MessageUtil.sendMessage(session,1,MessageTypeProto.MessageType.ESPECIAL_EQUIP_BACK_RESPONSE_VALUE,response,true);
}
/**
*
* @param user

View File

@ -413,23 +413,28 @@ public class ItemLogic {
for(int[] item:breakSHeroSacrifice.getValue()){
baseItemMap.put(item[0],baseItemMap.getOrDefault(item[0],0)+item[1]);
}
// 返还法宝修炼材料
int especialEquipLevel = hero.getEspecialEquipLevel();
if(especialEquipLevel==1||especialEquipLevel==0){
continue;
}
SCHero scHero = SCHero.getsCHero().get(hero.getTemplateId());
int[] equipTalismana = scHero.getEquipTalismana();
if(equipTalismana==null||equipTalismana.length<2){
continue;
}
TreeMap<Integer, SEquipTalismana> levelMap = (TreeMap<Integer, SEquipTalismana>) (SEquipTalismana.equipTalismanaStarMap.get(equipTalismana[1]));
Map<Integer, SEquipTalismana> returnMap = levelMap.subMap(1, hero.getEspecialEquipLevel());
for(Map.Entry<Integer, SEquipTalismana> entry:returnMap.entrySet()){
int[][] rankupBasicMaterial = entry.getValue().getRankupBasicMaterial();
for(int[] rankUpConsume:rankupBasicMaterial){
baseItemMap.put(rankUpConsume[0],baseItemMap.getOrDefault(rankUpConsume[0],0)+rankUpConsume[1]);
}
//// 返还法宝修炼材料
// int especialEquipLevel = hero.getEspecialEquipLevel();
// if(especialEquipLevel==1||especialEquipLevel==0){
// continue;
// }
// SCHero scHero = SCHero.getsCHero().get(hero.getTemplateId());
// int[] equipTalismana = scHero.getEquipTalismana();
// if(equipTalismana==null||equipTalismana.length<2){
// continue;
// }
// TreeMap<Integer, SEquipTalismana> levelMap = (TreeMap<Integer, SEquipTalismana>) (SEquipTalismana.equipTalismanaStarMap.get(equipTalismana[1]));
// Map<Integer, SEquipTalismana> returnMap = levelMap.subMap(1, hero.getEspecialEquipLevel());
// for(Map.Entry<Integer, SEquipTalismana> entry:returnMap.entrySet()){
// int[][] rankupBasicMaterial = entry.getValue().getRankupBasicMaterial();
// for(int[] rankUpConsume:rankupBasicMaterial){
// baseItemMap.put(rankUpConsume[0],baseItemMap.getOrDefault(rankUpConsume[0],0)+rankUpConsume[1]);
// }
// }
//法宝获得
Map<Integer, Integer> especialReturn = heroEspecialEquipReturnItem(hero);
if(especialReturn!=null){
especialReturn.forEach((k,v)->baseItemMap.put(k,baseItemMap.getOrDefault(k,0)+v));
}
}
@ -454,7 +459,7 @@ public class ItemLogic {
/**
*
*/
private Map<Integer,Integer> heroEspecialEquipReturnItem(Hero hero){
public Map<Integer,Integer> heroEspecialEquipReturnItem(Hero hero){
int especialEquipLevel = hero.getEspecialEquipLevel();
if(especialEquipLevel==1||especialEquipLevel==0){
return null;