diff --git a/Mage.Sets/src/mage/cards/k/KayaSpiritsJustice.java b/Mage.Sets/src/mage/cards/k/KayaSpiritsJustice.java index debe3b350b8c..8a64e8afdb66 100644 --- a/Mage.Sets/src/mage/cards/k/KayaSpiritsJustice.java +++ b/Mage.Sets/src/mage/cards/k/KayaSpiritsJustice.java @@ -118,7 +118,7 @@ public Stream filterBatchEvent(GameEvent event, Game game) { .map(game::getCard) .filter(card -> { Permanent permanent = game.getPermanentOrLKIBattlefield(card.getId()); - return StaticFilters.FILTER_PERMANENT_CREATURE + return StaticFilters.FILTER_CONTROLLED_CREATURE .match(permanent, getControllerId(), this, game); }) .isPresent() @@ -134,22 +134,24 @@ public Stream filterBatchEvent(GameEvent event, Game game) { .of(e) .map(ZoneChangeEvent::getTargetId) .map(game::getCard) + .filter(card -> card.getOwnerId().equals(getControllerId())) // indirect test for "from your graveyard" .filter(card -> StaticFilters.FILTER_CARD_CREATURE.match(card, getControllerId(), this, game)) .isPresent() ); - + return Stream.concat(filteredBattlefield, filteredGraveyard); } @Override public boolean checkTrigger(GameEvent event, Game game) { - Stream filteredEvents = filterBatchEvent(event, game); - if (!filteredEvents.findAny().isPresent()) { + List filteredEvents = filterBatchEvent(event, game).collect(Collectors.toList()); + if (filteredEvents.isEmpty()) { return false; } // From Battlefield Set battlefieldCards = filteredEvents + .stream() .filter(e -> e.getFromZone() == Zone.BATTLEFIELD) .filter(e -> e.getToZone() == Zone.EXILED) .map(ZoneChangeEvent::getTargetId) @@ -165,6 +167,7 @@ public boolean checkTrigger(GameEvent event, Game game) { // From Graveyard Set graveyardCards = filteredEvents + .stream() .filter(e -> e.getFromZone() == Zone.GRAVEYARD) .filter(e -> e.getToZone() == Zone.EXILED) .map(ZoneChangeEvent::getTargetId)