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.
* @param sa
* 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);
return new CardList(c);
}
/**

View File

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