- Added support for targeting and Defined parameters to AF ManaReflected.

- Fixed Winter's Night.
This commit is contained in:
jendave
2011-08-07 01:44:56 +00:00
parent f73ee6d17f
commit d7f025e3f1
2 changed files with 21 additions and 9 deletions

View File

@@ -3,7 +3,7 @@ ManaCost:R G W
Types:World Enchantment Types:World Enchantment
Text:no text Text:no text
T:Mode$ TapsForMana | ValidCard$ Land.Snow | Execute$ TrigMana | TriggerZones$ Battlefield | TriggerDescription$ Whenever a player taps a snow land for mana, that player adds one mana to his or her mana pool of any type that land produced. That land doesn't untap during its controller's next untap step. T:Mode$ TapsForMana | ValidCard$ Land.Snow | Execute$ TrigMana | TriggerZones$ Battlefield | TriggerDescription$ Whenever a player taps a snow land for mana, that player adds one mana to his or her mana pool of any type that land produced. That land doesn't untap during its controller's next untap step.
SVar:TrigMana:AB$ManaReflected | Cost$ 0 | ColorOrType$ Type | Valid$ Card.IsTriggeredCard | ReflectProperty$ Produce | SubAbility$ SVar=DBPump SVar:TrigMana:AB$ManaReflected | Cost$ 0 | ColorOrType$ Type | Valid$ Card.IsTriggeredCard | ReflectProperty$ Produce | Defined$ TriggeredPlayer | SubAbility$ SVar=DBPump
SVar:DBPump:DB$Pump | Defined$ TriggeredCard | Permanent$ True | KW$ HIDDEN This card doesn't untap during your next untap step. SVar:DBPump:DB$Pump | Defined$ TriggeredCard | Permanent$ True | KW$ HIDDEN This card doesn't untap during your next untap step.
SVar:RemAIDeck:True SVar:RemAIDeck:True
SVar:RemRandomDeck:True SVar:RemRandomDeck:True

View File

@@ -304,21 +304,32 @@ public class AbilityFactory_Mana {
public static void manaReflectedResolve(Ability_Mana abMana, AbilityFactory af){ public static void manaReflectedResolve(Ability_Mana abMana, AbilityFactory af){
// Spells are not undoable // Spells are not undoable
HashMap<String,String> params = af.getMapParams();
abMana.setUndoable(af.isAbility() && abMana.isUndoable()); abMana.setUndoable(af.isAbility() && abMana.isUndoable());
Card card = af.getHostCard(); Card card = af.getHostCard();
ArrayList<String> colors = reflectableMana(abMana, af, new ArrayList<String>(), new ArrayList<Card>()); ArrayList<String> colors = reflectableMana(abMana, af, new ArrayList<String>(), new ArrayList<Card>());
String generated = generatedReflectedMana(abMana, af, colors); ArrayList<Player> tgtPlayers;
if (abMana.getCanceled()){ Target tgt = af.getAbTgt();
abMana.undo(); if (tgt != null)
return; tgtPlayers = tgt.getTargetPlayers();
else
tgtPlayers = AbilityFactory.getDefinedPlayers(abMana.getSourceCard(), params.get("Defined"), abMana);
for(Player player : tgtPlayers) {
String generated = generatedReflectedMana(abMana, af, colors, player);
if (abMana.getCanceled()){
abMana.undo();
return;
}
abMana.produceMana(generated, player);
} }
abMana.produceMana(generated, card.getController());
doDrawback(af, abMana, card); doDrawback(af, abMana, card);
} }
@@ -426,7 +437,7 @@ public class AbilityFactory_Mana {
return colors; return colors;
} }
private static String generatedReflectedMana(Ability_Mana abMana, AbilityFactory af, ArrayList<String> colors){ private static String generatedReflectedMana(Ability_Mana abMana, AbilityFactory af, ArrayList<String> colors, Player player){
// Calculate generated mana here for stack description and resolving // Calculate generated mana here for stack description and resolving
HashMap<String,String> params = af.getMapParams(); HashMap<String,String> params = af.getMapParams();
int amount = params.containsKey("Amount") ? AbilityFactory.calculateAmount(af.getHostCard(), params.get("Amount"), abMana) : 1; int amount = params.containsKey("Amount") ? AbilityFactory.calculateAmount(af.getHostCard(), params.get("Amount"), abMana) : 1;
@@ -438,7 +449,7 @@ public class AbilityFactory_Mana {
else if (colors.size() == 1) else if (colors.size() == 1)
baseMana = Input_PayManaCostUtil.getShortColorString(colors.get(0)); baseMana = Input_PayManaCostUtil.getShortColorString(colors.get(0));
else{ else{
if (abMana.getActivatingPlayer().isHuman()){ if (player.isHuman()){
Object o = GuiUtils.getChoiceOptional("Select Mana to Produce", colors.toArray()); Object o = GuiUtils.getChoiceOptional("Select Mana to Produce", colors.toArray());
if (o == null) { if (o == null) {
// User hit cancel // User hit cancel
@@ -451,6 +462,7 @@ public class AbilityFactory_Mana {
} }
else{ else{
// AI doesn't really have anything here yet // AI doesn't really have anything here yet
baseMana = Input_PayManaCostUtil.getShortColorString(colors.get(0));
} }
} }