副本buff机制修改

back_recharge
lvxinran 2020-07-04 06:18:45 +08:00
parent c715f31468
commit 21b5709798
2 changed files with 33 additions and 28 deletions

View File

@ -65,36 +65,42 @@ public class CombatLogic {
public Map<Integer,Integer> bufferOneHeroAttrAfterEat(Map<Integer,Integer> value,int foodId){
SFoodsConfig sFoodsConfig = STableManager.getConfig(SFoodsConfig.class).get(foodId);
if(value.get(HeroAttributeEnum.CurHP.getPropertyId()) == 0 || sFoodsConfig.getContiue()!=0){
return value;
}
for(int[] effectPara : sFoodsConfig.getEffectPara()){
int effectId = effectPara[0];
int effectValue = effectPara[1];
SPropertyConfig sPropertyConfig = SPropertyConfig.getsPropertyConfigByPID(effectId);
if( sPropertyConfig.getStyle() == GlobalsDef.PERCENT_TYPE){
if(effectId == HeroAttributeEnum.CurHpExtra.getPropertyId()){
effectId = HeroAttributeEnum.CurHP.getPropertyId();
effectValue = value.get(HeroAttributeEnum.Hp.getPropertyId()) * effectValue/10000;
}else{
if(sPropertyConfig.getTargetPropertyId()!=0){
effectId = sPropertyConfig.getTargetPropertyId();
effectValue = value.get(effectId) * effectValue/10000;
public Map<Integer,Integer> bufferOneHeroAttrAfterEat(Map<Integer,Integer> value,int foodId) {
List<Integer> foodIds = new ArrayList<>();
foodIds.add(foodId);
return bufferOneHeroAttrAfterEat(value,foodIds);
}
public Map<Integer,Integer> bufferOneHeroAttrAfterEat(Map<Integer,Integer> value,List<Integer> foodIds){
Map<Integer,Integer> effectValueMap = new HashMap<>();
for(int foodId:foodIds){
SFoodsConfig sFoodsConfig = STableManager.getConfig(SFoodsConfig.class).get(foodId);
if(value.get(HeroAttributeEnum.CurHP.getPropertyId()) == 0 || sFoodsConfig.getContiue()!=0){
return value;
}
for(int[] effectPara : sFoodsConfig.getEffectPara()){
int effectId = effectPara[0];
int effectValue = effectPara[1];
SPropertyConfig sPropertyConfig = SPropertyConfig.getsPropertyConfigByPID(effectId);
if( sPropertyConfig.getStyle() == GlobalsDef.PERCENT_TYPE){
if(effectId == HeroAttributeEnum.CurHpExtra.getPropertyId()){
effectId = HeroAttributeEnum.CurHP.getPropertyId();
effectValue = value.get(HeroAttributeEnum.Hp.getPropertyId()) * effectValue/10000;
}else{
if(sPropertyConfig.getTargetPropertyId()!=0){
effectId = sPropertyConfig.getTargetPropertyId();
effectValue = Double.valueOf(value.get(effectId) /10000d* effectValue).intValue();
}
}
}
effectValueMap.put(effectId,effectValueMap.getOrDefault(effectId,0)+effectValue);
}
if(!value.containsKey(effectId)){
value.put(effectId,effectValue);
continue;
}
int finalValue = value.get(effectId) + effectValue;
}
for(Map.Entry<Integer,Integer> entry:effectValueMap.entrySet()){
int finalValue = value.get(entry.getKey()) + entry.getValue();
if(finalValue < 0){
finalValue = 0;
}
if(effectId == HeroAttributeEnum.CurHP.getPropertyId()){
if(entry.getKey() == HeroAttributeEnum.CurHP.getPropertyId()){
Integer maxValue = value.get(HeroAttributeEnum.Hp.getPropertyId());
if(finalValue>maxValue){
finalValue = maxValue;
@ -103,7 +109,7 @@ public class CombatLogic {
finalValue =1;
}
}
value.put( effectId,finalValue );
value.put(entry.getKey(),finalValue );
}
return value;
}

View File

@ -218,9 +218,8 @@ public class FightUtil {
for(Map.Entry<Integer,Integer> tempProperty:trailHero.getProperty().entrySet()){
propertyMap.put(tempProperty.getKey(),tempProperty.getValue());
}
for(int buffId:buffIds){
CombatLogic.getInstance().bufferOneHeroAttrAfterEat(propertyMap,buffId);
}
CombatLogic.getInstance().bufferOneHeroAttrAfterEat(propertyMap,buffIds);
}else{
propertyMap = trailHero.getProperty();
}