diff --git a/forge-game/src/main/java/forge/game/card/CardProperty.java b/forge-game/src/main/java/forge/game/card/CardProperty.java index 2570a8a36ee..05b982e2b08 100644 --- a/forge-game/src/main/java/forge/game/card/CardProperty.java +++ b/forge-game/src/main/java/forge/game/card/CardProperty.java @@ -650,25 +650,15 @@ public class CardProperty { if (cards.isEmpty() || !card.equals(cards.get(0))) { return false; } - } else if (property.startsWith("TopLibraryLand")) { - CardCollection cards = CardLists.filter(card.getOwner().getCardsIn(ZoneType.Library), CardPredicates.Presets.LANDS); - if (cards.isEmpty() || !card.equals(cards.get(0))) { - return false; - } - } else if (property.startsWith("TopLibrary")) { - final CardCollectionView cards = card.getOwner().getCardsIn(ZoneType.Library); - if (cards.isEmpty() || !card.equals(cards.get(0))) { - return false; - } - } else if (property.startsWith("BottomLibrary")) { - CardCollection cards = new CardCollection(card.getOwner().getCardsIn(ZoneType.Library)); - if (property.startsWith("BottomLibrary_")) { - cards = CardLists.getValidCards(cards, property.substring(14), sourceController, source, spellAbility); - } - Collections.reverse(cards); - if (cards.isEmpty() || !card.equals(cards.get(0))) { - return false; + } else if (property.startsWith("TopLibrary") || property.startsWith("BottomLibrary")) { + CardCollection cards = (CardCollection) card.getOwner().getCardsIn(ZoneType.Library); + if (!property.equals("TopLibrary")) { + if (property.equals("TopLibraryLand")) cards = CardLists.filter(cards, Presets.LANDS); + else if (property.contains("_")) cards = CardLists.getValidCards(cards, property.split("_")[1], + sourceController, source, spellAbility); + if (property.startsWith("Bottom")) Collections.reverse(cards); } + if (cards.isEmpty() || !card.equals(cards.get(0))) return false; } else if (property.startsWith("Cloned")) { if (card.getCloneOrigin() == null || !card.getCloneOrigin().equals(source)) { return false; diff --git a/forge-gui/res/cardsfolder/i/improvising_aerialist.txt b/forge-gui/res/cardsfolder/i/improvising_aerialist.txt new file mode 100644 index 00000000000..56117666c89 --- /dev/null +++ b/forge-gui/res/cardsfolder/i/improvising_aerialist.txt @@ -0,0 +1,7 @@ +Name:Improvising Aerialist +ManaCost:1 W +Types:Creature Human Survivor +PT:3/2 +T:Mode$ Phase | Phase$ Main | PhaseCount$ 2 | ValidPlayer$ You | PresentDefined$ Self | IsPresent$ Card.tapped | Execute$ TrigPerpetual | TriggerDescription$ Survival — At the beginning of your second main phase, if CARDNAME is tapped, CARDNAME and the top creature card in your library without flying perpetually gain flying. +SVar:TrigPerpetual:DB$ Pump | PumpZone$ Battlefield,Library | Defined$ Self & ValidLibrary Creature.YouOwn+TopLibrary_Creature.withoutFlying | KW$ Flying | Duration$ Perpetual +Oracle:Survival — At the beginning of your second main phase, if Improvising Aerialist is tapped, Improvising Aerialist and the top creature card in your library without flying perpetually gain flying.