diff --git a/.gitattributes b/.gitattributes index 8f54b1e1898..8b228c6117d 100644 --- a/.gitattributes +++ b/.gitattributes @@ -6542,6 +6542,7 @@ res/cardsfolder/s/secluded_glen.txt svneol=native#text/plain res/cardsfolder/s/secluded_steppe.txt svneol=native#text/plain res/cardsfolder/s/second_chance.txt svneol=native#text/plain res/cardsfolder/s/second_sight.txt svneol=native#text/plain +res/cardsfolder/s/second_sunrise.txt -text res/cardsfolder/s/second_thoughts.txt svneol=native#text/plain res/cardsfolder/s/second_wind.txt svneol=native#text/plain res/cardsfolder/s/security_detail.txt svneol=native#text/plain diff --git a/res/cardsfolder/s/second_sunrise.txt b/res/cardsfolder/s/second_sunrise.txt new file mode 100644 index 00000000000..a7cb27ea699 --- /dev/null +++ b/res/cardsfolder/s/second_sunrise.txt @@ -0,0 +1,7 @@ +Name:Second Sunrise +ManaCost:1 W W +Types:Instant +Text:no text +A:SP$ChangeZone | Cost$ 1 W W | Origin$ Graveyard | Destination$ Battlefield | Defined$ ThisTurnEntered Graveyard from Battlefield Card.Artifact,Card.Creature,Card.Enchantment,Card.Land | SpellDescription$ Each player returns to the battlefield all artifact, creature, enchantment, and land cards in his or her graveyard that were put there from the battlefield this turn. +SetInfo:MRD|Rare|http://magiccards.info/scans/en/mi/20.jpg +End \ No newline at end of file diff --git a/src/main/java/forge/CardUtil.java b/src/main/java/forge/CardUtil.java index b7bee3a3a2a..04428a05c71 100644 --- a/src/main/java/forge/CardUtil.java +++ b/src/main/java/forge/CardUtil.java @@ -636,4 +636,32 @@ public final class CardUtil { return result; } + + public static CardList getThisTurnEntered(final String to, final String from, final String valid,final Card src) + { + CardList res = new CardList(); + if(to != Constant.Zone.Stack) + { + res.addAll(((DefaultPlayerZone)AllZone.getZone(to, AllZone.getComputerPlayer())).getCardsAddedThisTurn(from)); + res.addAll(((DefaultPlayerZone)AllZone.getZone(to, AllZone.getHumanPlayer())).getCardsAddedThisTurn(from)); + } + else + { + res.addAll(((DefaultPlayerZone)AllZone.getZone(to,null)).getCardsAddedThisTurn(from)); + } + + res = res.filter(new CardListFilter() { + public boolean addCard(Card c) + { + if(c.isValidCard(valid.split(","), src.getController(), src)) + { + return true; + } + + return false; + } + }); + + return res; + } } diff --git a/src/main/java/forge/card/abilityFactory/AbilityFactory.java b/src/main/java/forge/card/abilityFactory/AbilityFactory.java index 400650c8269..2120b5888f3 100644 --- a/src/main/java/forge/card/abilityFactory/AbilityFactory.java +++ b/src/main/java/forge/card/abilityFactory/AbilityFactory.java @@ -1200,7 +1200,24 @@ public class AbilityFactory { for (Card imprint : hostCard.getImprinted()) { cards.add(AllZoneUtil.getCardState(imprint)); } - } else { + } else if(defined.startsWith("ThisTurnEntered")) { + String[] workingCopy = defined.split(" "); + String destination, origin, validFilter; + + destination = workingCopy[1]; + if (workingCopy[2].equals("from")) { + origin = workingCopy[3]; + validFilter = workingCopy[4]; + } else { + origin = "Any"; + validFilter = workingCopy[2]; + } + for(Card cl : CardUtil.getThisTurnEntered(destination, origin, validFilter, hostCard)) + { + cards.add(cl); + } + } + else { CardList list = null; if (defined.startsWith("Sacrificed")) list = findRootAbility(sa).getPaidList("Sacrificed"); diff --git a/src/main/java/forge/card/cardFactory/CardFactoryUtil.java b/src/main/java/forge/card/cardFactory/CardFactoryUtil.java index e85b5a0458f..bd0aedc21e9 100644 --- a/src/main/java/forge/card/cardFactory/CardFactoryUtil.java +++ b/src/main/java/forge/card/cardFactory/CardFactoryUtil.java @@ -2946,19 +2946,8 @@ public class CardFactoryUtil { origin = "Any"; validFilter = workingCopy[2]; } - - final String[] valid = validFilter.split(","); - final Card csource = c; - CardList res = ((DefaultPlayerZone) AllZone.getZone(destination, AllZone.getHumanPlayer())) - .getCardsAddedThisTurn(origin); - res.addAll(((DefaultPlayerZone) AllZone.getZone(destination, AllZone.getComputerPlayer())) - .getCardsAddedThisTurn(origin)); - - res = res.filter(new CardListFilter() { - public boolean addCard(Card csubject) { - return csubject.isValidCard(valid, csource.getController(), csource); - } - }); + + CardList res = CardUtil.getThisTurnEntered(destination, origin, validFilter, c); return doXMath(res.size(), m, c); }