- Added Fossil Find and Search for Survivors

This commit is contained in:
swordshine
2013-06-08 11:22:30 +00:00
parent a9ac85d8fd
commit 5ebe3d1bac
7 changed files with 90 additions and 3 deletions

3
.gitattributes vendored
View File

@@ -3950,6 +3950,7 @@ res/cardsfolder/f/fortitude.txt svneol=native#text/plain
res/cardsfolder/f/fortress_crab.txt -text res/cardsfolder/f/fortress_crab.txt -text
res/cardsfolder/f/fortress_cyclops.txt -text res/cardsfolder/f/fortress_cyclops.txt -text
res/cardsfolder/f/fortune_thief.txt svneol=native#text/plain res/cardsfolder/f/fortune_thief.txt svneol=native#text/plain
res/cardsfolder/f/fossil_find.txt -text
res/cardsfolder/f/foster.txt -text res/cardsfolder/f/foster.txt -text
res/cardsfolder/f/foul_familiar.txt svneol=native#text/plain res/cardsfolder/f/foul_familiar.txt svneol=native#text/plain
res/cardsfolder/f/foul_imp.txt svneol=native#text/plain res/cardsfolder/f/foul_imp.txt svneol=native#text/plain
@@ -9443,6 +9444,7 @@ res/cardsfolder/s/seal_of_removal.txt svneol=native#text/plain
res/cardsfolder/s/seal_of_strength.txt svneol=native#text/plain res/cardsfolder/s/seal_of_strength.txt svneol=native#text/plain
res/cardsfolder/s/sealed_fate.txt svneol=native#text/plain res/cardsfolder/s/sealed_fate.txt svneol=native#text/plain
res/cardsfolder/s/seance.txt -text res/cardsfolder/s/seance.txt -text
res/cardsfolder/s/search_for_survivors.txt -text
res/cardsfolder/s/search_for_tomorrow.txt svneol=native#text/plain res/cardsfolder/s/search_for_tomorrow.txt svneol=native#text/plain
res/cardsfolder/s/search_the_city.txt -text res/cardsfolder/s/search_the_city.txt -text
res/cardsfolder/s/search_warrant.txt -text res/cardsfolder/s/search_warrant.txt -text
@@ -14151,6 +14153,7 @@ src/main/java/forge/card/ability/effects/RearrangeTopOfLibraryEffect.java -text
src/main/java/forge/card/ability/effects/RegenerateAllEffect.java -text src/main/java/forge/card/ability/effects/RegenerateAllEffect.java -text
src/main/java/forge/card/ability/effects/RegenerateEffect.java -text src/main/java/forge/card/ability/effects/RegenerateEffect.java -text
src/main/java/forge/card/ability/effects/RemoveFromCombatEffect.java -text src/main/java/forge/card/ability/effects/RemoveFromCombatEffect.java -text
src/main/java/forge/card/ability/effects/ReorderZoneEffect.java -text
src/main/java/forge/card/ability/effects/RepeatEachEffect.java -text src/main/java/forge/card/ability/effects/RepeatEachEffect.java -text
src/main/java/forge/card/ability/effects/RepeatEffect.java -text src/main/java/forge/card/ability/effects/RepeatEffect.java -text
src/main/java/forge/card/ability/effects/RestartGameEffect.java -text src/main/java/forge/card/ability/effects/RestartGameEffect.java -text

View File

@@ -0,0 +1,8 @@
Name:Fossil Find
ManaCost:RG
Types:Sorcery
A:SP$ ChooseCard | Cost$ RG | Choices$ Card.YouOwn | ChoiceZone$ Graveyard | AtRandom$ True | Amount$ 1 | SubAbility$ DBReturn | SpellDescription$ Return a card at random from your graveyard to your hand, then reorder your graveyard as you choose.
SVar:DBReturn:DB$ ChangeZone | Origin$ Graveyard | Destination$ Hand | Defined$ ChosenCard | SubAbility$ DBReorder
SVar:DBReorder:DB$ ReorderZone | Zone$ Graveyard | Defined$ You
SVar:Picture:http://www.wizards.com/global/images/magic/general/fossil_find.jpg
Oracle:Return a card at random from your graveyard to your hand, then reorder your graveyard as you choose.

View File

@@ -0,0 +1,12 @@
Name:Search for Survivors
ManaCost:2 R
Types:Sorcery
A:SP$ ReorderZone | Cost$ 2 R | Zone$ Graveyard | Defined$ You | Random$ True | SubAbility$ DBChoose | SpellDescription$ Reorder your graveyard at random. An opponent chooses a card at random in your graveyard. If it's a creature card, put it onto the battlefield. Otherwise, exile it.
SVar:DBChoose:DB$ ChooseCard | Defined$ Opponent | Choices$ Card.YouOwn | ChoiceZone$ Graveyard | AtRandom$ True | Amount$ 1 | SubAbility$ DBReturn
SVar:DBReturn:DB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | ConditionDefined$ ChosenCard | ConditionPresent$ Card.Creature | ConditionCompare$ GE1 | Defined$ ChosenCard | SubAbility$ DBExile
SVar:DBExile:DB$ ChangeZone | Origin$ Graveyard | Destination$ Exile | ConditionDefined$ ChosenCard | ConditionPresent$ Card.Creature | ConditionCompare$ EQ0 | Defined$ ChosenCard
SVar:X:Count$ValidGraveyard Creature.YouCtrl
SVar:NeedsToPlayVar:X GE2
SVar:RemAIDeck:True
SVar:Picture:http://www.wizards.com/global/images/magic/general/search_for_survivors.jpg
Oracle:Reorder your graveyard at random. An opponent chooses a card at random in your graveyard. If it's a creature card, put it onto the battlefield. Otherwise, exile it.

