From 4d48ce60a8e419aebead3e31a9c00e66a396663b Mon Sep 17 00:00:00 2001
From: LevelX2 <ludwig.hirth@online.de>
Date: Wed, 25 Mar 2015 22:02:25 +0100
Subject: [PATCH] Minor updates to cards from pull requests.

---
 .../mage/sets/dissension/AnthemOfRakdos.java  | 17 +++---
 .../src/mage/sets/nemesis/TreetopBracers.java | 56 ++++++++++++-------
 .../mage/sets/odyssey/TreetopSentinel.java    |  1 +
 .../src/mage/sets/scourge/TreetopScout.java   |  4 +-
 .../mage/sets/urzassaga/TreetopRangers.java   |  4 +-
 5 files changed, 47 insertions(+), 35 deletions(-)

diff --git a/Mage.Sets/src/mage/sets/dissension/AnthemOfRakdos.java b/Mage.Sets/src/mage/sets/dissension/AnthemOfRakdos.java
index 7897f637e2..c58c7ab1da 100644
--- a/Mage.Sets/src/mage/sets/dissension/AnthemOfRakdos.java
+++ b/Mage.Sets/src/mage/sets/dissension/AnthemOfRakdos.java
@@ -45,7 +45,6 @@ import mage.constants.Zone;
 import mage.game.Game;
 import mage.game.events.GameEvent;
 
-
 /**
  *
  * @author JotaPeRL
@@ -60,12 +59,11 @@ public class AnthemOfRakdos extends CardImpl {
         Effect effect = new BoostTargetEffect(2, 0, Duration.EndOfTurn);
         effect.setText("it gets +2/+0 until end of turn");
         Ability ability = new AttacksCreatureYouControlTriggeredAbility(effect, false, true);
-        Effect dcEffect = new DamageControllerEffect(1);
-        dcEffect.setText("and {this} deals 1 damage to you");
-        ability.addEffect(dcEffect);
+        effect = new DamageControllerEffect(1);
+        effect.setText("and {this} deals 1 damage to you");
+        ability.addEffect(effect);
         this.addAbility(ability);
-       
-        
+
         // Hellbent - As long as you have no cards in hand, if a source you control would deal damage to a creature or player, it deals double that damage to that creature or player instead.
         this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new AnthemOfRakdosHellbentEffect()));
     }
@@ -98,8 +96,8 @@ class AnthemOfRakdosHellbentEffect extends ReplacementEffectImpl {
 
     @Override
     public boolean checksEventType(GameEvent event, Game game) {
-        return event.getType().equals(GameEvent.EventType.DAMAGE_CREATURE) ||
-                event.getType().equals(GameEvent.EventType.DAMAGE_PLAYER);
+        return event.getType().equals(GameEvent.EventType.DAMAGE_CREATURE)
+                || event.getType().equals(GameEvent.EventType.DAMAGE_PLAYER);
     }
 
     @Override
@@ -116,6 +114,5 @@ class AnthemOfRakdosHellbentEffect extends ReplacementEffectImpl {
     public boolean replaceEvent(GameEvent event, Ability source, Game game) {
         event.setAmount(event.getAmount() * 2);
         return false;
-    }    
+    }
 }
-
diff --git a/Mage.Sets/src/mage/sets/nemesis/TreetopBracers.java b/Mage.Sets/src/mage/sets/nemesis/TreetopBracers.java
index 94bd57b6af..eb6d2ce051 100644
--- a/Mage.Sets/src/mage/sets/nemesis/TreetopBracers.java
+++ b/Mage.Sets/src/mage/sets/nemesis/TreetopBracers.java
@@ -44,6 +44,12 @@ import mage.target.TargetPermanent;
 import mage.target.common.TargetCreaturePermanent;
 
 import java.util.UUID;
+import mage.abilities.common.SimpleStaticAbility;
+import mage.abilities.effects.RestrictionEffect;
+import mage.abilities.effects.common.combat.CantBeBlockedAttachedEffect;
+import mage.abilities.keyword.ReachAbility;
+import mage.game.Game;
+import mage.game.permanent.Permanent;
 
 /**
  *
@@ -65,7 +71,9 @@ public class TreetopBracers extends CardImpl {
         this.addAbility(ability);
 
         // Enchanted creature gets +1/+1 and can't be blocked except by creatures with flying.
-        this.addAbility(new TreetopBracersAbility());
+        ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(1,1, Duration.WhileOnBattlefield));
+        ability.addEffect(new TreetopBracersRestrictEffect());
+        this.addAbility(ability);
     }
 
     public TreetopBracers(final TreetopBracers card) {
@@ -78,31 +86,37 @@ public class TreetopBracers extends CardImpl {
     }
 }
 
-class TreetopBracersAbility extends StaticAbility {
-    private static FilterCreaturePermanent onlyFlyingCreatures = new FilterCreaturePermanent("except by creatures with flying");
 
-    static {
-        onlyFlyingCreatures.add(Predicates.not(new AbilityPredicate(FlyingAbility.class)));
+class TreetopBracersRestrictEffect extends RestrictionEffect {
+
+    public TreetopBracersRestrictEffect() {
+        super(Duration.WhileOnBattlefield);
+        staticText = "and can't be blocked except by creatures with flying";
     }
 
-    public TreetopBracersAbility() {
-        super(Zone.BATTLEFIELD, new BoostEnchantedEffect(1, 1, Duration.WhileOnBattlefield));
-        Effect cantBeBlocked = new CantBeBlockedByCreaturesAttachedEffect(Duration.WhileOnBattlefield, onlyFlyingCreatures, AttachmentType.AURA);
-        cantBeBlocked.setText("and can't be blocked except by creatures with flying.");
-        addEffect(cantBeBlocked);
+    public TreetopBracersRestrictEffect(final TreetopBracersRestrictEffect effect) {
+        super(effect);
     }
 
-    public TreetopBracersAbility(TreetopBracersAbility ability) {
-        super(ability);
-    }
-
-    /**
-     * Creates a fresh copy of this ability.
-     *
-     * @return A new copy of this ability.
-     */
     @Override
