From d7a98fe7fce05258e8783bf3c9db3267a77656cc Mon Sep 17 00:00:00 2001 From: lvxinran Date: Wed, 5 Aug 2020 16:41:42 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B3=95=E5=AE=9D=E5=BD=92=E5=85=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ljsd/jieling/globals/BIReason.java | 1 + .../ljsd/jieling/logic/hero/HeroLogic.java | 28 +++++++++++++ .../ljsd/jieling/logic/item/ItemLogic.java | 41 +++++++++++-------- 3 files changed, 52 insertions(+), 18 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java b/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java index 507e2476e..bc15371d7 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java @@ -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;//秘盒抽卡 diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java index 5964bbd82..2edfcc711 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java @@ -2418,6 +2418,34 @@ public class HeroLogic{ } + /** + * 法宝归元 + * @param session + * @param heroIdList + * @throws Exception + */ + public void especialEquipBack(ISession session,List heroIdList) throws Exception{ + User user = UserManager.getUser(session.getUid()); + Map 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 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 diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/item/ItemLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/item/ItemLogic.java index add2b1c6d..8b147d8b2 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/item/ItemLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/item/ItemLogic.java @@ -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 levelMap = (TreeMap) (SEquipTalismana.equipTalismanaStarMap.get(equipTalismana[1])); - Map returnMap = levelMap.subMap(1, hero.getEspecialEquipLevel()); - for(Map.Entry 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 levelMap = (TreeMap) (SEquipTalismana.equipTalismanaStarMap.get(equipTalismana[1])); +// Map returnMap = levelMap.subMap(1, hero.getEspecialEquipLevel()); +// for(Map.Entry entry:returnMap.entrySet()){ +// int[][] rankupBasicMaterial = entry.getValue().getRankupBasicMaterial(); +// for(int[] rankUpConsume:rankupBasicMaterial){ +// baseItemMap.put(rankUpConsume[0],baseItemMap.getOrDefault(rankUpConsume[0],0)+rankUpConsume[1]); +// } +// } + //法宝获得 + Map 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 heroEspecialEquipReturnItem(Hero hero){ + public Map heroEspecialEquipReturnItem(Hero hero){ int especialEquipLevel = hero.getEspecialEquipLevel(); if(especialEquipLevel==1||especialEquipLevel==0){ return null;