fortitudes handled last

This commit is contained in:
2025-01-27 15:55:40 -06:00
parent ebb765ae82
commit beeca529cd
4 changed files with 36 additions and 15 deletions
+23 -5
View File
@@ -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 {
//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 {
Resists resists = ac.getResists();
if (resists != null)
if (resists != null) {
amount = resists.getResistedDamage(target, ac, ds.getDamageType(), amount, 0);
}
total += amount;
}
@@ -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.
+7 -6
View File
@@ -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 {
//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 {
}
target.cancelOnTakeDamage(type, (damageAfterResists));
}
damageAfterResists = handleFortitude(target, type, damageAfterResists);
//damageAfterResists = handleFortitude(target, type, damageAfterResists);
return damageAfterResists;
}
@@ -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;
}