- Added an optional "Destroy" parameter to AF Sacrifice and fixed Imperial Edict with it.

This commit is contained in:
Sloth
2011-12-01 11:33:44 +00:00
parent 073d847e87
commit d1fb96396f
2 changed files with 17 additions and 7 deletions

View File

@@ -2,7 +2,7 @@ Name:Imperial Edict
ManaCost:1 B ManaCost:1 B
Types:Sorcery Types:Sorcery
Text:no text Text:no text
A:SP$ Sacrifice | Cost$ 1 B | ValidTgts$ Opponent | SacValid$ Creature | SacMessage$ Creature | SpellDescription$ Target opponent sacrifices a creature. A:SP$ Sacrifice | Cost$ 1 B | ValidTgts$ Opponent | SacValid$ Creature | SacMessage$ Creature | Destroy$ True | SpellDescription$ Target opponent sacrifices a creature.
SVar:Rarity:Common SVar:Rarity:Common
SVar:Picture:http://www.wizards.com/global/images/magic/general/imperial_edict.jpg SVar:Picture:http://www.wizards.com/global/images/magic/general/imperial_edict.jpg
SetInfo:PTK|Common|http://magiccards.info/scans/en/p3k/77.jpg SetInfo:PTK|Common|http://magiccards.info/scans/en/p3k/77.jpg

View File

@@ -30,7 +30,6 @@ import forge.Constant;
import forge.Constant.Zone; import forge.Constant.Zone;
import forge.MyRandom; import forge.MyRandom;
import forge.Player; import forge.Player;
import forge.PlayerUtil;
import forge.card.cardfactory.CardFactoryUtil; import forge.card.cardfactory.CardFactoryUtil;
import forge.card.cost.Cost; import forge.card.cost.Cost;
import forge.card.cost.CostUtil; import forge.card.cost.CostUtil;
@@ -446,6 +445,7 @@ public class AbilityFactorySacrifice {
msg = "Sacrifice a " + msg; msg = "Sacrifice a " + msg;
final boolean destroy = params.containsKey("Destroy");
final boolean remSacrificed = params.containsKey("RememberSacrificed"); final boolean remSacrificed = params.containsKey("RememberSacrificed");
if (remSacrificed) { if (remSacrificed) {
card.clearRemembered(); card.clearRemembered();
@@ -480,9 +480,9 @@ public class AbilityFactorySacrifice {
CardList sacList = null; CardList sacList = null;
for (final Player p : tgts) { for (final Player p : tgts) {
if (p.isComputer()) { if (p.isComputer()) {
sacList = AbilityFactorySacrifice.sacrificeAI(p, amount, valid, sa); sacList = AbilityFactorySacrifice.sacrificeAI(p, amount, valid, sa, destroy);
} else { } else {
sacList = AbilityFactorySacrifice.sacrificeHuman(p, amount, valid, sa, msg); sacList = AbilityFactorySacrifice.sacrificeHuman(p, amount, valid, sa, destroy);
} }
if (remSacrificed) { if (remSacrificed) {
for (int i = 0; i < sacList.size(); i++) { for (int i = 0; i < sacList.size(); i++) {
@@ -509,7 +509,8 @@ public class AbilityFactorySacrifice {
* @param sa * @param sa
* a {@link forge.card.spellability.SpellAbility} object. * a {@link forge.card.spellability.SpellAbility} object.
*/ */
private static CardList sacrificeAI(final Player p, final int amount, final String valid, final SpellAbility sa) { private static CardList sacrificeAI(final Player p, final int amount, final String valid, final SpellAbility sa,
final boolean destroy) {
CardList list = p.getCardsIn(Zone.Battlefield); CardList list = p.getCardsIn(Zone.Battlefield);
list = list.getValidCards(valid.split(","), sa.getActivatingPlayer(), sa.getSourceCard()); list = list.getValidCards(valid.split(","), sa.getActivatingPlayer(), sa.getSourceCard());
@@ -535,7 +536,7 @@ public class AbilityFactorySacrifice {
* a {@link java.lang.String} object. * a {@link java.lang.String} object.
*/ */
private static CardList sacrificeHuman(final Player p, final int amount, final String valid, final SpellAbility sa, private static CardList sacrificeHuman(final Player p, final int amount, final String valid, final SpellAbility sa,
final String message) { final boolean destroy) {
CardList saccedList = new CardList(); CardList saccedList = new CardList();
CardList list = p.getCardsIn(Zone.Battlefield); CardList list = p.getCardsIn(Zone.Battlefield);
list = list.getValidCards(valid.split(","), sa.getActivatingPlayer(), sa.getSourceCard()); list = list.getValidCards(valid.split(","), sa.getActivatingPlayer(), sa.getSourceCard());
@@ -548,7 +549,16 @@ public class AbilityFactorySacrifice {
o = GuiUtils.getChoice("Select a card to sacrifice", list.toArray()); o = GuiUtils.getChoice("Select a card to sacrifice", list.toArray());
if (o != null) { if (o != null) {
final Card c = (Card) o; final Card c = (Card) o;
AllZone.getGameAction().sacrifice(c);
if (destroy) {
if(!AllZone.getGameAction().destroy(c)) {
continue;
}
} else {
if(!AllZone.getGameAction().sacrifice(c)){
continue;
}
}
saccedList.add(c); saccedList.add(c);
list.remove(c); list.remove(c);
} }