diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/eventhandler/SaveHeroForceEventHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/eventhandler/SaveHeroForceEventHandler.java index 877ac24a1..505c5ab4b 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/eventhandler/SaveHeroForceEventHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/eventhandler/SaveHeroForceEventHandler.java @@ -32,6 +32,10 @@ public class SaveHeroForceEventHandler implements IEventHandler { // 参数获取 int uid = ((SaveHeroForceEvent) event).getUid(); String heroId = ((SaveHeroForceEvent) event).getHeroId(); + // null兼容 + if (heroId == null){ + heroId = ""; + } // user User user = UserManager.getUser(uid); // 需要存储战力的编队 @@ -41,7 +45,7 @@ public class SaveHeroForceEventHandler implements IEventHandler { if (!HeroLogic.getInstance().isInTeam(user,heroId,teamId) && !"".equals(heroId)){ continue; } - // 主线标对需要更新排行榜信息 + // 主线编队需要更新排行榜信息 if (teamId == TeamEnum.FORMATION_NORMAL.getTeamId()){ Poster.getPoster().dispatchEvent(new UserMainTeamForceEvent(uid)); } 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 17393aef0..a63946e2c 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 @@ -6344,59 +6344,48 @@ public class HeroLogic { /** * 合成神印 * @param iSession - * @param ItemId 准备升级的神印id + * @param itemId 准备升级的神印id * @param heroId * @return * @throws Exception */ - public void upGodSeal(ISession iSession, int ItemId, String heroId) throws Exception { + public void upGodSeal(ISession iSession, int itemId, String heroId) throws Exception { // 获取玩家参数 User user = UserManager.getUser(iSession.getUid()); // 升品神印参数 Map config = STableManager.getConfig(SEquipConfig.class); - SEquipConfig sEquipConfig = config.get(ItemId); - // 升品消耗 - int[][] resource = sEquipConfig.getResource(); + SEquipConfig sEquipConfig = config.get(itemId); - // 一些需要记录的参数 - int position = 0; - int targetId = sEquipConfig.getFormula()[0][0]; - Hero hero = null; - - // 英雄身上的神印升品 - if (!"".equals(heroId)){ - ArrayList list = new ArrayList<>(); - // hero信息 - hero = user.getHeroManager().getHero(heroId); - // hero godseal 信息 - HashMap map = new HashMap<>(hero.getGodSealByPositionMap()); - for (Map.Entry next : map.entrySet()) { - if (next.getValue() == ItemId){ - // 删除英雄身上的神印信息 - hero.removeGodSeal(next.getKey()); - // 入背包 - list.add(new int[][]{{next.getValue(),1}}); - // 记录神印位置 - position = next.getKey(); - } - } - // 卸下的神印需要放回物品背包 - ItemUtil.drop(user,list,BIReason.MARGE_GOD_SEAL); + // 基础消耗 + ArrayList list = new ArrayList<>(); + list.add(sEquipConfig.getResource()); + // 背包中的需要增加一个,英雄装备的直接覆盖id即可 + if ("".equals(heroId)) { + list.add(new int[][]{{itemId, 1}}); } // 验证道具消耗 - boolean b = ItemUtil.itemCost(user, resource, BIReason.MARGE_GOD_SEAL, 0); + boolean b = ItemUtil.itemCost(user, list, BIReason.MARGE_GOD_SEAL, 0); if (!b) { throw new ErrorCodeException(ErrorCode.ITEM_NOT_ENOUGH); } - // 合成奖励放入背包 - CommonProto.Drop.Builder drop = ItemUtil.drop(user, sEquipConfig.getFormula(), BIReason.MARGE_GOD_SEAL); - // 原本是英雄身上的需要重新装备,并删除背包中的 - if (position != 0 && hero != null){ - // 给英雄重新装备上改id - hero.putGodSealByPositionMap(position,targetId); - // 删除背包里的神印 - ItemUtil.itemCost(user, sEquipConfig.getFormula(), BIReason.MARGE_GOD_SEAL,0); + + CommonProto.Drop.Builder drop = CommonProto.Drop.newBuilder(); + // 背包合成,走掉落 + if ("".equals(heroId)){ + drop = ItemUtil.drop(user, sEquipConfig.getFormula(), BIReason.MARGE_GOD_SEAL); + } + // 英雄装备合成,修改英雄信息,不走掉落 + else { + // hero信息 + Hero hero = user.getHeroManager().getHero(heroId); + // hero godseal 信息 + for (Map.Entry next : hero.getGodSealByPositionMap().entrySet()) { + if (next.getValue() == itemId){ + hero.putGodSealByPositionMap(next.getKey(),sEquipConfig.getFormula()[0][0]); + break; + } + } } // 更新战力 diff --git a/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java b/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java index 452977b13..279461351 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java @@ -1514,6 +1514,25 @@ public class ItemUtil { return true; } + /** + * 消耗道具 + * @param user + * @return + * @throws Exception + */ + public static boolean itemCost(User user,List itemArrs,int reason,int subReson) throws Exception { + Map itemMap = new HashMap<>(); + for(int[][] itemArr : itemArrs){ + selectCost(itemArr,itemMap); + } + boolean result = checkCost(user, itemMap); + if (!result) { + return false; + } + useItem(user, itemMap,reason,subReson); + return true; + } + public static boolean itemCost(User user,Map costItems,int reason,int subReson) throws Exception { boolean result = checkCost(user, costItems); if (!result) {