From c3b232fe7a1bbb8e2c0f9c28145de8918388662c Mon Sep 17 00:00:00 2001 From: ArsenalNut Date: Thu, 12 Jan 2012 07:08:39 +0000 Subject: [PATCH] modifications to allow cards that transform to Auras to attach to a target. --- src/main/java/forge/Card.java | 6 ++++++ .../card/abilityfactory/AbilityFactoryAttach.java | 13 +++++++++---- .../card/abilityfactory/AbilityFactorySetState.java | 4 ++++ 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/src/main/java/forge/Card.java b/src/main/java/forge/Card.java index 3dc61b29099..c59c92c0b9a 100644 --- a/src/main/java/forge/Card.java +++ b/src/main/java/forge/Card.java @@ -6926,6 +6926,12 @@ public class Card extends GameEntity implements Comparable { AllZone.getComputerPlayer()))) { return false; } + } else if (property.startsWith("controllerWasDealtDamageByThisTurn")) { + if (!(source.dealtDmgToHumanThisTurn && this.getController().isPlayer(AllZone.getHumanPlayer())) + && !(source.dealtDmgToComputerThisTurn && this.getController().isPlayer( + AllZone.getComputerPlayer()))) { + return false; + } } else if (property.startsWith("wasDealtDamageThisTurn")) { if ((this.getReceivedDamageFromThisTurn().keySet()).isEmpty()) { return false; diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryAttach.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryAttach.java index 1e021a38d52..a66953302ab 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryAttach.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryAttach.java @@ -1115,6 +1115,7 @@ public class AbilityFactoryAttach { final AbilityFactory af = aura.getAbilityFactory(); final Target tgt = aura.getTarget(); + final boolean gainControl = "GainControl".equals(af.getMapParams().get("AILogic")); if (source.getController().isHuman()) { if (tgt.canTgtPlayer()) { @@ -1130,7 +1131,8 @@ public class AbilityFactoryAttach { final Object o = GuiUtils.getChoice(source + " - Select a player to attach to.", players.toArray()); if (o instanceof Player) { - source.enchantEntity((Player) o); + AbilityFactoryAttach.handleAura(source, (Player) o, false); + //source.enchantEntity((Player) o); return true; } } else { @@ -1139,7 +1141,8 @@ public class AbilityFactoryAttach { final Object o = GuiUtils.getChoice(source + " - Select a card to attach to.", list.toArray()); if (o instanceof Card) { - source.enchantEntity((Card) o); + AbilityFactoryAttach.handleAura(source, (Card) o, gainControl); + //source.enchantEntity((Card) o); return true; } } @@ -1148,10 +1151,12 @@ public class AbilityFactoryAttach { else if (AbilityFactoryAttach.attachPreference(af, aura, af.getMapParams(), tgt, true)) { final Object o = aura.getTarget().getTargets().get(0); if (o instanceof Card) { - source.enchantEntity((Card) o); + //source.enchantEntity((Card) o); + AbilityFactoryAttach.handleAura(source, (Card) o, gainControl); return true; } else if (o instanceof Player) { - source.enchantEntity((Player) o); + //source.enchantEntity((Player) o); + AbilityFactoryAttach.handleAura(source, (Player) o, false); return true; } } diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactorySetState.java b/src/main/java/forge/card/abilityfactory/AbilityFactorySetState.java index f84fdeb7f54..ae64c25213d 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactorySetState.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactorySetState.java @@ -25,6 +25,7 @@ import java.util.Map; import forge.AllZoneUtil; import forge.Card; import forge.CardList; +import forge.Constant; import forge.Constant.Zone; import forge.Player; import forge.card.spellability.AbilityActivated; @@ -252,6 +253,9 @@ public class AbilityFactorySetState { } else { tgt.setState(abilityFactory.getMapParams().get("NewState")); } + if (tgt.isAura()) { + AbilityFactoryAttach.attachAuraOnIndirectEnterBattlefield(tgt); + } } }