属性计算 目标属性也是万分比计算 (bug多了万分比加成于同一个一级属性 只会有一个生效)
parent
0f430e6a09
commit
c015b1ea18
|
@ -1543,11 +1543,13 @@ public class HeroLogic{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 属性数值计算
|
* 属性数值计算
|
||||||
* @param heroAllAttribute
|
* 先计算一级属性
|
||||||
|
*绝对值直接加 百分比统一之后加
|
||||||
*/
|
*/
|
||||||
public void calInteractAdd(Map<Integer, Integer> heroAllAttribute){
|
public void calInteractAdd(Map<Integer, Integer> heroAllAttribute){
|
||||||
Map<Integer,Integer> propertyPercentMap = new HashMap<>();
|
Map<Integer,Integer> propertyPercentMap = new HashMap<>();
|
||||||
Iterator<Map.Entry<Integer, Integer>> iterator = heroAllAttribute.entrySet().iterator();
|
Iterator<Map.Entry<Integer, Integer>> iterator = heroAllAttribute.entrySet().iterator();
|
||||||
|
Map<Integer, Integer> newAddAttribute = new HashMap<>();
|
||||||
while (iterator.hasNext()){
|
while (iterator.hasNext()){
|
||||||
Map.Entry<Integer, Integer> item = iterator.next();
|
Map.Entry<Integer, Integer> item = iterator.next();
|
||||||
Integer propertyId = item.getKey();
|
Integer propertyId = item.getKey();
|
||||||
|
@ -1559,23 +1561,37 @@ public class HeroLogic{
|
||||||
if(targetPropertyId == 0){
|
if(targetPropertyId == 0){
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
SPropertyConfig stargetPro = SPropertyConfig.getsPropertyConfigByPID(targetPropertyId);
|
||||||
|
if(stargetPro==null){
|
||||||
|
continue;
|
||||||
|
}
|
||||||
int style = sPropertyConfig.getStyle();
|
int style = sPropertyConfig.getStyle();
|
||||||
Integer effectValue = item.getValue();
|
Integer effectValue = item.getValue();
|
||||||
Integer targetValue = heroAllAttribute.get(targetPropertyId);
|
|
||||||
if(style == GlobalsDef.ABSOLUTE_TYPE){
|
//如果目标属性也是万分比 直接加
|
||||||
effectValue += targetValue;
|
if(style == GlobalsDef.ABSOLUTE_TYPE||stargetPro.getStyle()==GlobalsDef.PERCENT_TYPE){
|
||||||
heroAllAttribute.put(targetPropertyId,effectValue);
|
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{
|
}else{
|
||||||
propertyPercentMap.put(targetPropertyId,effectValue);
|
propertyPercentMap.put(targetPropertyId,effectValue);
|
||||||
}
|
}
|
||||||
iterator.remove();
|
iterator.remove();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
heroAllAttribute.putAll(newAddAttribute);
|
||||||
|
|
||||||
for(Map.Entry<Integer,Integer> item : propertyPercentMap.entrySet()){
|
for(Map.Entry<Integer,Integer> item : propertyPercentMap.entrySet()){
|
||||||
Integer propertyId = item.getKey();
|
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);
|
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 maxHp = heroAllAttribute.get(HeroAttributeEnum.Hp.getPropertyId());
|
||||||
Integer curHp = heroAllAttribute.get(HeroAttributeEnum.CurHP.getPropertyId());
|
Integer curHp = heroAllAttribute.get(HeroAttributeEnum.CurHP.getPropertyId());
|
||||||
if(maxHp!=null && curHp!=null && curHp > maxHp){
|
if(maxHp!=null && curHp!=null && curHp > maxHp){
|
||||||
|
|
Loading…
Reference in New Issue