v3.0.0: fixed smite dealing dmg to freshly corrupted enemies

This commit is contained in:
Evan Debenham
2025-01-29 13:51:34 -05:00
parent 24e2a37758
commit 89e2cfcd26

View File

@@ -118,21 +118,29 @@ abstract public class Weapon extends KindOfWeapon {
@Override @Override
public int proc( Char attacker, Char defender, int damage ) { public int proc( Char attacker, Char defender, int damage ) {
boolean becameAlly = false;
boolean wasAlly = defender.alignment == Char.Alignment.ALLY;
if (attacker.buff(MagicImmune.class) == null) { if (attacker.buff(MagicImmune.class) == null) {
if (attacker instanceof Hero && isEquipped((Hero) attacker) if (attacker instanceof Hero && isEquipped((Hero) attacker)
&& attacker.buff(HolyWeapon.HolyWepBuff.class) != null){ && attacker.buff(HolyWeapon.HolyWepBuff.class) != null){
if (((Hero) attacker).subClass == HeroSubClass.PALADIN && enchantment != null){ if (((Hero) attacker).subClass == HeroSubClass.PALADIN && enchantment != null){
damage = enchantment.proc(this, attacker, defender, damage); damage = enchantment.proc(this, attacker, defender, damage);
if (defender.alignment == Char.Alignment.ALLY && !wasAlly){
becameAlly = true;
}
} }
if (defender.isAlive()) { if (defender.isAlive() && !becameAlly) {
int dmg = ((Hero) attacker).subClass == HeroSubClass.PALADIN ? 6 : 2; int dmg = ((Hero) attacker).subClass == HeroSubClass.PALADIN ? 6 : 2;
defender.damage(Math.round(dmg * Enchantment.genericProcChanceMultiplier(attacker)), HolyWeapon.INSTANCE); defender.damage(Math.round(dmg * Enchantment.genericProcChanceMultiplier(attacker)), HolyWeapon.INSTANCE);
} }
} else if (enchantment != null) { } else if (enchantment != null) {
damage = enchantment.proc(this, attacker, defender, damage); damage = enchantment.proc(this, attacker, defender, damage);
if (defender.alignment == Char.Alignment.ALLY && !wasAlly){
becameAlly = true;
}
} }
if (attacker instanceof Hero && isEquipped((Hero) attacker) && if (attacker instanceof Hero && isEquipped((Hero) attacker) &&
attacker.buff(Smite.SmiteTracker.class) != null){ attacker.buff(Smite.SmiteTracker.class) != null && !becameAlly){
defender.damage(Smite.bonusDmg((Hero) attacker, defender), Smite.INSTANCE); defender.damage(Smite.bonusDmg((Hero) attacker, defender), Smite.INSTANCE);
} }
} }