diff --git a/res/cardsfolder/a/aluren.txt b/res/cardsfolder/a/aluren.txt index 36e03d791a7..343531d3834 100644 --- a/res/cardsfolder/a/aluren.txt +++ b/res/cardsfolder/a/aluren.txt @@ -2,7 +2,7 @@ Name:Aluren ManaCost:2 G G Types:Enchantment Text:no text -S:Mode$ Continuous | Affected$ Creature.cmcLE3 | AddHiddenKeyword$ HIDDEN Flash & HIDDEN May be played without paying its mana cost | AffectedZone$ Hand,Graveyard,Exile | Description$ Any player may play creature cards with converted mana cost 3 or less without paying their mana cost and as though they had flash. +S:Mode$ Continuous | Affected$ Creature.cmcLE3 | AddHiddenKeyword$ HIDDEN May be played without paying its mana cost and as though it has flash | AffectedZone$ Hand,Graveyard,Exile | Description$ Any player may play creature cards with converted mana cost 3 or less without paying their mana cost and as though they had flash. SVar:RemRandomDeck:True SVar:Rarity:Rare SVar:Picture:http://www.wizards.com/global/images/magic/general/aluren.jpg diff --git a/src/main/java/forge/GameAction.java b/src/main/java/forge/GameAction.java index 48e2bec2fd6..04c658f1a53 100644 --- a/src/main/java/forge/GameAction.java +++ b/src/main/java/forge/GameAction.java @@ -1881,10 +1881,10 @@ public class GameAction { // for uncastables like lotus bloom, check if manaCost is blank sa.setActivatingPlayer(human); if (sa.canPlay() && (!sa.isSpell() || !sa.getManaCost().equals(""))) { - boolean flashb = false; + boolean extraMode = false; // check for flashback keywords - if (c.isInZone(Constant.Zone.Graveyard) && sa.isSpell() && (c.isInstant() || c.isSorcery())) { + if (zone.is(Constant.Zone.Graveyard) && sa.isSpell() && (c.isInstant() || c.isSorcery())) { for (final String keyword : c.getKeyword()) { if (keyword.startsWith("Flashback")) { final SpellAbility flashback = sa.copy(); @@ -1898,7 +1898,7 @@ public class GameAction { } choices.add(flashback.toString()); map.put(flashback.toString(), flashback); - flashb = true; + extraMode = true; } } } @@ -1916,9 +1916,10 @@ public class GameAction { newSA.setDescription(sa.getDescription() + " (without paying its mana cost)"); choices.add(newSA.toString()); map.put(newSA.toString(), newSA); + extraMode = true; } SpellAbilityRestriction restrictions = sa.getRestrictions(); - if (restrictions != null && restrictions.checkZoneRestrictions(zone, c, sa)) { + if (!extraMode || (restrictions != null && restrictions.checkZoneRestrictions(zone, c, sa))) { choices.add(sa.toString()); map.put(sa.toString(), sa); } diff --git a/src/main/java/forge/card/spellability/Spell.java b/src/main/java/forge/card/spellability/Spell.java index c51802920cd..c8bd4b782b1 100644 --- a/src/main/java/forge/card/spellability/Spell.java +++ b/src/main/java/forge/card/spellability/Spell.java @@ -95,7 +95,8 @@ public abstract class Spell extends SpellAbility implements java.io.Serializable final Player activator = this.getActivatingPlayer(); - if (!(card.isInstant() || card.hasKeyword("Flash") || PhaseHandler.canCastSorcery(activator))) { + if (!(card.isInstant() || card.hasKeyword("Flash") || PhaseHandler.canCastSorcery(activator) + || card.hasKeyword("May be played without paying its mana cost and as though it has flash"))) { return false; } diff --git a/src/main/java/forge/card/spellability/SpellAbilityRestriction.java b/src/main/java/forge/card/spellability/SpellAbilityRestriction.java index 3daed192b44..be2f534a755 100644 --- a/src/main/java/forge/card/spellability/SpellAbilityRestriction.java +++ b/src/main/java/forge/card/spellability/SpellAbilityRestriction.java @@ -180,7 +180,7 @@ public class SpellAbilityRestriction extends SpellAbilityVariables { this.setSvarOperand(params.get("SVarCompare").substring(2)); } } // end setRestrictions() - + /** *
* checkZoneRestrictions. @@ -228,7 +228,7 @@ public class SpellAbilityRestriction extends SpellAbilityVariables { if (!checkZoneRestrictions(cardZone, c, sa)) { if (!sa.isSpell() || cardZone.is(Zone.Battlefield) || !this.getZone().equals(Zone.Hand)) { return false; - } else if (!c.hasStartOfKeyword("May be played") + } else if (!c.hasKeyword("May be played without paying its mana cost") && !(c.hasStartOfKeyword("Flashback") && cardZone.is(Zone.Graveyard))) { return false; }