package stsjorbsmod.powers; import com.megacrit.cardcrawl.actions.AbstractGameAction.AttackEffect; import com.megacrit.cardcrawl.actions.common.DamageAllEnemiesAction; import com.megacrit.cardcrawl.actions.common.LoseHPAction; import com.megacrit.cardcrawl.actions.common.RemoveSpecificPowerAction; import com.megacrit.cardcrawl.cards.DamageInfo; import com.megacrit.cardcrawl.core.AbstractCreature; import com.megacrit.cardcrawl.dungeons.AbstractDungeon; import com.megacrit.cardcrawl.powers.AbstractPower; import stsjorbsmod.memories.OnModifyMemoriesSubscriber; import stsjorbsmod.memories.PatienceMemory; public class CoilPower extends CustomJorbsModPower implements OnModifyMemoriesSubscriber { public static final StaticPowerInfo STATIC = StaticPowerInfo.Load(CoilPower.class); public static final String POWER_ID = STATIC.ID; public static final int DAMAGE_PER_COIL = 1; public CoilPower(final AbstractCreature owner, final int amount) { super(STATIC); this.owner = owner; this.amount = amount; updateDescription(); } private int calculateDamage() { return amount * DAMAGE_PER_COIL; } @Override public void updateDescription() { description = String.format(DESCRIPTIONS[0], calculateDamage()); } private void consumeCoilForDamage() { this.flash(); if (!AbstractDungeon.getMonsters().areMonstersBasicallyDead()) { AbstractDungeon.actionManager.addToBottom( new DamageAllEnemiesAction(owner, DamageInfo.createDamageMatrix(calculateDamage(), true), DamageInfo.DamageType.THORNS, AttackEffect.SLASH_HORIZONTAL)); AbstractDungeon.actionManager.addToBottom( new RemoveSpecificPowerAction(owner, owner, CoilPower.POWER_ID)); } } @Override public void onRememberMemory(String id) { if (!PatienceMemory.STATIC.ID.equals(id)) { consumeCoilForDamage(); } } @Override public void atEndOfTurn(boolean isPlayer) { if (owner.hasPower(SnappedPower.POWER_ID)) { consumeCoilForDamage(); } } @Override public AbstractPower makeCopy() { return new CoilPower(owner, amount); } }