- AF ChangeZoneAll: when searching someone else's hand, reveal the cards in it first to the activator of the ability (since searching the zone involves seeing what's in it first).

This commit is contained in:
Agetian
2017-06-24 09:33:15 +00:00
parent 5086b21fda
commit 33a9638205

View File

@@ -1,5 +1,6 @@
package forge.game.ability.effects; package forge.game.ability.effects;
import com.google.common.base.Predicates;
import com.google.common.collect.Iterables; import com.google.common.collect.Iterables;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
@@ -76,12 +77,22 @@ public class ChangeZoneAllEffect extends SpellAbilityEffect {
if (!libCardsYouOwn.isEmpty()) { // Only searching one's own library would fire Archive Trap's altcost if (!libCardsYouOwn.isEmpty()) { // Only searching one's own library would fire Archive Trap's altcost
sa.getActivatingPlayer().incLibrarySearched(); sa.getActivatingPlayer().incLibrarySearched();
} }
sa.getActivatingPlayer().getController().reveal(libCards, ZoneType.Library, sa.getActivatingPlayer()); if (!libCards.isEmpty()) {
sa.getActivatingPlayer().getController().reveal(libCards, ZoneType.Library, libCards.get(0).getOwner());
}
final HashMap<String, Object> runParams = new HashMap<String, Object>(); final HashMap<String, Object> runParams = new HashMap<String, Object>();
runParams.put("Player", sa.getActivatingPlayer()); runParams.put("Player", sa.getActivatingPlayer());
runParams.put("Target", tgtPlayers); runParams.put("Target", tgtPlayers);
game.getTriggerHandler().runTrigger(TriggerType.SearchedLibrary, runParams, false); game.getTriggerHandler().runTrigger(TriggerType.SearchedLibrary, runParams, false);
} }
if (origin.contains(ZoneType.Hand) && sa.hasParam("Search")) {
CardCollection handCards = CardLists.filterControlledBy(CardLists.getValidCards(cards, "Card.inZoneHand", sa.getActivatingPlayer(), source),
sa.getActivatingPlayer().getOpponents());
if (!handCards.isEmpty()) {
sa.getActivatingPlayer().getController().reveal(handCards, ZoneType.Hand, handCards.get(0).getOwner());
}
}
cards = (CardCollection)AbilityUtils.filterListByType(cards, sa.getParam("ChangeType"), sa); cards = (CardCollection)AbilityUtils.filterListByType(cards, sa.getParam("ChangeType"), sa);
if (sa.hasParam("Optional")) { if (sa.hasParam("Optional")) {