diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/Hero.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/Hero.java index 09f3441b2..8034be473 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/Hero.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/Hero.java @@ -201,6 +201,11 @@ public class Hero extends MongoBase implements Comparable,Cloneable { updateString("faxiangList",faxiangList); } + public void setFaxiang(Set list) { + faxiangList = list; + updateString("faxiangList",faxiangList); + } + public void uninstallFaxiang(String key) { this.faxiangList.remove(key); updateString("faxiangList",faxiangList); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/equip/EquipLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/equip/EquipLogic.java index 78623e5a3..4a90360e3 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/equip/EquipLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/equip/EquipLogic.java @@ -74,13 +74,13 @@ public class EquipLogic { for (String faxiangId : heroFaxiangList) { Faxiang heroFaxiang = equipManager.getFaxiang(faxiangId); if (heroFaxiang == null){ - hero.uninstallFaxiang(faxiangId); + removeList.add(faxiangId); LOGGER.error("法相不存在装备库中,已卸载,uid:{}, hero:{}, faxiang:{}",user.getId(),heroID,faxiangId); continue; } SFaxiangConfig heroFaxiangConfig = SFaxiangConfig.faxiangMap.get(heroFaxiang.getItemId()); if (heroFaxiangConfig == null){ - hero.uninstallFaxiang(faxiangId); + removeList.add(faxiangId); LOGGER.error("法相不存在配置表中,已卸载,uid:{}, hero:{}, faxiang:{}",user.getId(),heroID,faxiangId); continue; } 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 c87235670..a31a1ac98 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 @@ -4448,10 +4448,13 @@ public class HeroLogic { // 法相 Set faxiangList = hero.getFaxiangList(); if (faxiangList != null && !faxiangList.isEmpty()){ - for (String key : faxiangList) { - hero.uninstallFaxiang(key); - user.getEquipManager().unloadFaxiang(key); + Iterator iterator = faxiangList.iterator(); + while (iterator.hasNext()){ + String next = iterator.next(); + user.getEquipManager().unloadFaxiang(next); + iterator.remove(); } + hero.setFaxiang(faxiangList); } } int breakId = hero.getBreakId(); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/player/PlayerLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/player/PlayerLogic.java index 981c143b2..b143de3bf 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/player/PlayerLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/player/PlayerLogic.java @@ -1270,8 +1270,20 @@ public class PlayerLogic { } EquipManager equipManager = userInMem.getEquipManager(); Map equipMap = equipManager.getEquipMap(); - for(String equipId : hero.getJewelInfo()){ - CommonProto.Equip.Builder toBuilder = CBean2Proto.getEquipProto(equipMap.get(equipId),userInMem).toBuilder(); + // 宝器 + for(String equipId : hero.getJewelInfo()){ + PropertyItem propertyItem = equipMap.get(equipId); + Jewel jewel = null; + if (propertyItem instanceof Jewel){ + jewel = (Jewel) propertyItem; + }else { + jewel = equipManager.getJewelMap().get(equipId); + if (jewel == null){ + LOGGER.error("查看英雄信息,法宝找不到:{}",equipId); + continue; + } + } + CommonProto.Equip.Builder toBuilder = CBean2Proto.getEquipProto(jewel,userInMem).toBuilder(); builder.addEquip(toBuilder); } for(int equipId : hero.getEquipByHongmengPositionMap(userInMem.getHeroManager()).values()){