英雄升星修改,进阶修改

back_recharge
lvxinran 2020-07-16 16:31:53 +08:00
parent 9904db73d6
commit 20f2fffb71
1 changed files with 28 additions and 12 deletions

View File

@ -866,7 +866,7 @@ public class HeroLogic{
//删除hero
CommonProto.Drop.Builder baseBuilder = ItemLogic.getInstance().decomposeHero(session,new LinkedList<>(removeHeroIds),Collections.singleton(26),MessageTypeProto.MessageType.UP_HERO_STAR_RESPONSE_VALUE);
// recyleHeroBySystem(user,removeHeroIds);
rankUpHeroExecute(targetHero,1,8);
rankUpHeroExecute(targetHero);
Poster.getPoster().dispatchEvent(new HeroUpStarEvent(user.getId(),targetHero.getTemplateId(),targetHero.getStar()));
if(targetHero.getStar()>=5&&targetHero.getStar()!=15){
if(SItem.getsItemMap().get(scHero.getId()).getQuantity()>=5)
@ -888,11 +888,19 @@ public class HeroLogic{
}
ReportUtil.onReportEvent(user, ReportEventEnum.HERO_STRENGTHEN.getType(),String.valueOf(targetHero.getTemplateId()),String.valueOf(oldStar),String.valueOf(targetHero.getStar()),"");
}
private void rankUpHeroExecute(Hero hero,int starCount,int unlockEspecialEquipStar) throws Exception {
private void rankUpHeroExecute(Hero hero)throws Exception {
//是否解锁法宝
if(hero.getStar()<unlockEspecialEquipStar&&hero.getStar()+starCount>=unlockEspecialEquipStar){
hero.updateEspecial(1);
SGameSetting gameSetting = STableManager.getFigureConfig(CommonStaticConfig.class).getGameSetting();
int[][] equipTalismanaUnlock = gameSetting.getEquipTalismanaUnlock();
for(int [] lockLimit:equipTalismanaUnlock){
//英雄星级解锁
if(lockLimit[0]==2) {
if (hero.getStar() < lockLimit[1] && hero.getStar() + 1 >= lockLimit[1]) {
hero.updateEspecial(1);
}
}
}
hero.upStar( 1 );
}
@ -2341,23 +2349,31 @@ public class HeroLogic{
heroManager.removeHero(uid,heroId);
int[][] returnMaterials = sHeroReturn.getRankupReturn();
SHeroLevlConfig sHeroLevlConfig = SHeroLevlConfig.getsHeroLevlConfigMap().get(hero.getLevel());
int[][] levelReturn = ItemLogic.getInstance().itemReturnPercent(sHeroLevlConfig.getSumConsume(), returnPercent);
int returnHero = sHeroReturn.getHeroId();
//进阶材料返还乘万分比
int[][] realReturnMaterials = new int[returnMaterials.length][];
for(int i = 0 ; i <realReturnMaterials.length;i++){
realReturnMaterials[i] = new int[]{returnMaterials[i][0],(int)(returnMaterials[i][1]/10000d*returnPercent)};
Map<Integer,Integer> returnItemMap = new HashMap<>();
for(int i = 0 ; i <returnMaterials.length;i++){
returnItemMap.put(returnMaterials[i][0],(int)(returnMaterials[i][1]/10000d*returnPercent));
}
CommonProto.Drop.Builder drop = ItemUtil.drop(user,realReturnMaterials, BIReason.HERO_BACK_REWARD);
ItemUtil.drop(user, new int[][]{{returnHero,1}},drop, BIReason.HERO_BACK_REWARD);
for(int i = 0 ; i <levelReturn.length;i++){
returnItemMap.put(levelReturn[i][0],returnItemMap.getOrDefault(levelReturn[i][0],0)+levelReturn[i][1]);
}
returnItemMap.put(returnHero,1);
int[][] resultDrop = new int[returnItemMap.size()][];
int index = 0;
for(Map.Entry<Integer,Integer> entry:returnItemMap.entrySet()){
resultDrop[index] = new int[]{entry.getKey(),entry.getValue()};
index++;
}
CommonProto.Drop.Builder drop = ItemUtil.drop(user, resultDrop, BIReason.HERO_BACK_REWARD);
CommonProto.Hero.Builder heroProto = drop.getHero(0).toBuilder();
String createHeroId = heroProto.getId();
heroProto.setStar(star);
drop.setHero(0,heroProto.build());
Hero newHero = user.getHeroManager().getHeroMap().get(createHeroId);
newHero.setStar(star);
SHeroLevlConfig sHeroLevlConfig = SHeroLevlConfig.getsHeroLevlConfigMap().get(hero.getLevel());
int[][] levelUpReturn = sHeroLevlConfig.getSumConsume();
ItemUtil.drop(user, ItemLogic.getInstance().itemReturnPercent(levelUpReturn,returnPercent),drop, BIReason.HERO_BACK_REWARD);
HeroInfoProto.HeroReturnResponse build = HeroInfoProto.HeroReturnResponse.newBuilder().setDrop(drop).build();
MessageUtil.sendMessage(session,1,responseMsgId,build,true);