摘星阁,装备重置

back_recharge
duhui 2022-09-02 13:46:26 +08:00
parent fc2eb578d5
commit 8bf8d3c9e6
5 changed files with 101 additions and 3 deletions

View File

@ -413,4 +413,7 @@ public interface BIReason {
int ZHAIXINGGE_BAKCUP_ITEM = 1308;//摘星阁装备强化调整返还道具
int MAXESPECIALEQUIPHANDLE = 1309; //法宝最高上限回滚处理
int HOME_EQUIP_STRONG_RESET_COST =1310;//家园装备强化重置消耗
int HOME_EQUIP_STRONG_RESET_GAIN =1311;//家园装备强化重置获得
}

View File

@ -0,0 +1,24 @@
package com.ljsd.jieling.handler.home;
import com.ljsd.jieling.handler.BaseHandler;
import com.ljsd.jieling.logic.hero.HeroLogic;
import com.ljsd.jieling.network.session.ISession;
import org.springframework.stereotype.Component;
import rpc.protocols.HeroInfoProto;
import rpc.protocols.MessageTypeProto;
/**
*
*/
@Component
public class HomeEquipStrongResetHandler extends BaseHandler<HeroInfoProto.HomeEquipStrongResetRequset> {
@Override
public MessageTypeProto.MessageType getMessageCode() {
return MessageTypeProto.MessageType.HomeEquipStrongResetRequset;
}
@Override
public void processWithProto(ISession session, HeroInfoProto.HomeEquipStrongResetRequset proto) throws Exception {
HeroLogic.getInstance().homeEquipStrongReset(session,proto);
}
}

View File

@ -1631,6 +1631,9 @@ public class HeroLogic {
// 删除英雄
for (String rmHeroId : removeHeroIds) {
// 摘星阁,装备重置
getHomeEquipStrongReset(user,rmHeroId,baseBuilder);
// 删除英雄
heroManager.removeHero(uid, rmHeroId);
}
// 消耗道具
@ -6756,4 +6759,65 @@ public class HeroLogic {
MessageUtil.sendMessage(session, 1, MessageTypeProto.MessageType.EquipIntensifyResponse_VALUE, builder.build());
}
/**
*
* @param session
* @param proto
* @throws Exception
*/
public void homeEquipStrongReset(ISession session, HeroInfoProto.HomeEquipStrongResetRequset proto) throws Exception{
String heroId = proto.getHeroId();
User user = UserManager.getUser(session.getUid());
// 校验并消耗
int[] costItem = SSpecialConfig.getOnceArrayValue(SSpecialConfig.EquipRankResetCost);
if (costItem[1] > 0){
boolean cost = ItemUtil.itemCost(user, new int[][]{costItem}, BIReason.HOME_EQUIP_STRONG_RESET_COST, 0);
if (!cost){
throw new ErrorCodeException(ErrorCode.ITEM_NOT_ENOUGH);
}
}
CommonProto.Drop.Builder drop = CommonProto.Drop.newBuilder();
getHomeEquipStrongReset(user, heroId, drop);
// 返回装备强化信息
HeroInfoProto.HomeEquipStrongResetResponse build = HeroInfoProto.HomeEquipStrongResetResponse.newBuilder().setDrop(drop).build();
MessageUtil.sendMessage(session, 1, MessageTypeProto.MessageType.HomeEquipStrongResetResponse_VALUE, build);
}
/**
*
* @param user
* @param heroId
* @return
* @throws Exception
*/
public void getHomeEquipStrongReset(User user,String heroId,CommonProto.Drop.Builder drop) throws Exception {
Hero hero = user.getHeroManager().getHero(heroId);
if (hero == null){
throw new ErrorCodeException(ErrorCode.ITEM_DECOMPOSE_NO_HERO,"英雄不存在:"+heroId);
}
// 强化消耗物品
TreeMap<Integer, SEquipStrengthen> strongTreeMap = new TreeMap<>(SEquipStrengthen.lvMap);
ArrayList<int[][]> itemList = new ArrayList<>();
for (HeroEquipStrong strong : hero.getEquipStrongMap().values()) {
SortedMap<Integer, SEquipStrengthen> subMap = strongTreeMap.subMap(0, strong.getStrongLv());
List<int[][]> collect = subMap.values().stream().map(SEquipStrengthen::getCost).collect(Collectors.toList());
itemList.addAll(collect);
}
// 突破消耗物品
TreeMap<Integer, SEquipRankUp> rankUpTreeMap = new TreeMap<>(SEquipRankUp.lvMap);
SortedMap<Integer, SEquipRankUp> subMap = rankUpTreeMap.subMap(0, hero.getEquipAdvanceLv());
List<int[][]> collect = subMap.values().stream().map(SEquipRankUp::getCost).collect(Collectors.toList());
itemList.addAll(collect);
ItemUtil.drop(user, itemList, drop, BIReason.HOME_EQUIP_STRONG_RESET_GAIN);
// 重置英雄信息
hero.setEquipStrongMap(new HashMap<>());
hero.setEquipAdvanceLv(0);
}
}

View File

@ -467,8 +467,6 @@ public class ItemLogic {
ErrorCode erroMags = checkHeroResolve(heroIdsList, user);
if (null != erroMags) {
throw new ErrorCodeException(erroMags);
//MessageUtil.sendErrorResponse(iSession,0,msgId,erroMags);
// return baseBuilder;
}
//1裸角色卡没有突破过的角色卡熔炼后返还的材料=当前等级返还升级材料+item表返还材料
//2有过突破的卡 =当前等级返还升级材料+突破表返还材料
@ -479,8 +477,14 @@ public class ItemLogic {
List<Integer> heroStarReport = new ArrayList<>();
Map<String, PropertyItem> equipMap = user.getEquipManager().getEquipMap();
CommonProto.Drop.Builder drop = CommonProto.Drop.newBuilder();
for (String heroId : heroIdsList) {
Hero hero = heroManager.getHeroMap().get(heroId);
//摘星阁装备强化
HeroLogic.getInstance().getHomeEquipStrongReset(user,heroId,drop);
//卸下魂印装备
Map<Integer, Integer> equipByPositionMap = hero.getEquipByPositionMap();
Map<Integer, Integer> soulEquipByPositionMap = hero.getSoulEquipByPositionMap();
@ -543,7 +547,8 @@ public class ItemLogic {
ReportUtil.onReportEvent(user, ReportEventEnum.SEND_HERO.getType(), heroIdReport, heroLevelReport, heroStarReport, new ArrayList<>(baseItemMap.keySet()), new ArrayList<>(baseItemMap.values()));
}
return ItemUtil.drop(user,itemReturnPercent(itemArray,rankUpReturnPercent),reson);
ItemUtil.drop(user,itemReturnPercent(itemArray,rankUpReturnPercent),reson,drop);
return drop;
}
/**

View File

@ -134,6 +134,8 @@ public class SSpecialConfig implements BaseConfig {
public static final String ChangingPosUnlock = "ChangingPosUnlock";//3个变身卡化身位解锁所需的化身之力等级
public static final String EquipTalismanaUpperLimit = "EquipTalismanaUpperLimit ";//法宝等级上限
public static final String EquipRankResetCost = "EquipRankResetCost";//摘星阁装备强化精炼重置消耗
@Override
public void init() throws Exception {