Browse Source

update player combat stats

lakebane-recovery
FatBoy-DOTC 6 days ago
parent
commit
f167317545
  1. 71
      src/engine/objects/PlayerCombatStats.java

71
src/engine/objects/PlayerCombatStats.java

@ -6,6 +6,7 @@ import engine.powers.EffectsBase;
import engine.powers.PowersBase; import engine.powers.PowersBase;
import engine.powers.effectmodifiers.AbstractEffectModifier; import engine.powers.effectmodifiers.AbstractEffectModifier;
import engine.server.MBServerStatics; import engine.server.MBServerStatics;
import org.pmw.tinylog.Logger;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode; import java.math.RoundingMode;
@ -384,15 +385,19 @@ public class PlayerCombatStats {
} }
} }
} else { } else {
for (AbstractEffectModifier mod : this.owner.effects.get(effID).getEffectModifiers()) { try {
if (mod.modType.equals(Enum.ModType.OCV)) { for (AbstractEffectModifier mod : this.owner.effects.get(effID).getEffectModifiers()) {
if(mod.getPercentMod() == 0) { if (mod.modType.equals(Enum.ModType.OCV)) {
float value = mod.getMinMod(); if (mod.getPercentMod() == 0) {
int trains = this.owner.effects.get(effID).getTrains(); float value = mod.getMinMod();
float modValue = value + (trains * mod.getRamp()); int trains = this.owner.effects.get(effID).getTrains();
atrEnchants += modValue; float modValue = value + (trains * mod.getRamp());
atrEnchants += modValue;
}
} }
} }
}catch(Exception e){
//Logger.error(e.getMessage());
} }
} }
} }
@ -434,16 +439,35 @@ public class PlayerCombatStats {
atr *= 1.0f + stanceValue; atr *= 1.0f + stanceValue;
if(this.owner.bonuses != null) { if(this.owner.bonuses != null) {
float positivePercentBonuses = this.owner.bonuses.getFloatPercentPositive(Enum.ModType.OCV, Enum.SourceType.None) - stanceValue;
float negativePercentBonuses = this.owner.bonuses.getFloatPercentNegative(Enum.ModType.OCV, Enum.SourceType.None);
float modifier = 1 + (positivePercentBonuses + negativePercentBonuses);
//float positivePercentBonuses = this.owner.bonuses.getFloatPercentPositive(Enum.ModType.OCV, Enum.SourceType.None) - stanceValue;
//float negativePercentBonuses = this.owner.bonuses.getFloatPercentNegative(Enum.ModType.OCV, Enum.SourceType.None);
//float modifier = 1 + (positivePercentBonuses + negativePercentBonuses);
float modifier = this.owner.bonuses.getFloatPercentAll(Enum.ModType.OCV, Enum.SourceType.None);
if(preciseRune > 1.0f) if(preciseRune > 1.0f)
modifier -= 0.05f; modifier -= 0.05f;
if(stanceValue > 0.0f){ if(stanceValue != 0.0f){
modifier -= (stanceValue); modifier -= (stanceValue);
} }
modifier -= healerDefStance; modifier -= healerDefStance;
atr *= modifier; modifier += 1.0f;
float weaponMoveBonus = 0.0f;
if(this.owner.effects != null){
if(this.owner.effects.containsKey("WeaponMove")){
Effect eff = this.owner.effects.get("WeaponMove");
for(AbstractEffectModifier mod : eff.getEffectModifiers()){
if(mod.modType.equals(Enum.ModType.OCV)){
float min = mod.getPercentMod();
float ramp = mod.getRamp() * eff.getTrains();
weaponMoveBonus += (min + ramp) * 0.01f;
}
}
}
}
atr *= modifier - weaponMoveBonus;
} }
atr = (float) Math.round(atr); atr = (float) Math.round(atr);
@ -1056,15 +1080,28 @@ public class PlayerCombatStats {
atr += (modifiedDexterity * 0.5f) + weaponATR1 + weaponATR2; atr += (modifiedDexterity * 0.5f) + weaponATR1 + weaponATR2;
atr *= precise; atr *= precise;
atr += atrBuffs; atr += atrBuffs;
if(pc.getWeaponPower() != null){
DeferredPowerJob dpj = pc.getWeaponPower(); float weaponMoveBonus = 0.0f;
dpj.endEffect(); if(pc.effects != null){
if(pc.effects.containsKey("WeaponMove")){
Effect eff = pc.effects.get("WeaponMove");
for(AbstractEffectModifier mod : eff.getEffectModifiers()){
if(mod.modType.equals(Enum.ModType.OCV)){
float min = mod.getPercentMod();
float ramp = mod.getRamp() * eff.getTrains();
weaponMoveBonus += (min + ramp) * 0.01f;
}
}
}
} }
float subtraction = (stanceMod - 1) - (precise - 1) - healerDefStance;
float bonuses = 0.0f;
if(pc.bonuses != null) if(pc.bonuses != null)
atr *= 1 + (pc.bonuses.getFloatPercentAll(Enum.ModType.OCV, Enum.SourceType.None) - (stanceMod - 1) - (precise - 1) - healerDefStance); bonuses = pc.bonuses.getFloatPercentAll(Enum.ModType.OCV, Enum.SourceType.None) - subtraction - weaponMoveBonus;
atr *= stanceMod; atr *= 1+ bonuses;
atr *= stanceMod - healerDefStance;
return atr; return atr;
} }

Loading…
Cancel
Save