@Override public void damage( int dmg, Object src ) { if (buff(TimekeepersHourglass.timeStasis.class) != null) return; if (!(src instanceof Hunger || src instanceof Viscosity.DeferedDamage) && damageInterrupt) { interrupt(); resting = false; } if (this.buff(Drowsy.class) != null){ Buff.detach(this, Drowsy.class); GLog.w( Messages.get(this, "pain_resist") ); } CapeOfThorns.Thorns thorns = buff( CapeOfThorns.Thorns.class ); if (thorns != null) { dmg = thorns.proc(dmg, (src instanceof Char ? (Char)src : null), this); } dmg = (int)Math.ceil(dmg * RingOfTenacity.damageMultiplier( this )); //TODO improve this when I have proper damage source logic if (belongings.armor != null && belongings.armor.hasGlyph(AntiMagic.class, this) && AntiMagic.RESISTS.contains(src.getClass())){ dmg -= Random.NormalIntRange(belongings.armor.DRMin(), belongings.armor.DRMax())/3; } super.damage( dmg, src ); }
@Override public void damage( int dmg, Object src ) { if (buff(TimekeepersHourglass.timeStasis.class) != null) return; if (!(src instanceof Hunger || src instanceof Viscosity.DeferedDamage) && damageInterrupt) { interrupt(); resting = false; } if (this.buff(Drowsy.class) != null){ Buff.detach(this, Drowsy.class); GLog.w( Messages.get(this, "pain_resist") ); } CapeOfThorns.Thorns thorns = buff( CapeOfThorns.Thorns.class ); if (thorns != null) { dmg = thorns.proc(dmg, (src instanceof Char ? (Char)src : null), this); } dmg = (int)Math.ceil(dmg * RingOfTenacity.damageMultiplier( this )); //TODO improve this when I have proper damage source logic if (belongings.armor != null && belongings.armor.hasGlyph(AntiMagic.class, this) && AntiMagic.RESISTS.contains(src.getClass())){ dmg -= Random.NormalIntRange(belongings.armor.DRMin(), belongings.armor.DRMax())/3; } super.damage( dmg, src ); }
@Override protected ArtifactBuff passiveBuff() { return new Thorns(); }
@Override protected ArtifactBuff passiveBuff() { return new Thorns(); }
@Override public String desc() { return Messages.get(this, "desc", dispTurns(cooldown)); }
@Override public String desc() { return Messages.get(this, "desc", dispTurns(cooldown)); }
@Override public void charge(Hero target) { if (cooldown == 0) { charge += 4; updateQuickslot(); } if (charge >= chargeCap){ target.buff(Thorns.class).proc(0, null, null); } }
@Override public boolean act(){ if (cooldown > 0) { cooldown--; if (cooldown == 0) { BuffIndicator.refreshHero(); GLog.w( Messages.get(this, "inert") ); } updateQuickslot(); } spend(TICK); return true; }
@Override public void charge(Hero target) { if (cooldown == 0) { charge += 4; updateQuickslot(); } if (charge >= chargeCap){ target.buff(Thorns.class).proc(0, null, null); } }
@Override public boolean act(){ if (cooldown > 0) { cooldown--; if (cooldown == 0) { BuffIndicator.refreshHero(); GLog.w( Messages.get(this, "inert") ); } updateQuickslot(); } spend(TICK); return true; }