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 311715312..9ce76e16b 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java @@ -707,6 +707,7 @@ public class ItemUtil { if (items.isEmpty() && equips.isEmpty() && especialEquips.isEmpty()&&soulEquips.isEmpty()) { return; } + Map equipMap = new HashMap<>(); Map itemMap = user.getItemManager().getItemMap(); StringBuilder rewardStr = new StringBuilder(); boolean isFirst = true; @@ -766,13 +767,16 @@ public class ItemUtil { } continue; } - user.getEquipManager().addEquip(user,equip); + equipMap.put(equip.getEquipId(),equipMap.containsKey(equip.getEquipId())?equipMap.get(equip.getEquipId())+1:1); KtEventUtils.onKtEvent(user, ParamEventBean.UserItemEvent,BIReason.TEMPORARY_REWARD,GlobalsDef.addReason,sItem.getId(),1,-1); } + addEquip(user,equipMap,CommonProto.Drop.newBuilder(),BIReason.MAP_GENERAL_FIGHT_REWARD); + equipMap = new HashMap<>(); for(EspecialEquip especialEquip:especialEquips){ - user.getEquipManager().addEspecialEquip(user,especialEquip); - + equipMap.put(especialEquip.getEquipId(),equipMap.containsKey(especialEquip.getEquipId())?equipMap.get(especialEquip.getEquipId())+1:1); } + addEquip(user,equipMap,CommonProto.Drop.newBuilder(),BIReason.MAP_GENERAL_FIGHT_REWARD); + equipMap = new HashMap<>(); for(SoulEquip soulEquip:soulEquips){ SItem sItem = SItem.getsItemMap().get (soulEquip.getEquipId()); if (sItem == null){ @@ -790,8 +794,9 @@ public class ItemUtil { } continue; } - user.getEquipManager().addSoulEquip(soulEquip); + equipMap.put(soulEquip.getEquipId(),equipMap.containsKey(soulEquip.getEquipId())?equipMap.get(soulEquip.getEquipId())+1:1); } + addSoulEquip(user,equipMap,CommonProto.Drop.newBuilder(),BIReason.MAP_GENERAL_FIGHT_REWARD); user.getMapManager().setTemporaryItems(null); if(!isVictory){ String title = SErrorCodeEerverConfig.getI18NMessage("map_overtime_title"); @@ -908,8 +913,14 @@ public class ItemUtil { int hasEquipNum = user.getEquipManager().getEquipMap().size(); String title = SErrorCodeEerverConfig.getI18NMessage("equip_bag_limit_title"); String content = SErrorCodeEerverConfig.getI18NMessage("equip_bag_limit_txt"); - - if (hasEquipNum >= gameSetting.getEquipNumlimit()){ + int equipNum = equipMap.entrySet().stream().filter(k ->{ + int itemType = SItem.getsItemMap().get(k.getKey()).getItemType(); + if(itemType==GlobalItemType.EQUIP){ + return true; + } + return false; + }).collect(Collectors.toSet()).size(); + if (hasEquipNum +equipNum>= gameSetting.getEquipNumlimit()){ String reward = getLimitReward(equipMap,filter); int nowTime =(int) (TimeUtils.now()/1000); MailLogic.getInstance().sendMail(user.getId(),title,content,reward,nowTime,Global.MAIL_EFFECTIVE_TIME); @@ -920,14 +931,15 @@ public class ItemUtil { List equipList = new CopyOnWriteArrayList<>(); List especialEquip = new CopyOnWriteArrayList<>(); int limit = SSpecialConfig.getIntegerValue(SSpecialConfig.EquipTalismana_limit); - if(equipMap.entrySet().stream().filter(k ->{ + int especialNum = equipMap.entrySet().stream().filter(k ->{ int itemType = SItem.getsItemMap().get(k.getKey()).getItemType(); if(itemType==GlobalItemType.ESPECIAL_EQUIP){ return true; } return false; - }).collect(Collectors.toSet()).size()>0){ - if (user.getEquipManager().getEspecialEquipMap().size() >=limit){ + }).collect(Collectors.toSet()).size(); + if(especialNum>0){ + if (user.getEquipManager().getEspecialEquipMap().size() +especialNum>=limit){ String bagTitle = SErrorCodeEerverConfig.getI18NMessage("EquipTalismana_bag_limit_title"); String bagContent = SErrorCodeEerverConfig.getI18NMessage("EquipTalismana_bag_limit_txt"); String bagReward = getLimitReward(equipMap,filter); @@ -985,15 +997,16 @@ public class ItemUtil { // return; // } - if(equipMap.entrySet().stream().filter(k ->{ + int tempNum = equipMap.entrySet().stream().filter(k ->{ int itemType = SItem.getsItemMap().get(k.getKey()).getItemType(); if(itemType==GlobalItemType.SOUL_MARK){ return true; } return false; - }).collect(Collectors.toSet()).size()>0){ + }).collect(Collectors.toSet()).size(); + if(tempNum>0){ int limit = SSpecialConfig.getIntegerValue(SSpecialConfig.EQUIPSIGN_LIMIT); - if (user.getEquipManager().getSoulEquipMap().size() >=limit){ + if (user.getEquipManager().getSoulEquipMap().size()+tempNum >=limit){ String title = SErrorCodeEerverConfig.getI18NMessage("EquipSign_bag_limit_title"); String content = SErrorCodeEerverConfig.getI18NMessage("EquipSign_bag_limit_txt"); String reward = getLimitReward(equipMap,filter);