ReplaceDamage: add DamageTarget param, use it for DamageRedirection and SplitDamage to check if Damage can be redirected

This commit is contained in:
Hanmac
2017-01-05 06:18:47 +00:00
parent 1c40bc3215
commit 126b1c3e7b

View File

@@ -19,6 +19,7 @@ package forge.game.replacement;
import forge.game.card.Card;
import forge.game.card.CardFactoryUtil;
import forge.game.player.Player;
import forge.game.spellability.SpellAbility;
import forge.game.ability.AbilityUtils;
import forge.util.Expressions;
@@ -96,6 +97,25 @@ public class ReplaceDamage extends ReplacementEffect {
return false;
}
// check for DamageRedirection, the Thing where the damage is redirected to must be a creature or planeswalker or a player
if (getMapParams().containsKey("DamageTarget")) {
String def = getMapParams().get("DamageTarget");
for (Player p : AbilityUtils.getDefinedPlayers(hostCard, def, null)) {
if (!p.getGame().getPlayers().contains(p)) {
return false;
}
}
for (Card c : AbilityUtils.getDefinedCards(hostCard, def, null)) {
if (!c.isCreature() && !c.isPlaneswalker()) {
return false;
}
if (!c.isInPlay()) {
return false;
}
}
}
return true;
}