diff --git a/.gitattributes b/.gitattributes index c73139e8c03..9aa2f325d16 100644 --- a/.gitattributes +++ b/.gitattributes @@ -5725,6 +5725,7 @@ forge-gui/res/cardsfolder/i/intruder_alarm.txt svneol=native#text/plain forge-gui/res/cardsfolder/i/intuition.txt svneol=native#text/plain forge-gui/res/cardsfolder/i/inundate.txt svneol=native#text/plain forge-gui/res/cardsfolder/i/invader_parasite.txt -text +forge-gui/res/cardsfolder/i/invasion_plans.txt -text forge-gui/res/cardsfolder/i/invert_the_skies.txt -text forge-gui/res/cardsfolder/i/invigorate.txt -text forge-gui/res/cardsfolder/i/invigorating_boon.txt svneol=native#text/plain diff --git a/forge-gui/res/cardsfolder/i/invasion_plans.txt b/forge-gui/res/cardsfolder/i/invasion_plans.txt new file mode 100644 index 00000000000..f761c3ffb12 --- /dev/null +++ b/forge-gui/res/cardsfolder/i/invasion_plans.txt @@ -0,0 +1,8 @@ +Name:Invasion Plans +ManaCost:2 R +Types:Enchantment +S:Mode$ Continuous | GlobalRule$ The attacking player chooses how each creature blocks each turn. | Description$ The attacking player chooses how each creature blocks each turn. +S:Mode$ Continuous | Affected$ Creature | AddHiddenKeyword$ CARDNAME blocks each turn if able. | Description$ All creatures block each turn if able. +SVar:NonStackingEffect:True +SVar:Picture:http://www.wizards.com/global/images/magic/general/invasion_plans.jpg +Oracle:All creatures block each turn if able.\nThe attacking player chooses how each creature blocks each turn. diff --git a/forge-gui/src/main/java/forge/game/GlobalRuleChange.java b/forge-gui/src/main/java/forge/game/GlobalRuleChange.java index 0110a4f09c6..412da446be6 100644 --- a/forge-gui/src/main/java/forge/game/GlobalRuleChange.java +++ b/forge-gui/src/main/java/forge/game/GlobalRuleChange.java @@ -23,6 +23,7 @@ package forge.game; public enum GlobalRuleChange { alwaysWither ("All damage is dealt as though it's source had wither."), + attackerChoosesBlockers ("The attacking player chooses how each creature blocks each turn."), manapoolsDontEmpty ("Mana pools don't empty as steps and phases end."), noCycling ("Players can't cycle cards."), noCreatureETBTriggers ("Creatures entering the battlefield don't cause abilities to trigger."), diff --git a/forge-gui/src/main/java/forge/game/phase/PhaseHandler.java b/forge-gui/src/main/java/forge/game/phase/PhaseHandler.java index 3eb2984803d..654dc1458b7 100644 --- a/forge-gui/src/main/java/forge/game/phase/PhaseHandler.java +++ b/forge-gui/src/main/java/forge/game/phase/PhaseHandler.java @@ -43,6 +43,7 @@ import forge.card.trigger.TriggerType; import forge.game.GameAge; import forge.game.Game; import forge.game.GameType; +import forge.game.GlobalRuleChange; import forge.game.combat.Combat; import forge.game.combat.CombatUtil; import forge.game.event.GameEventAttackersDeclared; @@ -555,6 +556,9 @@ public class PhaseHandler implements java.io.Serializable { p = game.getNextPlayerAfter(p); // Apply Odric's effect here Player whoDeclaresBlockers = playerDeclaresBlockers == null || playerDeclaresBlockers.hasLost() ? p : playerDeclaresBlockers; + if (game.getStaticEffects().getGlobalRuleChange(GlobalRuleChange.attackerChoosesBlockers)) { + whoDeclaresBlockers = combat.getAttackingPlayer(); + } if ( combat.isPlayerAttacked(p) ) { whoDeclaresBlockers.getController().declareBlockers(p, combat); } else