diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/Char.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/Char.java index 280b72fe8..c7620bb3f 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/Char.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/Char.java @@ -690,10 +690,6 @@ public abstract class Char extends Actor { return; } - for (ChampionEnemy buff : buffs(ChampionEnemy.class)){ - dmg = (int) Math.ceil(dmg * buff.damageTakenFactor()); - } - if (!(src instanceof LifeLink) && buff(LifeLink.class) != null){ HashSet links = buffs(LifeLink.class); for (LifeLink link : links.toArray(new LifeLink[0])){ @@ -738,19 +734,6 @@ public abstract class Char extends Actor { if (alignment != Alignment.ALLY && this.buff(DeathMark.DeathMarkTracker.class) != null){ dmg *= 1.25f; } - - Class srcClass = src.getClass(); - if (isImmune( srcClass )) { - dmg = 0; - } else { - dmg = Math.round( dmg * resist( srcClass )); - } - - //TODO improve this when I have proper damage source logic - if (AntiMagic.RESISTS.contains(src.getClass()) && buff(ArcaneArmor.class) != null){ - dmg -= combatRoll(0, buff(ArcaneArmor.class).level()); - if (dmg < 0) dmg = 0; - } if (buff(Sickle.HarvestBleedTracker.class) != null){ if (isImmune(Bleeding.class)){ @@ -770,6 +753,23 @@ public abstract class Char extends Actor { buff(Sickle.HarvestBleedTracker.class).detach(); return; } + + for (ChampionEnemy buff : buffs(ChampionEnemy.class)){ + dmg = (int) Math.ceil(dmg * buff.damageTakenFactor()); + } + + Class srcClass = src.getClass(); + if (isImmune( srcClass )) { + dmg = 0; + } else { + dmg = Math.round( dmg * resist( srcClass )); + } + + //TODO improve this when I have proper damage source logic + if (AntiMagic.RESISTS.contains(src.getClass()) && buff(ArcaneArmor.class) != null){ + dmg -= combatRoll(0, buff(ArcaneArmor.class).level()); + if (dmg < 0) dmg = 0; + } if (buff( Paralysis.class ) != null) { buff( Paralysis.class ).processDamage(dmg);