From 8826a8a5434235bee4be9388ae8745eaf510a9c1 Mon Sep 17 00:00:00 2001 From: Daniel Bomar Date: Sun, 23 May 2021 21:14:13 -0500 Subject: [PATCH] Fixed Killian, Ink Duelist's cost reduction not applying for getPlayable (#7786) * Fixed Killian, Ink Duelist's cost reduction not applying for getPlayable --- .../src/mage/cards/k/KillianInkDuelist.java | 27 +++++++++++++------ 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/Mage.Sets/src/mage/cards/k/KillianInkDuelist.java b/Mage.Sets/src/mage/cards/k/KillianInkDuelist.java index ae4c83cc381..81594d61278 100644 --- a/Mage.Sets/src/mage/cards/k/KillianInkDuelist.java +++ b/Mage.Sets/src/mage/cards/k/KillianInkDuelist.java @@ -69,19 +69,30 @@ class KillianInkDuelistEffect extends CostModificationEffectImpl { @Override public boolean apply(Game game, Ability source, Ability abilityToModify) { - CardUtil.reduceCost(abilityToModify, 2); + // Bug #7762: https://github.com/magefree/mage/issues/7762 + // Check possible targets for getPlayable + if (game.inCheckPlayableState()) { + if (CardUtil.getAllPossibleTargets(abilityToModify, game) + .stream() + .map(game::getPermanent) + .filter(Objects::nonNull) + .anyMatch(MageObject::isCreature)) { + CardUtil.reduceCost(abilityToModify, 2); + } + // Check selected targets on actual cast + } else if (CardUtil.getAllSelectedTargets(abilityToModify, game) + .stream() + .map(game::getPermanent) + .filter(Objects::nonNull) + .anyMatch(MageObject::isCreature)) { + CardUtil.reduceCost(abilityToModify, 2); + } return true; } @Override public boolean applies(Ability abilityToModify, Ability source, Game game) { return abilityToModify instanceof SpellAbility - && abilityToModify.isControlledBy(source.getControllerId()) - && CardUtil - .getAllSelectedTargets(abilityToModify, game) - .stream() - .map(game::getPermanent) - .filter(Objects::nonNull) - .anyMatch(MageObject::isCreature); + && abilityToModify.isControlledBy(source.getControllerId()); } }