属性计算 目标属性也是万分比计算 (bug多了万分比加成于同一个一级属性 只会有一个生效)
parent
0f430e6a09
commit
c015b1ea18
|
@ -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){
|
||||
|
|
Loading…
Reference in New Issue