mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-17 03:08:02 +00:00
- Added Fossil Find and Search for Survivors
This commit is contained in:
3
.gitattributes
vendored
3
.gitattributes
vendored
@@ -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
|
||||||
|
|||||||
8
res/cardsfolder/f/fossil_find.txt
Normal file
8
res/cardsfolder/f/fossil_find.txt
Normal 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.
|
||||||
12
res/cardsfolder/s/search_for_survivors.txt
Normal file
12
res/cardsfolder/s/search_for_survivors.txt
Normal 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.
|
||||||
@@ -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),
|
||||||
|
|||||||
@@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user