属性计算 目标属性也是万分比计算 (bug多了万分比加成于同一个一级属性 只会有一个生效)

back_recharge
zhangshanxue 2020-06-11 10:55:25 +08:00
parent 0f430e6a09
commit c015b1ea18
1 changed files with 22 additions and 6 deletions

View File

@ -1543,11 +1543,13 @@ public class HeroLogic{
/**
*
* @param heroAllAttribute
*
*
*/
public void calInteractAdd(Map<Integer, Integer> heroAllAttribute){
Map<Integer,Integer> propertyPercentMap = new HashMap<>();
Iterator<Map.Entry<Integer, Integer>> iterator = heroAllAttribute.entrySet().iterator();
Map<Integer, Integer> newAddAttribute = new HashMap<>();
while (iterator.hasNext()){
Map.Entry<Integer, Integer> item = iterator.next();
Integer propertyId = item.getKey();
@ -1559,23 +1561,37 @@ public class HeroLogic{
if(targetPropertyId == 0){
continue;
}
SPropertyConfig stargetPro = SPropertyConfig.getsPropertyConfigByPID(targetPropertyId);
if(stargetPro==null){
continue;
}
int style = sPropertyConfig.getStyle();
Integer effectValue = item.getValue();
Integer targetValue = heroAllAttribute.get(targetPropertyId);
if(style == GlobalsDef.ABSOLUTE_TYPE){
effectValue += targetValue;
heroAllAttribute.put(targetPropertyId,effectValue);
//如果目标属性也是万分比 直接加
if(style == GlobalsDef.ABSOLUTE_TYPE||stargetPro.getStyle()==GlobalsDef.PERCENT_TYPE){
if(heroAllAttribute.containsKey(targetPropertyId)){
Integer targetValue = heroAllAttribute.getOrDefault(targetPropertyId,0);
effectValue += targetValue;
heroAllAttribute.put(targetPropertyId,effectValue);
}else {
newAddAttribute.merge(targetPropertyId,effectValue,(a, b) -> a+b);
}
}else{
propertyPercentMap.put(targetPropertyId,effectValue);
}
iterator.remove();
}
heroAllAttribute.putAll(newAddAttribute);
for(Map.Entry<Integer,Integer> item : propertyPercentMap.entrySet()){
Integer propertyId = item.getKey();
Integer propertyValue = heroAllAttribute.get(propertyId);
Integer propertyValue = heroAllAttribute.getOrDefault(propertyId,0);
heroAllAttribute.put(propertyId,BigDecimal.valueOf(propertyValue).multiply(BigDecimal.valueOf(item.getValue()).divide(BigDecimal.valueOf(10000f))).intValue()+propertyValue);
}
Integer maxHp = heroAllAttribute.get(HeroAttributeEnum.Hp.getPropertyId());
Integer curHp = heroAllAttribute.get(HeroAttributeEnum.CurHP.getPropertyId());
if(maxHp!=null && curHp!=null && curHp > maxHp){