|
|
@ -3838,6 +3838,227 @@ public class PlayerCharacter extends AbstractCharacter { |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public void calculateATR(){ |
|
|
|
|
|
|
|
if(this.charItemManager == null){ |
|
|
|
|
|
|
|
this.atrHandOne = 1; |
|
|
|
|
|
|
|
this.atrHandTwo = 1; |
|
|
|
|
|
|
|
return; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
Item equippedRight = this.charItemManager.getItemFromEquipped(ItemSlotType.RHELD.ordinal()); |
|
|
|
|
|
|
|
int weaponSkill1 = this.skills.get("Unarmed Combat").getTotalSkillPercet(); |
|
|
|
|
|
|
|
int weaponMastery1 = this.skills.get("Unarmed Combat Mastery").getTotalSkillPercet(); |
|
|
|
|
|
|
|
float atr1 = 0; |
|
|
|
|
|
|
|
int primaryStat1; |
|
|
|
|
|
|
|
if(equippedRight != null && equippedRight.getItemBase().isStrBased()){ |
|
|
|
|
|
|
|
primaryStat1 = this.statStrCurrent; |
|
|
|
|
|
|
|
}else{ |
|
|
|
|
|
|
|
primaryStat1 = this.statDexCurrent; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
atr1 = (primaryStat1 * 0.5f) + (weaponSkill1 * 4) + (weaponMastery1 * 3); |
|
|
|
|
|
|
|
if (this.bonuses != null) { |
|
|
|
|
|
|
|
atr1 += this.bonuses.getFloat(ModType.OCV, SourceType.None); |
|
|
|
|
|
|
|
float pos_Bonus = (1 + this.bonuses.getFloatPercentPositive(ModType.OCV, SourceType.None)); |
|
|
|
|
|
|
|
atr1 *= pos_Bonus; |
|
|
|
|
|
|
|
float neg_Bonus = this.bonuses.getFloatPercentNegative(ModType.OCV, SourceType.None); |
|
|
|
|
|
|
|
atr1 *= (1 + neg_Bonus); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
atr1 = (atr1 < 1) ? 1 : atr1; |
|
|
|
|
|
|
|
this.atrHandOne = (short) (atr1 + 0.5f); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Item equippedLeft = this.charItemManager.getItemFromEquipped(ItemSlotType.LHELD.ordinal()); |
|
|
|
|
|
|
|
int weaponSkill2 = this.skills.get("Unarmed Combat").getTotalSkillPercet(); |
|
|
|
|
|
|
|
int weaponMastery2 = this.skills.get("Unarmed Combat Mastery").getTotalSkillPercet(); |
|
|
|
|
|
|
|
float atr2 = 0; |
|
|
|
|
|
|
|
int primaryStat2; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (equippedLeft != null && equippedLeft.getItemBase().isStrBased()) { |
|
|
|
|
|
|
|
primaryStat2 = this.statStrCurrent; |
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
|
|
primaryStat2 = this.statDexCurrent; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
atr2 = (primaryStat2 * 0.5f) + (weaponSkill2 * 4) + (weaponMastery2 * 3); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (this.bonuses != null) { |
|
|
|
|
|
|
|
atr2 += this.bonuses.getFloat(ModType.OCV, SourceType.None); |
|
|
|
|
|
|
|
float pos_Bonus = (1 + this.bonuses.getFloatPercentPositive(ModType.OCV, SourceType.None)); |
|
|
|
|
|
|
|
atr2 *= pos_Bonus; |
|
|
|
|
|
|
|
float neg_Bonus = this.bonuses.getFloatPercentNegative(ModType.OCV, SourceType.None); |
|
|
|
|
|
|
|
atr2 *= (1 + neg_Bonus); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
atr2 = (atr2 < 1) ? 1 : atr2; |
|
|
|
|
|
|
|
this.atrHandTwo = (short) (atr2 + 0.5f); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
public void calculateDamage(){ |
|
|
|
|
|
|
|
if(this.charItemManager == null){ |
|
|
|
|
|
|
|
this.minDamageHandOne = 1; |
|
|
|
|
|
|
|
this.maxDamageHandOne = 5; |
|
|
|
|
|
|
|
this.minDamageHandTwo = 1; |
|
|
|
|
|
|
|
this.maxDamageHandTwo = 5; |
|
|
|
|
|
|
|
return; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
this.calculateMinDamage(); |
|
|
|
|
|
|
|
this.calculateMaxDamage(); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
public void calculateMinDamage(){ |
|
|
|
|
|
|
|
int baseDMG1 = 1; |
|
|
|
|
|
|
|
int baseDMG2 = 1; |
|
|
|
|
|
|
|
int weaponSkill1 = this.skills.get("Unarmed Combat").getTotalSkillPercet(); |
|
|
|
|
|
|
|
int weaponSkill2 = this.skills.get("Unarmed Combat").getTotalSkillPercet(); |
|
|
|
|
|
|
|
int weaponMastery1 = this.skills.get("Unarmed Combat Mastery").getTotalSkillPercet(); |
|
|
|
|
|
|
|
int weaponMastery2 = this.skills.get("Unarmed Combat Mastery").getTotalSkillPercet(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Item equippedRight = this.charItemManager.getItemFromEquipped(ItemSlotType.RHELD.ordinal()); |
|
|
|
|
|
|
|
Item equippedLeft = this.charItemManager.getItemFromEquipped(ItemSlotType.LHELD.ordinal()); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int primary1 = this.statDexCurrent; |
|
|
|
|
|
|
|
int secondary1 = this.statStrCurrent; |
|
|
|
|
|
|
|
int primary2 = this.statDexCurrent; |
|
|
|
|
|
|
|
int secondary2 = this.statStrCurrent; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if(equippedRight != null){ |
|
|
|
|
|
|
|
baseDMG1 = equippedRight.getItemBase().getMinDamage(); |
|
|
|
|
|
|
|
weaponSkill1 = this.skills.get(equippedRight.getItemBase().getSkillRequired()).getTotalSkillPercet(); |
|
|
|
|
|
|
|
weaponMastery1 = this.skills.get(equippedRight.getItemBase().getMastery()).getTotalSkillPercet(); |
|
|
|
|
|
|
|
if(equippedRight.getItemBase().isStrBased()) { |
|
|
|
|
|
|
|
primary1 = this.statStrCurrent; |
|
|
|
|
|
|
|
secondary1 = this.statDexCurrent; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
if(equippedLeft != null){ |
|
|
|
|
|
|
|
baseDMG2 = equippedLeft.getItemBase().getMinDamage(); |
|
|
|
|
|
|
|
weaponSkill2 = this.skills.get(equippedLeft.getItemBase().getSkillRequired()).getTotalSkillPercet(); |
|
|
|
|
|
|
|
weaponMastery2 = this.skills.get(equippedLeft.getItemBase().getMastery()).getTotalSkillPercet(); |
|
|
|
|
|
|
|
if(equippedLeft.getItemBase().isStrBased()) { |
|
|
|
|
|
|
|
primary2 = this.statStrCurrent; |
|
|
|
|
|
|
|
secondary2 = this.statDexCurrent; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
double primaryComponent1 = 0.0048 * primary1 + 0.049 * Math.sqrt(primary1 - 0.75); |
|
|
|
|
|
|
|
double secondaryComponent1 = 0.0066 * secondary1 + 0.064 * Math.sqrt(secondary1 - 0.75); |
|
|
|
|
|
|
|
double skillComponent1 = 0.01 * (weaponSkill1 + weaponMastery1); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int min1 = (int)(baseDMG1 * (primaryComponent1 + secondaryComponent1 + skillComponent1)); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
double primaryComponent2 = 0.0048 * primary2 + 0.049 * Math.sqrt(primary2 - 0.75); |
|
|
|
|
|
|
|
double secondaryComponent2 = 0.0066 * secondary2 + 0.064 * Math.sqrt(secondary2 - 0.75); |
|
|
|
|
|
|
|
double skillComponent2 = 0.01 * (weaponSkill2 + weaponMastery2); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int min2 = (int)(baseDMG2 * (primaryComponent2 + secondaryComponent2 + skillComponent2)); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
this.minDamageHandOne = min1; |
|
|
|
|
|
|
|
this.minDamageHandTwo = min2; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
public void calculateMaxDamage() { |
|
|
|
|
|
|
|
int baseDMG1 = 1; |
|
|
|
|
|
|
|
int baseDMG2 = 1; |
|
|
|
|
|
|
|
int weaponSkill1 = this.skills.get("Unarmed Combat").getTotalSkillPercet(); |
|
|
|
|
|
|
|
int weaponSkill2 = this.skills.get("Unarmed Combat").getTotalSkillPercet(); |
|
|
|
|
|
|
|
int weaponMastery1 = this.skills.get("Unarmed Combat Mastery").getTotalSkillPercet(); |
|
|
|
|
|
|
|
int weaponMastery2 = this.skills.get("Unarmed Combat Mastery").getTotalSkillPercet(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Item equippedRight = this.charItemManager.getItemFromEquipped(ItemSlotType.RHELD.ordinal()); |
|
|
|
|
|
|
|
Item equippedLeft = this.charItemManager.getItemFromEquipped(ItemSlotType.LHELD.ordinal()); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int primary1 = this.statDexCurrent; |
|
|
|
|
|
|
|
int secondary1 = this.statStrCurrent; |
|
|
|
|
|
|
|
int primary2 = this.statDexCurrent; |
|
|
|
|
|
|
|
int secondary2 = this.statStrCurrent; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (equippedRight != null) { |
|
|
|
|
|
|
|
baseDMG1 = equippedRight.getItemBase().getMaxDamage(); |
|
|
|
|
|
|
|
weaponSkill1 = this.skills.get(equippedRight.getItemBase().getSkillRequired()).getTotalSkillPercet(); |
|
|
|
|
|
|
|
weaponMastery1 = this.skills.get(equippedRight.getItemBase().getMastery()).getTotalSkillPercet(); |
|
|
|
|
|
|
|
if (equippedRight.getItemBase().isStrBased()) { |
|
|
|
|
|
|
|
primary1 = this.statStrCurrent; |
|
|
|
|
|
|
|
secondary1 = this.statDexCurrent; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (equippedLeft != null) { |
|
|
|
|
|
|
|
baseDMG2 = equippedLeft.getItemBase().getMaxDamage(); |
|
|
|
|
|
|
|
weaponSkill2 = this.skills.get(equippedLeft.getItemBase().getSkillRequired()).getTotalSkillPercet(); |
|
|
|
|
|
|
|
weaponMastery2 = this.skills.get(equippedLeft.getItemBase().getMastery()).getTotalSkillPercet(); |
|
|
|
|
|
|
|
if (equippedLeft.getItemBase().isStrBased()) { |
|
|
|
|
|
|
|
primary2 = this.statStrCurrent; |
|
|
|
|
|
|
|
secondary2 = this.statDexCurrent; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Calculate max damage for right hand weapon
|
|
|
|
|
|
|
|
double primaryComponent1 = 0.0124 * primary1 + 0.118 * Math.sqrt(primary1 - 0.75); |
|
|
|
|
|
|
|
double secondaryComponent1 = 0.0022 * secondary1 + 0.028 * Math.sqrt(secondary1 - 0.75); |
|
|
|
|
|
|
|
double skillComponent1 = 0.0075 * (weaponSkill1 + weaponMastery1); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int max1 = (int) (baseDMG1 * (primaryComponent1 + secondaryComponent1 + skillComponent1)); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Calculate max damage for left hand weapon
|
|
|
|
|
|
|
|
double primaryComponent2 = 0.0124 * primary2 + 0.118 * Math.sqrt(primary2 - 0.75); |
|
|
|
|
|
|
|
double secondaryComponent2 = 0.0022 * secondary2 + 0.028 * Math.sqrt(secondary2 - 0.75); |
|
|
|
|
|
|
|
double skillComponent2 = 0.0075 * (weaponSkill2 + weaponMastery2); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int max2 = (int) (baseDMG2 * (primaryComponent2 + secondaryComponent2 + skillComponent2)); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
this.maxDamageHandOne = max1; |
|
|
|
|
|
|
|
this.maxDamageHandTwo = max2; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
public void calculateSpeed(){ |
|
|
|
|
|
|
|
if(this.charItemManager == null){ |
|
|
|
|
|
|
|
this.speedHandOne = 20.0f; |
|
|
|
|
|
|
|
this.speedHandTwo = 20.0f; |
|
|
|
|
|
|
|
return; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ItemBase weaponBase1 = null; |
|
|
|
|
|
|
|
ItemBase weaponBase2 = null; |
|
|
|
|
|
|
|
if(this.charItemManager.getItemFromEquipped(ItemSlotType.RHELD.ordinal()) != null){ |
|
|
|
|
|
|
|
weaponBase1 = this.charItemManager.getItemFromEquipped(ItemSlotType.RHELD.ordinal()).getItemBase(); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
if(this.charItemManager.getItemFromEquipped(ItemSlotType.LHELD.ordinal()) != null){ |
|
|
|
|
|
|
|
weaponBase2 = this.charItemManager.getItemFromEquipped(ItemSlotType.LHELD.ordinal()).getItemBase(); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
float speed1; |
|
|
|
|
|
|
|
float speed2; |
|
|
|
|
|
|
|
if (weaponBase1 != null) |
|
|
|
|
|
|
|
speed1 = weaponBase1.getSpeed(); |
|
|
|
|
|
|
|
else |
|
|
|
|
|
|
|
speed1 = 20f; |
|
|
|
|
|
|
|
if (weaponBase2 != null) |
|
|
|
|
|
|
|
speed2 = weaponBase2.getSpeed(); |
|
|
|
|
|
|
|
else |
|
|
|
|
|
|
|
speed2 = 20f; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if(this.bonuses!= null){ |
|
|
|
|
|
|
|
for (AbstractEffectModifier mod : this.bonuses.bonusFloats.keySet()) { |
|
|
|
|
|
|
|
if (mod.modType.equals(ModType.AttackDelay) || mod.modType.equals(ModType.WeaponSpeed)) { |
|
|
|
|
|
|
|
float modValue = 1 + mod.getPercentMod() * 0.01f; |
|
|
|
|
|
|
|
speed1 *= modValue; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if(this.bonuses!= null){ |
|
|
|
|
|
|
|
for (AbstractEffectModifier mod : this.bonuses.bonusFloats.keySet()) { |
|
|
|
|
|
|
|
if (mod.modType.equals(ModType.AttackDelay) || mod.modType.equals(ModType.WeaponSpeed)) { |
|
|
|
|
|
|
|
float modValue = 1 + mod.getPercentMod() * 0.01f; |
|
|
|
|
|
|
|
speed2 *= modValue; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (speed1 < 10) |
|
|
|
|
|
|
|
speed1 = 10; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (speed2 < 10) |
|
|
|
|
|
|
|
speed2 = 10; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
this.speedHandOne = speed1; |
|
|
|
|
|
|
|
this.speedHandTwo= speed2; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* @ Calculates Atr, and Damage for each weapon |
|
|
|
* @ Calculates Atr, and Damage for each weapon |
|
|
|
*/ |
|
|
|
*/ |
|
|
@ -3864,9 +4085,6 @@ public class PlayerCharacter extends AbstractCharacter { |
|
|
|
float speed = 20f; |
|
|
|
float speed = 20f; |
|
|
|
boolean strBased = false; |
|
|
|
boolean strBased = false; |
|
|
|
|
|
|
|
|
|
|
|
ItemBase wbMain = (weapon != null) ? weapon.getItemBase() : null; |
|
|
|
|
|
|
|
ItemBase wbOff = (otherHand != null) ? otherHand.getItemBase() : null; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// get skill percentages and min and max damage for weapons
|
|
|
|
// get skill percentages and min and max damage for weapons
|
|
|
|
if (noWeapon) { |
|
|
|
if (noWeapon) { |
|
|
|
if (mainHand) { |
|
|
|
if (mainHand) { |
|
|
@ -3930,8 +4148,6 @@ public class PlayerCharacter extends AbstractCharacter { |
|
|
|
//(Primary Stat / 2) + (Weapon Skill * 4) + (Weapon Mastery * 3) + (ATR Enchantments) * 1.stance modifier
|
|
|
|
//(Primary Stat / 2) + (Weapon Skill * 4) + (Weapon Mastery * 3) + (ATR Enchantments) * 1.stance modifier
|
|
|
|
float atr = 0; |
|
|
|
float atr = 0; |
|
|
|
int primaryStat; |
|
|
|
int primaryStat; |
|
|
|
int dexMod = this.getDexMod(); |
|
|
|
|
|
|
|
int strMod = this.getStrMod(); |
|
|
|
|
|
|
|
if(weaponBase != null && weaponBase.isStrBased()){ |
|
|
|
if(weaponBase != null && weaponBase.isStrBased()){ |
|
|
|
primaryStat = this.statStrCurrent; |
|
|
|
primaryStat = this.statStrCurrent; |
|
|
|
}else{ |
|
|
|
}else{ |
|
|
@ -3953,6 +4169,7 @@ public class PlayerCharacter extends AbstractCharacter { |
|
|
|
float neg_Bonus = this.bonuses.getFloatPercentNegative(ModType.OCV, SourceType.None); |
|
|
|
float neg_Bonus = this.bonuses.getFloatPercentNegative(ModType.OCV, SourceType.None); |
|
|
|
|
|
|
|
|
|
|
|
atr *= (1 + neg_Bonus); |
|
|
|
atr *= (1 + neg_Bonus); |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
atr = (atr < 1) ? 1 : atr; |
|
|
|
atr = (atr < 1) ? 1 : atr; |
|
|
@ -4086,6 +4303,10 @@ public class PlayerCharacter extends AbstractCharacter { |
|
|
|
this.maxDamageHandTwo = (int) maxDamage; |
|
|
|
this.maxDamageHandTwo = (int) maxDamage; |
|
|
|
this.speedHandTwo = speed; |
|
|
|
this.speedHandTwo = speed; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
this.calculateATR(); |
|
|
|
|
|
|
|
this.calculateDamage(); |
|
|
|
|
|
|
|
this.calculateSpeed(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
@ -4107,9 +4328,15 @@ public class PlayerCharacter extends AbstractCharacter { |
|
|
|
float def = ab.getDefense(); |
|
|
|
float def = ab.getDefense(); |
|
|
|
//apply item defense bonuses
|
|
|
|
//apply item defense bonuses
|
|
|
|
if (shield != null) { |
|
|
|
if (shield != null) { |
|
|
|
def += shield.getBonus(ModType.DR, SourceType.None); |
|
|
|
//def += shield.getBonus(ModType.DR, SourceType.None);
|
|
|
|
def *= (1 + shield.getBonusPercent(ModType.DR, SourceType.None)); |
|
|
|
//def *= (1 + shield.getBonusPercent(ModType.DR, SourceType.None));
|
|
|
|
|
|
|
|
for(Effect eff : shield.effects.values()) { |
|
|
|
|
|
|
|
for (AbstractEffectModifier mod : eff.getEffectModifiers()) { |
|
|
|
|
|
|
|
if (mod.modType.equals(ModType.DR)) { |
|
|
|
|
|
|
|
def += mod.minMod * (1 + (eff.getTrains() * mod.getRamp())); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// float val = ((float)ab.getDefense()) * (1 + (skillMod / 100));
|
|
|
|
// float val = ((float)ab.getDefense()) * (1 + (skillMod / 100));
|
|
|
@ -4167,8 +4394,10 @@ public class PlayerCharacter extends AbstractCharacter { |
|
|
|
|
|
|
|
|
|
|
|
if (!ib.getType().equals(ItemType.ARMOR)) |
|
|
|
if (!ib.getType().equals(ItemType.ARMOR)) |
|
|
|
return 0; |
|
|
|
return 0; |
|
|
|
|
|
|
|
|
|
|
|
if (ib.getSkillRequired().isEmpty()) |
|
|
|
if (ib.getSkillRequired().isEmpty()) |
|
|
|
return ib.getDefense(); |
|
|
|
return ib.getDefense(); |
|
|
|
|
|
|
|
|
|
|
|
CharacterSkill armorSkill = this.skills.get(ib.getSkillRequired()); |
|
|
|
CharacterSkill armorSkill = this.skills.get(ib.getSkillRequired()); |
|
|
|
if (armorSkill == null) { |
|
|
|
if (armorSkill == null) { |
|
|
|
Logger.error("Player " + this.getObjectUUID() |
|
|
|
Logger.error("Player " + this.getObjectUUID() |
|
|
@ -4179,8 +4408,18 @@ public class PlayerCharacter extends AbstractCharacter { |
|
|
|
float def = ib.getDefense(); |
|
|
|
float def = ib.getDefense(); |
|
|
|
//apply item defense bonuses
|
|
|
|
//apply item defense bonuses
|
|
|
|
if (armor != null) { |
|
|
|
if (armor != null) { |
|
|
|
def += armor.getBonus(ModType.DR, SourceType.None); |
|
|
|
|
|
|
|
def *= (1 + armor.getBonusPercent(ModType.DR, SourceType.None)); |
|
|
|
for(Effect eff : armor.effects.values()){ |
|
|
|
|
|
|
|
for(AbstractEffectModifier mod : eff.getEffectModifiers()){ |
|
|
|
|
|
|
|
if(mod.modType.equals(ModType.DR)){ |
|
|
|
|
|
|
|
def += mod.minMod * (1+(eff.getTrains() * mod.getRamp())); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//def += armor.getBonus(ModType.DR, SourceType.None);
|
|
|
|
|
|
|
|
//def *= (1 + armor.getBonusPercent(ModType.DR, SourceType.None));
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|