mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-17 19:28:01 +00:00
- Added support for targeting and Defined parameters to AF ManaReflected.
- Fixed Winter's Night.
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user