Browse Source

fortitudes handled last

lakebane
FatBoy-DOTC 2 weeks ago
parent
commit
beeca529cd
  1. 28
      src/engine/gameManager/CombatManager.java
  2. 5
      src/engine/mobileAI/utilities/CombatUtilities.java
  3. 13
      src/engine/objects/Resists.java
  4. 5
      src/engine/powers/effectmodifiers/HealthEffectModifier.java

28
src/engine/gameManager/CombatManager.java

@ -850,6 +850,22 @@ public enum CombatManager { @@ -850,6 +850,22 @@ public enum CombatManager {
else
damage = calculateDamage(ac, tarAc, minDamage, maxDamage, damageType, resists);
if(weapon != null && weapon.effects != null){
float armorPierce = 0;
for(Effect eff : weapon.effects.values()){
for(AbstractEffectModifier mod : eff.getEffectModifiers()){
if(mod.modType.equals(ModType.ArmorPiercing)){
armorPierce += mod.minMod * (mod.getRamp() * eff.getTrains());
}
}
}
if(armorPierce > 0){
damage *= 1 - armorPierce;
}
}
Resists.handleFortitude(tarAc,damageType,damage);
float d = 0f;
errorTrack = 12;
@ -1055,10 +1071,12 @@ public enum CombatManager { @@ -1055,10 +1071,12 @@ public enum CombatManager {
//calculate resists in if any
if (resists != null)
return resists.getResistedDamage(source, target, damageType, damage, 0);
else
return damage;
damage = resists.getResistedDamage(source, target, damageType, damage, 0);
return damage;
}
private static void sendPassiveDefenseMessage(AbstractCharacter source, ItemBase wb, AbstractWorldObject target, int passiveType, DeferredPowerJob dpj, boolean mainHand) {
@ -1400,9 +1418,9 @@ public enum CombatManager { @@ -1400,9 +1418,9 @@ public enum CombatManager {
Resists resists = ac.getResists();
if (resists != null)
if (resists != null) {
amount = resists.getResistedDamage(target, ac, ds.getDamageType(), amount, 0);
}
total += amount;
}

5
src/engine/mobileAI/utilities/CombatUtilities.java

@ -101,9 +101,10 @@ public class CombatUtilities { @@ -101,9 +101,10 @@ public class CombatUtilities {
if (!target.isAlive())
return;
if (AbstractWorldObject.IsAbstractCharacter(target))
if (AbstractWorldObject.IsAbstractCharacter(target)) {
damage = Resists.handleFortitude((AbstractCharacter) target,DamageType.Crush,damage);
trueDamage = ((AbstractCharacter) target).modifyHealth(-damage, agent, false);
else if (target.getObjectType() == GameObjectType.Building)
}else if (target.getObjectType() == GameObjectType.Building)
trueDamage = ((Building) target).modifyHealth(-damage, agent);
//Don't send 0 damage kay thanx.

13
src/engine/objects/Resists.java

@ -125,7 +125,7 @@ public class Resists { @@ -125,7 +125,7 @@ public class Resists {
}
//Handle Fortitudes
private static float handleFortitude(AbstractCharacter target, DamageType type, float damage) {
public static float handleFortitude(AbstractCharacter target, DamageType type, float damage) {
if (target == null || !(target.getObjectType().equals(Enum.GameObjectType.PlayerCharacter)))
return damage;
PlayerBonuses bonus = target.getBonuses();
@ -456,10 +456,11 @@ public class Resists { @@ -456,10 +456,11 @@ public class Resists {
//handle fortitudes
//damage = handleFortitude(target, type, damage);
//calculate armor piercing
float ap = source.getBonuses().getFloatPercentAll(ModType.ArmorPiercing, SourceType.None);
float damageAfterResists = damage;
if(type.equals(DamageType.Pierce) || type.equals(DamageType.Crush) || type.equals(DamageType.Slash))
damageAfterResists = damage * (1 - (this.getResist(type, trains) * 0.01f) + ap);
//float ap = 0;
//if(type.equals(DamageType.Pierce) || type.equals(DamageType.Crush) || type.equals(DamageType.Slash))
//source.getBonuses().getFloatPercentAll(ModType.ArmorPiercing, SourceType.None);
float damageAfterResists = damage * (1 - (this.getResist(type, trains) * 0.01f));
//check to see if any damage absorbers should cancel
if (target != null) {
//debug damage shields if any found
@ -479,7 +480,7 @@ public class Resists { @@ -479,7 +480,7 @@ public class Resists {
}
target.cancelOnTakeDamage(type, (damageAfterResists));
}
damageAfterResists = handleFortitude(target, type, damageAfterResists);
//damageAfterResists = handleFortitude(target, type, damageAfterResists);
return damageAfterResists;
}

5
src/engine/powers/effectmodifiers/HealthEffectModifier.java

@ -303,9 +303,10 @@ public class HealthEffectModifier extends AbstractEffectModifier { @@ -303,9 +303,10 @@ public class HealthEffectModifier extends AbstractEffectModifier {
// calculate resists in if any
if (resists != null) {
if (AbstractWorldObject.IsAbstractCharacter(awo))
if (AbstractWorldObject.IsAbstractCharacter(awo)) {
damage = Resists.handleFortitude((AbstractCharacter) awo, damageType, damage * -1);
damage = resists.getResistedDamage(source, (AbstractCharacter) awo, damageType, damage * -1, trains) * -1;
else
}else
damage = resists.getResistedDamage(source, null, damageType, damage * -1, trains) * -1;
}

Loading…
Cancel
Save