View File

@@ -190,6 +190,7 @@ public enum ApiType {
RemoveCounter (CountersRemoveEffect.class, CountersRemoveAi.class), RemoveCounter (CountersRemoveEffect.class, CountersRemoveAi.class),
RemoveCounterAll (CountersRemoveAllEffect.class, CannotPlayAi.class), RemoveCounterAll (CountersRemoveAllEffect.class, CannotPlayAi.class),
RemoveFromCombat (RemoveFromCombatEffect.class, RemoveFromCombatAi.class), RemoveFromCombat (RemoveFromCombatEffect.class, RemoveFromCombatAi.class),
ReorderZone (ReorderZoneEffect.class, AlwaysPlayAi.class),
Repeat (RepeatEffect.class, RepeatAi.class), Repeat (RepeatEffect.class, RepeatAi.class),
RepeatEach (RepeatEachEffect.class, RepeatEachAi.class), RepeatEach (RepeatEachEffect.class, RepeatEachAi.class),
RestartGame (RestartGameEffect.class, RestartGameAi.class), RestartGame (RestartGameEffect.class, RestartGameAi.class),

View File

@@ -0,0 +1,63 @@
package forge.card.ability.effects;
import java.util.Collections;
import java.util.List;
import java.util.Random;
import com.google.common.collect.Lists;
import forge.Card;
import forge.card.ability.SpellAbilityEffect;
import forge.card.spellability.SpellAbility;
import forge.card.spellability.Target;
import forge.game.player.Player;
import forge.game.zone.ZoneType;
import forge.util.Lang;
import forge.util.MyRandom;
public class ReorderZoneEffect extends SpellAbilityEffect {
/* (non-Javadoc)
* @see forge.card.abilityfactory.SpellEffect#resolve(java.util.Map, forge.card.spellability.SpellAbility)
*/
@Override
protected String getStackDescription(SpellAbility sa) {
final ZoneType zone = ZoneType.smartValueOf(sa.getParam("Zone"));
final List<Player> tgtPlayers = getTargetPlayers(sa);
boolean shuffle = sa.hasParam("Random");
return "Reorder " + Lang.joinHomogenous(tgtPlayers)+ " " + zone.toString() + " " + (shuffle ? "at random." : "as your choose.");
}
/**
* <p>
* reorderZoneResolve.
* </p>
* @param sa
* a {@link forge.card.spellability.SpellAbility} object.
* @param af
* a {@link forge.card.ability.AbilityFactory} object.
*/
@Override
public void resolve(SpellAbility sa) {
final ZoneType zone = ZoneType.smartValueOf(sa.getParam("Zone"));
boolean shuffle = sa.hasParam("Random");
final Target tgt = sa.getTarget();
for (final Player p : getTargetPlayers(sa)) {
if ((tgt == null) || p.canBeTargetedBy(sa)) {
List<Card> list = Lists.newArrayList(p.getCardsIn(zone));
if (shuffle) {
final Random ran = MyRandom.getRandom();
Collections.shuffle(list, ran);
p.getZone(zone).setCards(list);
} else {
p.getController().orderMoveToZoneList(list, zone);
}
}
}
}
}

View File

@@ -65,7 +65,7 @@ public class CostPutCardToLib extends CostPartWithList {
} }
/** /**
* Instantiates a new cost exile. * Instantiates a new cost CostPutCardToLib.
* *
* @param amount * @param amount
* the amount * the amount
@@ -251,7 +251,7 @@ public class CostPutCardToLib extends CostPartWithList {
} }
/** /**
* TODO: Write javadoc for this method. * PutFromMiscZone
* @param sa * @param sa
* @param nNeeded * @param nNeeded
* @param typeList * @param typeList

View File

@@ -367,7 +367,7 @@ public class PlayerControllerHuman extends PlayerController {
} else if (destinationZone == ZoneType.Battlefield) { } else if (destinationZone == ZoneType.Battlefield) {
return GuiChoose.order("Choose order of cards to put onto the battlefield", "Put first", 0, cards, null, null); return GuiChoose.order("Choose order of cards to put onto the battlefield", "Put first", 0, cards, null, null);
} else if (destinationZone == ZoneType.Graveyard) { } else if (destinationZone == ZoneType.Graveyard) {
return GuiChoose.order("Choose order of cards to put into the graveyard", "Closest to top", 0, cards, null, null); return GuiChoose.order("Choose order of cards to put into the graveyard", "Closest to bottom", 0, cards, null, null);
} }
return cards; return cards;
} }