package stsjorbsmod.cards.wanderer; import com.megacrit.cardcrawl.actions.common.DiscardSpecificCardAction; import com.megacrit.cardcrawl.characters.AbstractPlayer; import com.megacrit.cardcrawl.dungeons.AbstractDungeon; import com.megacrit.cardcrawl.monsters.AbstractMonster; import com.megacrit.cardcrawl.vfx.combat.BlockedWordEffect; import stsjorbsmod.JorbsMod; import stsjorbsmod.cards.CustomJorbsModCard; import stsjorbsmod.cards.OnPlayerHpLossCardSubscriber; import stsjorbsmod.characters.Wanderer; public class MageArmor extends CustomJorbsModCard implements OnPlayerHpLossCardSubscriber { public static final String ID = JorbsMod.makeID(MageArmor.class); private static final CardRarity RARITY = CardRarity.UNCOMMON; private static final CardTarget TARGET = CardTarget.NONE; private static final CardType TYPE = CardType.SKILL; public static final CardColor COLOR = Wanderer.Enums.WANDERER_CARD_COLOR; private static final int COST = COST_UNPLAYABLE; private static final int DAMAGE_REDUCTION = 7; private static final int UPGRADE_PLUS_DAMAGE_REDUCTION = 2; public MageArmor() { super(ID, COST, TYPE, COLOR, RARITY, TARGET); selfRetain = true; magicNumber = baseMagicNumber = DAMAGE_REDUCTION; } @Override public void use(AbstractPlayer p, AbstractMonster m) { } public boolean canUse(AbstractPlayer p, AbstractMonster m) { this.cantUseMessage = EXTENDED_DESCRIPTION[0]; return false; } // Intended to prevent THORNS/HP_LOSS damage and to take effect after block @Override public int onPlayerHpLossWhileInHand(int hpLoss) { int newHpLoss = hpLoss - magicNumber; if (newHpLoss < 0) { newHpLoss = 0; } if (hpLoss - newHpLoss > 0) { AbstractPlayer p = AbstractDungeon.player; AbstractDungeon.effectList.add(new BlockedWordEffect(p, p.hb.cX, p.hb.cY, EXTENDED_DESCRIPTION[1])); // addToTop is to handle multi-attacks correctly addToTop(new DiscardSpecificCardAction(this)); } return newHpLoss; } @Override public void upgrade() { if (!upgraded) { upgradeName(); upgradeMagicNumber(UPGRADE_PLUS_DAMAGE_REDUCTION); upgradeDescription(); } } }