From f2f34bc4db7af308d7bf9bcbbf1518a410de1f5d Mon Sep 17 00:00:00 2001 From: Hanmac Date: Wed, 21 Nov 2018 18:27:01 +0100 Subject: [PATCH] CantAttach: remove 'can't be enchanted in the future' --- .../src/main/java/forge/game/GameEntity.java | 2 +- .../src/main/java/forge/game/card/Card.java | 4 +--- .../main/java/forge/game/card/CardProperty.java | 17 ++++++++--------- .../staticability/StaticAbilityCantAttach.java | 12 ++++++++++++ 4 files changed, 22 insertions(+), 13 deletions(-) diff --git a/forge-game/src/main/java/forge/game/GameEntity.java b/forge-game/src/main/java/forge/game/GameEntity.java index ce2ddd3030b..5920b4b30e5 100644 --- a/forge-game/src/main/java/forge/game/GameEntity.java +++ b/forge-game/src/main/java/forge/game/GameEntity.java @@ -374,7 +374,7 @@ public abstract class GameEntity extends GameObject implements IIdentifiable { public boolean canBeAttachedBy(final Card attach, boolean checkSBA) { // master mode - if (!attach.isAttachment() || attach.isCreature()) { + if (!attach.isAttachment() || attach.isCreature() || equals(attach)) { return false; } diff --git a/forge-game/src/main/java/forge/game/card/Card.java b/forge-game/src/main/java/forge/game/card/Card.java index 8df76117295..2e83dffab89 100644 --- a/forge-game/src/main/java/forge/game/card/Card.java +++ b/forge-game/src/main/java/forge/game/card/Card.java @@ -5188,9 +5188,7 @@ public class Card extends GameEntity implements Comparable { } } - return !((hasKeyword("CARDNAME can't be enchanted in the future.") && !isEnchantedBy(aura)) - || (hasKeyword("CARDNAME can't be enchanted.") && !aura.getName().equals("Anti-Magic Aura") - && !(aura.getName().equals("Consecrate Land") && aura.isInZone(ZoneType.Battlefield)))); + return true; } @Override diff --git a/forge-game/src/main/java/forge/game/card/CardProperty.java b/forge-game/src/main/java/forge/game/card/CardProperty.java index 32c55e45a86..bbd7149c7f6 100644 --- a/forge-game/src/main/java/forge/game/card/CardProperty.java +++ b/forge-game/src/main/java/forge/game/card/CardProperty.java @@ -401,11 +401,11 @@ public class CardProperty { return false; } } else if (property.startsWith("AttachedBy")) { - if (!card.isEquippedBy(source) && !card.isEnchantedBy(source) && !card.isFortifiedBy(source)) { + if (!card.isAttachedBy(source)) { return false; } } else if (property.equals("Attached")) { - if (card.getEquipping() != source && !source.equals(card.getAttaching())) { + if (!source.isAttachedBy(card)) { return false; } } else if (property.startsWith("AttachedTo")) { @@ -433,8 +433,7 @@ public class CardProperty { return false; } } else { - if ((card.getAttaching() == null || !card.getAttaching().isValid(restriction, sourceController, source, spellAbility)) - && (card.getEquipping() == null || !card.getEquipping().isValid(restriction, sourceController, source, spellAbility))) { + if ((card.getAttaching() == null || !card.getAttaching().isValid(restriction, sourceController, source, spellAbility))) { return false; } } @@ -444,7 +443,7 @@ public class CardProperty { return false; } } else if (property.equals("NotAttachedTo")) { - if (card.getEquipping() == source || source.equals(card.getAttaching())) { + if (source.isAttachedBy(card)) { return false; } } else if (property.startsWith("EnchantedBy")) { @@ -546,7 +545,7 @@ public class CardProperty { final SpellAbility saTargeting = sa.getSATargetingCard(); if (saTargeting != null) { for (final Card c : saTargeting.getTargets().getTargetCards()) { - if (!card.isEquippedBy(c)) { + if (!card.isAttachedBy(c)) { return false; } } @@ -554,16 +553,16 @@ public class CardProperty { } } else if (property.substring(10).equals("Enchanted")) { if (source.getEnchantingCard() == null || - !card.isEquippedBy(source.getEnchantingCard())) { + !card.isAttachedBy(source.getEnchantingCard())) { return false; } } else { - if (!card.isEquippedBy(source)) { + if (!card.isAttachedBy(source)) { return false; } } } else if (property.startsWith("FortifiedBy")) { - if (!card.isFortifiedBy(source)) { + if (!card.isAttachedBy(source)) { return false; } } else if (property.startsWith("CanBeAttachedBy")) { diff --git a/forge-game/src/main/java/forge/game/staticability/StaticAbilityCantAttach.java b/forge-game/src/main/java/forge/game/staticability/StaticAbilityCantAttach.java index f6dc94c31e2..bbf9781fac1 100644 --- a/forge-game/src/main/java/forge/game/staticability/StaticAbilityCantAttach.java +++ b/forge-game/src/main/java/forge/game/staticability/StaticAbilityCantAttach.java @@ -17,6 +17,18 @@ public class StaticAbilityCantAttach { && !target.isValid(stAb.getParam("Target").split(","), hostCard.getController(), hostCard, null)) { return false; } + + if (stAb.hasParam("ValidCardToTarget")) { + if (!(target instanceof Card)) { + return false; + } + Card tcard = (Card) target; + + if (!card.isValid(stAb.getParam("ValidCardToTarget").split(","), tcard.getController(), tcard, null)) { + return false; + } + } + return true; } }