diff --git a/Mage.Sets/src/mage/cards/w/WarsToll.java b/Mage.Sets/src/mage/cards/w/WarsToll.java index febbcc67453..20a8ce0b74f 100644 --- a/Mage.Sets/src/mage/cards/w/WarsToll.java +++ b/Mage.Sets/src/mage/cards/w/WarsToll.java @@ -14,6 +14,8 @@ import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; +import java.util.Map; +import java.util.Set; import java.util.UUID; /** @@ -105,6 +107,14 @@ class WarsTollAttackRestrictionEffect extends RestrictionEffect { return true; } + @Override + public boolean updateForcedAttackersAfter(int numberAttackers, Permanent attackingCreature, Ability source, Game game, Map> creaturesForcedToAttack) { + if (numberAttackers == 0) return true; + Set opponents = game.getOpponents(attackingCreature.getControllerId()); + creaturesForcedToAttack.put(attackingCreature.getId(), opponents); + return true; + } + @Override public WarsTollAttackRestrictionEffect copy() { return new WarsTollAttackRestrictionEffect(this); diff --git a/Mage/src/main/java/mage/abilities/effects/RestrictionEffect.java b/Mage/src/main/java/mage/abilities/effects/RestrictionEffect.java index 4ade47002fd..9aa573d2b75 100644 --- a/Mage/src/main/java/mage/abilities/effects/RestrictionEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/RestrictionEffect.java @@ -1,5 +1,7 @@ package mage.abilities.effects; +import java.util.Map; +import java.util.Set; import java.util.UUID; import mage.abilities.Ability; @@ -57,6 +59,10 @@ public abstract class RestrictionEffect extends ContinuousEffectImpl { return true; } + public boolean updateForcedAttackersAfter(int numberAttackers, Permanent attackingCreature, Ability source, Game game, Map> creaturesForcedToAttack) { + return true; + } + /** * @param attacker can be empty for general checks * @param blocker diff --git a/Mage/src/main/java/mage/game/combat/Combat.java b/Mage/src/main/java/mage/game/combat/Combat.java index 1fa776ffc2f..a5040bbd76d 100644 --- a/Mage/src/main/java/mage/game/combat/Combat.java +++ b/Mage/src/main/java/mage/game/combat/Combat.java @@ -644,6 +644,16 @@ public class Combat implements Serializable, Copyable { } } } + // Allow unconventional forced attacks (War's Toll) to record creatures as having been forced to attack. + for (UUID attackingCreatureId : this.getAttackers()) { + Permanent attackingCreature = game.getPermanent(attackingCreatureId); + for (Map.Entry> entry : game.getContinuousEffects().getApplicableRestrictionEffects(attackingCreature, game).entrySet()) { + RestrictionEffect effect = entry.getKey(); + for (Ability ability : entry.getValue()) { + effect.updateForcedAttackersAfter(numberAttackers, attackingCreature, ability, game, creaturesForcedToAttack); + } + } + } } return true; }