add the ability to Discard a Defined card.

This commit is contained in:
slapshot5
2011-11-06 17:18:46 +00:00
parent 0f9d8069ca
commit 3a2e694067
2 changed files with 24 additions and 1 deletions

View File

@@ -1364,9 +1364,11 @@ public abstract class Player extends GameEntity {
* a {@link forge.Card} object. * a {@link forge.Card} object.
* @param sa * @param sa
* a {@link forge.card.spellability.SpellAbility} object. * a {@link forge.card.spellability.SpellAbility} object.
* @return a {@link forge.CardList} object.
*/ */
public final void discard(final Card c, final SpellAbility sa) { public final CardList discard(final Card c, final SpellAbility sa) {
doDiscard(c, sa); doDiscard(c, sa);
return new CardList(c);
} }
/** /**

View File

@@ -519,6 +519,9 @@ public class AbilityFactoryZoneAffecting {
} }
} else { } else {
final CardList drawn = p.drawCards(numCards); final CardList drawn = p.drawCards(numCards);
if (params.containsKey("Reveal")) {
GuiUtils.getChoice("Revealing drawn cards", drawn.toArray());
}
if (params.containsKey("RememberDrawn")) { if (params.containsKey("RememberDrawn")) {
for (final Card c : drawn) { for (final Card c : drawn) {
source.addRemembered(c); source.addRemembered(c);
@@ -1077,6 +1080,7 @@ public class AbilityFactoryZoneAffecting {
*/ */
private static void discardResolve(final AbilityFactory af, final SpellAbility sa) { private static void discardResolve(final AbilityFactory af, final SpellAbility sa) {
final Card source = sa.getSourceCard(); final Card source = sa.getSourceCard();
final Card host = af.getHostCard();
final HashMap<String, String> params = af.getMapParams(); final HashMap<String, String> params = af.getMapParams();
final String mode = params.get("Mode"); final String mode = params.get("Mode");
@@ -1093,6 +1097,19 @@ public class AbilityFactoryZoneAffecting {
for (final Player p : tgtPlayers) { for (final Player p : tgtPlayers) {
if ((tgt == null) || p.canTarget(sa)) { if ((tgt == null) || p.canTarget(sa)) {
if (mode.equals("Defined")) {
final ArrayList<Card> toDiscard = AbilityFactory.getDefinedCards(host, params.get("DefinedCards"), sa);
for (Card c : toDiscard) {
discarded.addAll(p.discard(c, sa));
}
if (params.containsKey("RememberDiscarded")) {
for (final Card c : discarded) {
source.addRemembered(c);
}
}
continue;
}
if (mode.equals("Hand")) { if (mode.equals("Hand")) {
final CardList list = p.discardHand(sa); final CardList list = p.discardHand(sa);
if (params.containsKey("RememberDiscarded")) { if (params.containsKey("RememberDiscarded")) {
@@ -1300,6 +1317,10 @@ public class AbilityFactoryZoneAffecting {
sb.append(" of type: ").append(valid); sb.append(" of type: ").append(valid);
} }
if (mode.equals("Defined")) {
sb.append(" defined cards");
}
if (mode.equals("Random")) { if (mode.equals("Random")) {
sb.append(" at random."); sb.append(" at random.");
} else { } else {