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 f9e7ffa2e..572bee9a2 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java @@ -74,6 +74,7 @@ public interface BIReason { int MONSTERATTACK_BACK = 45; // 妖兽来袭预扣归还 int FIRST_ADVENTURE_REWARD = 46; // 秘境首次奖励外敌挑战券 + int UPHERO_DECOMPOS_HERO_REWARD= 47 ;//进阶妖灵师返还奖励 //道具消耗原因 1000开头 int ADVENTURE_UPLEVEL_CONSUME = 1000; //秘境升级 diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/UseAndPriceItemHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/UseAndPriceItemHandler.java index 749fc9f10..0c85e30f8 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/UseAndPriceItemHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/UseAndPriceItemHandler.java @@ -37,7 +37,8 @@ public class UseAndPriceItemHandler extends BaseHandler { } else if (type == 2){ //分解装备 ItemLogic.getInstance().decomposeEquip(iSession,equipIdsList); }else{ - ItemLogic.getInstance().decomposeHero(iSession,heroIdsList); + CommonProto.Drop.Builder baseBuilder =ItemLogic.getInstance().decomposeHero(iSession,heroIdsList,null, MessageTypeProto.MessageType.USER_AND_PRICE_ITEM_RESPONSE_VALUE); + ItemLogic.sendUseAndPriceItemMessage(iSession, MessageTypeProto.MessageType.USER_AND_PRICE_ITEM_RESPONSE_VALUE, baseBuilder); } } 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 7a01d96d9..444f3aa5e 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 @@ -12,6 +12,7 @@ import com.ljsd.jieling.logic.activity.event.Poster; import com.ljsd.jieling.logic.dao.*; import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.fight.CombatLogic; +import com.ljsd.jieling.logic.item.ItemLogic; import com.ljsd.jieling.logic.mission.GameEvent; import com.ljsd.jieling.network.session.ISession; import com.ljsd.jieling.protocols.CommonProto; @@ -626,12 +627,13 @@ public class HeroLogic { } //删除hero - recyleHeroBySystem(user,removeHeroIds); + CommonProto.Drop.Builder baseBuilder = ItemLogic.getInstance().decomposeHero(session,new LinkedList<>(removeHeroIds),Collections.singleton(26),MessageTypeProto.MessageType.UP_HERO_STAR_RESPONSE_VALUE); + // recyleHeroBySystem(user,removeHeroIds); targetHero.upStar( 1 ); Poster.getPoster().dispatchEvent(new HeroUpStarEvent(user.getId(),targetHero.getStar())); targetHero.setStarBreakId(scHeroRankUpConfig.getId()); user.getUserMissionManager().onGameEvent(user,GameEvent.HERO_UP,2,targetHero.getTemplateId(),targetHero.getStar()); - MessageUtil.sendMessage(session,1,MessageTypeProto.MessageType.UP_HERO_STAR_RESPONSE_VALUE,null,true); + MessageUtil.sendMessage(session,1,MessageTypeProto.MessageType.UP_HERO_STAR_RESPONSE_VALUE,baseBuilder.build(),true); if(targetHero.getStar()>=7){ String message = SErrorCodeEerverConfig.getI18NMessage("lamp_rankup_hero_content", new Object[]{user.getPlayerInfoManager().getNickName(), scHero.getReadingName(),targetHero.getStar()}); ChatLogic.getInstance().sendSysChatMessage(message,Global.DILIGENT,targetHero.getTemplateId(),0,0,0,0,0); 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 c0c13bc71..badb6c778 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 @@ -15,10 +15,7 @@ import com.ljsd.jieling.util.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; public class ItemLogic { private static final Logger LOGGER = LoggerFactory.getLogger(ItemLogic.class); @@ -92,7 +89,7 @@ public class ItemLogic { return ""; } - private void sendUseAndPriceItemMessage(ISession iSession, int msgId, CommonProto.Drop.Builder drop) { + public static void sendUseAndPriceItemMessage(ISession iSession, int msgId, CommonProto.Drop.Builder drop) { PlayerInfoProto.UseAndPriceItemResponse useAndPriceItemResponse = PlayerInfoProto.UseAndPriceItemResponse.newBuilder() .setDrop(drop) .build(); @@ -200,20 +197,20 @@ public class ItemLogic { } /** - * 分解卡牌 + * 分解卡牌|进阶消耗 * @param iSession * @param heroIdsList */ - public void decomposeHero(ISession iSession, List heroIdsList) throws Exception { - int msgId = MessageTypeProto.MessageType.USER_AND_PRICE_ITEM_RESPONSE_VALUE; + public CommonProto.Drop.Builder decomposeHero(ISession iSession, List heroIdsList,Set filterItem,int msgId) throws Exception { int uid = iSession.getUid(); + CommonProto.Drop.Builder baseBuilder = CommonProto.Drop.newBuilder(); User user = UserManager.getUser(uid); HeroManager heroManager = user.getHeroManager(); StringBuilder reward = new StringBuilder(); String erroMags = checkHeroResolve(heroIdsList,user); if (!erroMags.isEmpty()){ MessageUtil.sendErrorResponse(iSession,0,msgId,erroMags); - return; + return baseBuilder; } //1裸角色卡(没有突破过的角色卡)熔炼后返还的材料=当前等级返还升级材料+item表返还材料 //2有过突破的卡 =当前等级返还升级材料+突破表返还材料 @@ -248,10 +245,15 @@ public class ItemLogic { reward.append("#").append(sItem.getResolveReward()); } } + int reson =BIReason.DECOMPOS_HERO_REWARD; + if(null!=filterItem){ + reson= BIReason.UPHERO_DECOMPOS_HERO_REWARD; + filterItem.retainAll(baseItemMap.keySet()); + filterItem.forEach(baseItemMap::remove); + } ItemUtil.combineReward(user,StringUtil.parseFiledInt(reward.toString()),1,baseItemMap,baseCardMap,baseEquipMap,baseRandomMap); - CommonProto.Drop.Builder baseBuilder = CommonProto.Drop.newBuilder(); - ItemUtil.drop(user,baseBuilder,baseItemMap,baseCardMap,baseEquipMap,baseRandomMap, BIReason.DECOMPOS_HERO_REWARD); - sendUseAndPriceItemMessage(iSession, msgId, baseBuilder); + ItemUtil.drop(user,baseBuilder,baseItemMap,baseCardMap,baseEquipMap,baseRandomMap, reson); + return baseBuilder; } private String checkHeroResolve(List heroIdsList,User user){