-    public TreetopBracersAbility copy() {
-        return new TreetopBracersAbility(this);
+    public boolean applies(Permanent permanent, Ability source, Game game) {
+        Permanent equipment = game.getPermanent(source.getSourceId());
+        if (equipment != null && equipment.getAttachedTo() != null) {
+            Permanent equipped = game.getPermanent(equipment.getAttachedTo());
+            if (permanent.getId().equals(equipped.getId())) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    @Override
+    public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game) {
+        return blocker.getAbilities().contains(FlyingAbility.getInstance()) || blocker.getAbilities().contains(ReachAbility.getInstance());
+    }
+
+    @Override
+    public TreetopBracersRestrictEffect copy() {
+        return new TreetopBracersRestrictEffect(this);
     }
 }
diff --git a/Mage.Sets/src/mage/sets/odyssey/TreetopSentinel.java b/Mage.Sets/src/mage/sets/odyssey/TreetopSentinel.java
index e1cf17b44d..f49c18b7bb 100644
--- a/Mage.Sets/src/mage/sets/odyssey/TreetopSentinel.java
+++ b/Mage.Sets/src/mage/sets/odyssey/TreetopSentinel.java
@@ -62,6 +62,7 @@ public class TreetopSentinel extends CardImpl {
 
         // Flying
         this.addAbility(FlyingAbility.getInstance());
+        
         // protection from green
         this.addAbility(new ProtectionAbility(filter));
     }
diff --git a/Mage.Sets/src/mage/sets/scourge/TreetopScout.java b/Mage.Sets/src/mage/sets/scourge/TreetopScout.java
index c16a9a06b7..200e3b941f 100644
--- a/Mage.Sets/src/mage/sets/scourge/TreetopScout.java
+++ b/Mage.Sets/src/mage/sets/scourge/TreetopScout.java
@@ -45,11 +45,11 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
 /**
  *
  * @author Jason E. Wall
-
+ *
  */
 public class TreetopScout extends CardImpl {
 
-    private static FilterCreaturePermanent onlyFlyingCreatures = new FilterCreaturePermanent("except by creatures with flying");
+    private final static FilterCreaturePermanent onlyFlyingCreatures = new FilterCreaturePermanent("except by creatures with flying");
 
     static {
         onlyFlyingCreatures.add(Predicates.not(new AbilityPredicate(FlyingAbility.class)));
diff --git a/Mage.Sets/src/mage/sets/urzassaga/TreetopRangers.java b/Mage.Sets/src/mage/sets/urzassaga/TreetopRangers.java
index ea25d10ba7..f9d06be1e4 100644
--- a/Mage.Sets/src/mage/sets/urzassaga/TreetopRangers.java
+++ b/Mage.Sets/src/mage/sets/urzassaga/TreetopRangers.java
@@ -44,11 +44,11 @@ import mage.filter.predicate.mageobject.AbilityPredicate;
 /**
  *
  * @author Jason E. Wall
-
+ *
  */
 public class TreetopRangers extends CardImpl {
 
-    private static FilterCreaturePermanent onlyFlyingCreatures = new FilterCreaturePermanent("except by creatures with flying");
+    private final static FilterCreaturePermanent onlyFlyingCreatures = new FilterCreaturePermanent("except by creatures with flying");
 
     static {
         onlyFlyingCreatures.add(Predicates.not(new AbilityPredicate(FlyingAbility.class)));