英雄归元,被动技能战力增加

back_recharge
lvxinran 2020-07-13 18:31:42 +08:00
parent 3a8d9cc527
commit a8a46da07b
3 changed files with 39 additions and 20 deletions

View File

@ -1,6 +1,7 @@
package com.ljsd.jieling.logic.fight.passiveSkillCal;
import com.ljsd.jieling.core.GlobalsDef;
import config.SCHero;
import config.SPropertyConfig;
import java.util.Arrays;
@ -26,8 +27,8 @@ public enum PassiveskillCalEnum {
parm = value[1]*10000;
}
int extreeValue = (int) cal(optCode, parm);
heroSkillAdMap.put(sPropertyConfig.getPropertyId(),heroSkillAdMap.getOrDefault(sPropertyConfig.getPropertyId(),0)+extreeValue);
int extraValue = (int) cal(optCode, parm);
heroSkillAdMap.put(sPropertyConfig.getPropertyId(),heroSkillAdMap.getOrDefault(sPropertyConfig.getPropertyId(),0)+extraValue);
}),
AllAdd(94,(config,hero,heroSkillAdMap)->{
float[] value = config.getValue();
@ -47,8 +48,8 @@ public enum PassiveskillCalEnum {
parm = value[0]*10000;
}
int extreeValue = (int) cal(optCode, parm);
heroSkillAdMap.put(sPropertyConfig.getPropertyId(),heroSkillAdMap.getOrDefault(sPropertyConfig.getPropertyId(),0)+extreeValue);
int extraValue = (int) cal(optCode, parm);
heroSkillAdMap.put(sPropertyConfig.getPropertyId(),heroSkillAdMap.getOrDefault(sPropertyConfig.getPropertyId(),0)+extraValue);
}),
HEROAFTER100ADD(171,(config,hero,heroSkillAdMap)->{
float[] value = config.getValue();
@ -62,6 +63,30 @@ public enum PassiveskillCalEnum {
int parm = (int) value[1]*times;
heroSkillAdMap.put(sPropertyConfig.getPropertyId(),heroSkillAdMap.getOrDefault(sPropertyConfig.getPropertyId(),0)+parm);
}),//武将100级后每升一级[c]额外增加[d]
HERO_PROFESSION_ADD(129,(config,hero,heroSkillAdMap)->{
float[] value = config.getValue();
if(SCHero.getsCHero().get(hero.getTemplateId()).getProfession()!=value[0]){
return;
}
float parm = value[1];
int optCode = (int) value[3];
SPropertyConfig sPropertyConfig = SPropertyConfig.getsPropertyConfigByBattlePID((int)(value[2]));
if(optCode%2==0){
if( sPropertyConfig.getStyle()!= GlobalsDef.PERCENT_TYPE){
sPropertyConfig = SPropertyConfig.getsPropertyConfigByTargetPropertyId(sPropertyConfig.getPropertyId());
}
parm = value[0]*10000;
}
if( sPropertyConfig.getStyle()== GlobalsDef.PERCENT_TYPE){
parm = value[0]*10000;
}
int extraValue = (int) cal(optCode, parm);
heroSkillAdMap.put(sPropertyConfig.getPropertyId(),heroSkillAdMap.getOrDefault(sPropertyConfig.getPropertyId(),0)+extraValue);
}),
;
private int type;
private PassiveSkillProcessor passiveSkillProcessor;

View File

@ -2329,24 +2329,28 @@ public class HeroLogic{
throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE);
}
}
int star = hero.getStar();
int breakId = hero.getBreakId();
int templateId = hero.getTemplateId();
int star = hero.getStar();
Map<Integer, SHeroReturn> sHeroReturnMap = SHeroReturn.sheroReturnMap.get(templateId);
if(sHeroReturnMap == null || !sHeroReturnMap.containsKey(star)){
if(sHeroReturnMap == null || !sHeroReturnMap.containsKey(breakId)){
throw new ErrorCodeException(ErrorCode.newDefineCode("not satisfy"));
}
SHeroReturn sHeroReturn = sHeroReturnMap.get(star);
SHeroReturn sHeroReturn = sHeroReturnMap.get(breakId);
boolean b = ItemUtil.itemCost(user, sHeroReturn.getReturnConsume(), BIReason.HERO_BACK_CONSUME, templateId * 100 + star);
if(!b){
throw new ErrorCodeException(ErrorCode.HERO_ITEM_NOT);
}
heroManager.removeHero(uid,heroId);
int[] returnMaterials = sHeroReturn.getRankupReturn();
int[][] returnMaterials = sHeroReturn.getRankupReturn();
int returnHero = sHeroReturn.getHeroId();
//进阶材料返还乘万分比
returnMaterials[1]*=(double)returnPercent/10000;
CommonProto.Drop.Builder drop = ItemUtil.drop(user,new int[][]{returnMaterials}, BIReason.HERO_BACK_REWARD);
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)};
}
CommonProto.Drop.Builder drop = ItemUtil.drop(user,realReturnMaterials, BIReason.HERO_BACK_REWARD);
ItemUtil.drop(user, new int[][]{{returnHero,1}},drop, BIReason.HERO_BACK_REWARD);
CommonProto.Hero.Builder heroProto = drop.getHero(0).toBuilder();
String createHeroId = heroProto.getId();

View File

@ -33,12 +33,6 @@ public class SHeroReturn implements BaseConfig {
for(SHeroReturn sHeroReturn : config.values()){
int heroId = sHeroReturn.getHeroId();
int star = sHeroReturn.getStar();
int[][] rankUpReturn = sHeroReturn.getRankupReturn();
int[][] returnMaterialsTmp = new int[rankUpReturn.length][];
for(int i=0;i<rankUpReturn.length;i++){
returnMaterialsTmp[i]=rankUpReturn[i];
}
sHeroReturn.setReturnMaterials(returnMaterialsTmp);
sheroReturnMap.computeIfAbsent(heroId,v->new HashMap<>()).put(star,sHeroReturn);
}
}
@ -71,8 +65,4 @@ public class SHeroReturn implements BaseConfig {
public int[][] getReturnMaterials() {
return returnMaterials;
}
public void setReturnMaterials(int[][] returnMaterials) {
this.returnMaterials = returnMaterials;
}
}