添加战中属性

yuanshuai 2021-11-18 15:09:45 +08:00
parent 782d39ab2d
commit dfa218d8ba
2 changed files with 87 additions and 88 deletions

View File

@ -24,18 +24,18 @@ public enum HeroAttributeEnum {
DifferDemonsBocusFactor(66), DifferDemonsBocusFactor(66),
CurHpExtra(67), CurHpExtra(67),
CurHpSpecialExtra(68), CurHpSpecialExtra(68),
PVPDamageBocusFactor(69), PVPDamageBocusFactor(69),//PVP增伤
PVPDamageReduceFactor(70), PVPDamageReduceFactor(70),//PVP减伤
FireDamageBonusFactor(101), RenBonus(101),//灭人
WindDamageBonusFactor(102), FoBonus(102),//灭佛
WaterDamageBonusFactor(103), YaoBonus(103),//灭妖
LandDamageBonusFactor(104), DaoBonus(104),//灭道
LightDamageBonusFactor(105), LightDamageBonusFactor(105),
DarkDamageBonusFactor(106), DarkDamageBonusFactor(106),
FireDamageReduceFactor(107), RenReduce(107),//抗人
WindDamageReduceFactor(108), FoReduce(108),//抗佛
WaterDamageReduceFactor(109), YaoReduce(109),//抗妖
LandDamageReduceFactor(110), DaoReduce(110),//抗道
LightDamageReduceFactor(111), LightDamageReduceFactor(111),
DarkDamageReduceFactor(112), DarkDamageReduceFactor(112),
CritDamageReduceFactor(113), // 暴伤减免 CritDamageReduceFactor(113), // 暴伤减免

View File

@ -95,22 +95,18 @@ public class HeroLogic {
transTemplate.add(HeroAttributeEnum.AntiCritDamageFactor.getPropertyId()); // 抗暴率 transTemplate.add(HeroAttributeEnum.AntiCritDamageFactor.getPropertyId()); // 抗暴率
transTemplate.add(HeroAttributeEnum.TreatFacter.getPropertyId()); // 治疗加成系数 transTemplate.add(HeroAttributeEnum.TreatFacter.getPropertyId()); // 治疗加成系数
transTemplate.add(HeroAttributeEnum.CureFacter.getPropertyId()); // 受治疗 transTemplate.add(HeroAttributeEnum.CureFacter.getPropertyId()); // 受治疗
// transTemplate.add(HeroAttributeEnum.PVPDamageBocusFactor.getPropertyId()); // pvp 增伤
// transTemplate.add(HeroAttributeEnum.PVPDamageReduceFactor.getPropertyId()); // pvp 减伤 transTemplate.add(HeroAttributeEnum.RenBonus.getPropertyId()); // 人系伤害加成系数
transTemplate.add(HeroAttributeEnum.DifferDemonsBocusFactor.getPropertyId()); // 增加受到的异妖伤害 transTemplate.add(HeroAttributeEnum.FoBonus.getPropertyId()); // 佛系伤害加成系数
transTemplate.add(HeroAttributeEnum.DifferDemonsReduceFactor.getPropertyId()); // 异妖减伤率 transTemplate.add(HeroAttributeEnum.YaoBonus.getPropertyId()); // 妖系伤害加成系数
// transTemplate.add(HeroAttributeEnum.FireDamageBonusFactor.getPropertyId()); // 火系伤害加成系数 transTemplate.add(HeroAttributeEnum.DaoBonus.getPropertyId()); // 道系伤害加成系数
transTemplate.add(HeroAttributeEnum.FireDamageReduceFactor.getPropertyId()); // 火系伤害减免系数
// transTemplate.add(HeroAttributeEnum.WindDamageBonusFactor.getPropertyId()); // 风系伤害加成系数 transTemplate.add(HeroAttributeEnum.RenReduce.getPropertyId()); // 人系伤害减免系数
transTemplate.add(HeroAttributeEnum.WindDamageReduceFactor.getPropertyId()); // 风系伤害减免系数 transTemplate.add(HeroAttributeEnum.FoReduce.getPropertyId()); // 佛系伤害减免系数
// transTemplate.add(HeroAttributeEnum.WaterDamageBonusFactor.getPropertyId()); // 冰系伤害加成系数 transTemplate.add(HeroAttributeEnum.YaoReduce.getPropertyId());// 妖系伤害减免系数
transTemplate.add(HeroAttributeEnum.WaterDamageReduceFactor.getPropertyId());// 冰系伤害减免系数 transTemplate.add(HeroAttributeEnum.DaoReduce.getPropertyId()); // 道系伤害减免系数
// transTemplate.add(HeroAttributeEnum.LandDamageBonusFactor.getPropertyId()); // 地系伤害加成系数
transTemplate.add(HeroAttributeEnum.LandDamageReduceFactor.getPropertyId()); // 地系伤害减免系数 transTemplate.add(HeroAttributeEnum.CritDamageReduceFactor.getPropertyId()); // 暴伤减免
// transTemplate.add(HeroAttributeEnum.LightDamageBonusFactor.getPropertyId()); // 雷系伤害加成系数
transTemplate.add(HeroAttributeEnum.LightDamageReduceFactor.getPropertyId());// 雷系伤害减免系数
// transTemplate.add(HeroAttributeEnum.DarkDamageBonusFactor.getPropertyId()); // 暗系伤害加成系数
transTemplate.add(HeroAttributeEnum.DarkDamageReduceFactor.getPropertyId()); // 暗系伤害减免系数
transTemplateByHeroPropertyName.put(1, new ArrayList<>(transTemplate)); transTemplateByHeroPropertyName.put(1, new ArrayList<>(transTemplate));
transTemplateByHeroPropertyName.put(2, new ArrayList<>(transTemplate)); transTemplateByHeroPropertyName.put(2, new ArrayList<>(transTemplate));
@ -119,12 +115,6 @@ public class HeroLogic {
transTemplateByHeroPropertyName.put(5, new ArrayList<>(transTemplate)); transTemplateByHeroPropertyName.put(5, new ArrayList<>(transTemplate));
transTemplateByHeroPropertyName.put(6, new ArrayList<>(transTemplate)); transTemplateByHeroPropertyName.put(6, new ArrayList<>(transTemplate));
transTemplateByHeroPropertyName.get(1).add(HeroAttributeEnum.FireDamageBonusFactor.getPropertyId());
transTemplateByHeroPropertyName.get(2).add(HeroAttributeEnum.WindDamageBonusFactor.getPropertyId());
transTemplateByHeroPropertyName.get(3).add(HeroAttributeEnum.WaterDamageBonusFactor.getPropertyId());
transTemplateByHeroPropertyName.get(4).add(HeroAttributeEnum.LandDamageBonusFactor.getPropertyId());
transTemplateByHeroPropertyName.get(5).add(HeroAttributeEnum.LightDamageBonusFactor.getPropertyId());
transTemplateByHeroPropertyName.get(6).add(HeroAttributeEnum.DarkDamageBonusFactor.getPropertyId());
equipSkillPositionTemaplge.add(1); equipSkillPositionTemaplge.add(1);
equipSkillPositionTemaplge.add(2); equipSkillPositionTemaplge.add(2);
@ -3102,66 +3092,75 @@ public class HeroLogic {
public int calForce(Map<Integer, Long> heroAllAttribute) { public int calForce(Map<Integer, Long> heroAllAttribute) {
double result = 0; double result = 0;
// 旧战力计算 float forceNum=0;//基础值
// for(Map.Entry<Integer, Long> item : heroAllAttribute.entrySet()){ float forceAdd=0;//加成值
// Integer propertyId = item.getKey(); //战力计算
// float propertyValue = item.getValue(); for(Map.Entry<Integer, Long> item : heroAllAttribute.entrySet()){
// if(propertyId == HeroAttributeEnum.EquipForce.getPropertyId()){ Integer propertyId = item.getKey();
// continue; float propertyValue = item.getValue();
// } ///pvp增伤和减伤在计算之前已经算进去了
// SPropertyConfig sPropertyConfig = SPropertyConfig.getsPropertyConfigByPID(propertyId); if (propertyId==HeroAttributeEnum.PVPDamageBocusFactor.getPropertyId()||propertyId==HeroAttributeEnum.PVPDamageReduceFactor.getPropertyId()){
// if(sPropertyConfig.getStyle() == GlobalsDef.PERCENT_TYPE){ continue;
// propertyValue = propertyValue / 100F; }
// } SPropertyConfig sPropertyConfig = SPropertyConfig.getsPropertyConfigByPID(propertyId);
// float score = sPropertyConfig.getScore(); if (sPropertyConfig==null){
// continue;
// result += propertyValue*score; }
// } if (sPropertyConfig.getScore()==0){
continue;
}
if(sPropertyConfig.getStyle() == GlobalsDef.PERCENT_TYPE){
forceAdd += propertyValue*sPropertyConfig.getScore()/10000;
}else{
forceNum += propertyValue*sPropertyConfig.getScore();
}
}
result=forceNum+(forceNum*forceAdd);
// 新战力计算2021 9 17 // 新战力计算2021 9 17
// 面板最大生命值 // 面板最大生命值
SPropertyConfig sPropertyConfigHP = SPropertyConfig.getsPropertyConfigByPID(HeroAttributeEnum.Hp.getPropertyId()); // SPropertyConfig sPropertyConfigHP = SPropertyConfig.getsPropertyConfigByPID(HeroAttributeEnum.Hp.getPropertyId());
float hpScore = sPropertyConfigHP.getScore(); // float hpScore = sPropertyConfigHP.getScore();
SPropertyConfig sPropertyConfigAttack = SPropertyConfig.getsPropertyConfigByPID(HeroAttributeEnum.Attack.getPropertyId()); // SPropertyConfig sPropertyConfigAttack = SPropertyConfig.getsPropertyConfigByPID(HeroAttributeEnum.Attack.getPropertyId());
float attackScore = sPropertyConfigAttack.getScore(); // float attackScore = sPropertyConfigAttack.getScore();
SPropertyConfig sPropertyConfigPhysicalDefence = SPropertyConfig.getsPropertyConfigByPID(HeroAttributeEnum.PhysicalDefence.getPropertyId()); // SPropertyConfig sPropertyConfigPhysicalDefence = SPropertyConfig.getsPropertyConfigByPID(HeroAttributeEnum.PhysicalDefence.getPropertyId());
float pdScore = sPropertyConfigPhysicalDefence.getScore(); // float pdScore = sPropertyConfigPhysicalDefence.getScore();
SPropertyConfig sPropertyConfigMagicDefence = SPropertyConfig.getsPropertyConfigByPID(HeroAttributeEnum.MagicDefence.getPropertyId()); // SPropertyConfig sPropertyConfigMagicDefence = SPropertyConfig.getsPropertyConfigByPID(HeroAttributeEnum.MagicDefence.getPropertyId());
float mdScore = sPropertyConfigMagicDefence.getScore(); // float mdScore = sPropertyConfigMagicDefence.getScore();
//
float xishu = 10000; // float xishu = 10000;
float finalHp = heroAllAttribute.getOrDefault(HeroAttributeEnum.Hp.getPropertyId(), 0L).floatValue(); float finalHp = heroAllAttribute.getOrDefault(HeroAttributeEnum.Hp.getPropertyId(), 0L).floatValue();
// 面板攻击 // // 面板攻击
float finalAttack = heroAllAttribute.getOrDefault(HeroAttributeEnum.Attack.getPropertyId(), 0L).floatValue(); // float finalAttack = heroAllAttribute.getOrDefault(HeroAttributeEnum.Attack.getPropertyId(), 0L).floatValue();
// 面板护甲 // // 面板护甲
float finalPhysicalDefence = heroAllAttribute.getOrDefault(HeroAttributeEnum.PhysicalDefence.getPropertyId(), 0L).floatValue(); // float finalPhysicalDefence = heroAllAttribute.getOrDefault(HeroAttributeEnum.PhysicalDefence.getPropertyId(), 0L).floatValue();
// 面板魔抗 // // 面板魔抗
float magicDefence = heroAllAttribute.getOrDefault(HeroAttributeEnum.MagicDefence.getPropertyId(), 0L).floatValue(); // float magicDefence = heroAllAttribute.getOrDefault(HeroAttributeEnum.MagicDefence.getPropertyId(), 0L).floatValue();
// 伤害加成 // // 伤害加成
float damageBocusFactor = heroAllAttribute.getOrDefault(HeroAttributeEnum.DamageBocusFactor.getPropertyId(), 0L).floatValue(); // float damageBocusFactor = heroAllAttribute.getOrDefault(HeroAttributeEnum.DamageBocusFactor.getPropertyId(), 0L).floatValue();
// 伤害减免 // // 伤害减免
float damageReduceFactor = heroAllAttribute.getOrDefault(HeroAttributeEnum.DamageReduceFactor.getPropertyId(), 0L).floatValue(); // float damageReduceFactor = heroAllAttribute.getOrDefault(HeroAttributeEnum.DamageReduceFactor.getPropertyId(), 0L).floatValue();
// 命中几率 // // 命中几率
float hit = heroAllAttribute.getOrDefault(HeroAttributeEnum.Hit.getPropertyId(), 0L).floatValue(); // float hit = heroAllAttribute.getOrDefault(HeroAttributeEnum.Hit.getPropertyId(), 0L).floatValue();
// 闪避几率 // // 闪避几率
float dodge = heroAllAttribute.getOrDefault(HeroAttributeEnum.Dodge.getPropertyId(), 0L).floatValue(); // float dodge = heroAllAttribute.getOrDefault(HeroAttributeEnum.Dodge.getPropertyId(), 0L).floatValue();
// 暴击几率 // // 暴击几率
float critFactor = heroAllAttribute.getOrDefault(HeroAttributeEnum.CritFactor.getPropertyId(), 0L).floatValue(); // float critFactor = heroAllAttribute.getOrDefault(HeroAttributeEnum.CritFactor.getPropertyId(), 0L).floatValue();
// 抗暴几率 // // 抗暴几率
float antiCritDamageFactor = heroAllAttribute.getOrDefault(HeroAttributeEnum.AntiCritDamageFactor.getPropertyId(), 0L).floatValue(); // float antiCritDamageFactor = heroAllAttribute.getOrDefault(HeroAttributeEnum.AntiCritDamageFactor.getPropertyId(), 0L).floatValue();
// 暴伤加成 // // 暴伤加成
float critDamageFactor = heroAllAttribute.getOrDefault(HeroAttributeEnum.CritDamageFactor.getPropertyId(), 0L).floatValue(); // float critDamageFactor = heroAllAttribute.getOrDefault(HeroAttributeEnum.CritDamageFactor.getPropertyId(), 0L).floatValue();
// 暴伤减免 // // 暴伤减免
float critDamageReduceFactor = heroAllAttribute.getOrDefault(HeroAttributeEnum.CritDamageReduceFactor.getPropertyId(), 0L).floatValue(); // float critDamageReduceFactor = heroAllAttribute.getOrDefault(HeroAttributeEnum.CritDamageReduceFactor.getPropertyId(), 0L).floatValue();
// 受疗加成 // // 受疗加成
float cureFacter = heroAllAttribute.getOrDefault(HeroAttributeEnum.CureFacter.getPropertyId(), 0L).floatValue(); // float cureFacter = heroAllAttribute.getOrDefault(HeroAttributeEnum.CureFacter.getPropertyId(), 0L).floatValue();
// 治疗加成 // // 治疗加成
float treatFacter = heroAllAttribute.getOrDefault(HeroAttributeEnum.TreatFacter.getPropertyId(), 0L).floatValue(); // float treatFacter = heroAllAttribute.getOrDefault(HeroAttributeEnum.TreatFacter.getPropertyId(), 0L).floatValue();
//
result = (finalHp * hpScore + finalAttack * attackScore + finalPhysicalDefence * pdScore + magicDefence * mdScore) // result = (finalHp * hpScore + finalAttack * attackScore + finalPhysicalDefence * pdScore + magicDefence * mdScore)
* (1 + (damageBocusFactor + damageReduceFactor + hit + dodge + critFactor + // * (1 + (damageBocusFactor + damageReduceFactor + hit + dodge + critFactor +
antiCritDamageFactor + critDamageFactor + critDamageReduceFactor + cureFacter + treatFacter) / 2 / xishu); // antiCritDamageFactor + critDamageFactor + critDamageReduceFactor + cureFacter + treatFacter) / 2 / xishu);
return (int) result; return (int)result;
} }
public void combinedAttribute(Map<Integer, Long> otherAttriMaop, Map<Integer, Long> heroAttributeMap) { public void combinedAttribute(Map<Integer, Long> otherAttriMaop, Map<Integer, Long> heroAttributeMap) {