From f2ef2e40e5e530105c51e6e56b7218d04720fab2 Mon Sep 17 00:00:00 2001 From: BetaSteward Date: Tue, 27 Sep 2011 22:27:03 -0400 Subject: [PATCH] fixed ids for copied abilities --- Mage/src/mage/abilities/Abilities.java | 5 +++++ Mage/src/mage/abilities/AbilitiesImpl.java | 7 +++++++ Mage/src/mage/abilities/Ability.java | 9 +++++++++ Mage/src/mage/abilities/AbilityImpl.java | 7 +++++++ Mage/src/mage/cards/CardImpl.java | 2 +- Mage/src/mage/game/stack/StackAbility.java | 3 +++ 6 files changed, 32 insertions(+), 1 deletion(-) diff --git a/Mage/src/mage/abilities/Abilities.java b/Mage/src/mage/abilities/Abilities.java index 40488a46152..ed1b0320022 100644 --- a/Mage/src/mage/abilities/Abilities.java +++ b/Mage/src/mage/abilities/Abilities.java @@ -190,6 +190,11 @@ public interface Abilities extends List, Serializable { public void newId(); /** + * Assigns a new {@link java.util.UUID} + */ + public void newOriginalId(); + + /** * Searches this set of abilities to see if the ability represented by the abilityId * is contained within. Can be used to find usages of singleton abilities. * diff --git a/Mage/src/mage/abilities/AbilitiesImpl.java b/Mage/src/mage/abilities/AbilitiesImpl.java index 4e3d47f6677..f05952d47db 100644 --- a/Mage/src/mage/abilities/AbilitiesImpl.java +++ b/Mage/src/mage/abilities/AbilitiesImpl.java @@ -185,6 +185,13 @@ public class AbilitiesImpl extends ArrayList implements Ab } @Override + public void newOriginalId() { + for (Ability ability: this) { + ability.newOriginalId(); + } + } + + @Override public boolean contains(T ability) { for (T test: this) { if (ability.getId().equals(test.getId()) || ability.getRule().equals(test.getRule())) { diff --git a/Mage/src/mage/abilities/Ability.java b/Mage/src/mage/abilities/Ability.java index cb248a57d8f..c5279ef6315 100644 --- a/Mage/src/mage/abilities/Ability.java +++ b/Mage/src/mage/abilities/Ability.java @@ -71,6 +71,15 @@ public interface Ability extends Serializable { public void newId(); /** + * Assigns a new {@link java.util.UUID} + * + * @see mage.players.PlayerImpl#playAbility(mage.abilities.ActivatedAbility, mage.game.Game) + * @see mage.game.GameImpl#addTriggeredAbility(mage.abilities.TriggeredAbility) + * @see mage.game.GameImpl#addDelayedTriggeredAbility(mage.abilities.DelayedTriggeredAbility) + */ + public void newOriginalId(); + + /** * Gets the {@link AbilityType} of this ability. * * @return The {@link AbilityType type} of this ability. diff --git a/Mage/src/mage/abilities/AbilityImpl.java b/Mage/src/mage/abilities/AbilityImpl.java index e86e3a02373..922e5a21d80 100644 --- a/Mage/src/mage/abilities/AbilityImpl.java +++ b/Mage/src/mage/abilities/AbilityImpl.java @@ -123,6 +123,13 @@ public abstract class AbilityImpl> implements Ability { } @Override + public void newOriginalId() { + this.id = UUID.randomUUID(); + this.originalId = id; + getEffects().newId(); + } + + @Override public AbilityType getAbilityType() { return this.abilityType; } diff --git a/Mage/src/mage/cards/CardImpl.java b/Mage/src/mage/cards/CardImpl.java index 797fe66bf71..c16df004867 100644 --- a/Mage/src/mage/cards/CardImpl.java +++ b/Mage/src/mage/cards/CardImpl.java @@ -110,7 +110,7 @@ public abstract class CardImpl> extends MageObjectImpl @Override public void assignNewId() { this.objectId = UUID.randomUUID(); - this.abilities.newId(); + this.abilities.newOriginalId(); this.abilities.setSourceId(objectId); this.watchers.setSourceId(objectId); } diff --git a/Mage/src/mage/game/stack/StackAbility.java b/Mage/src/mage/game/stack/StackAbility.java index 64244bac819..30cb05a25cd 100644 --- a/Mage/src/mage/game/stack/StackAbility.java +++ b/Mage/src/mage/game/stack/StackAbility.java @@ -305,6 +305,9 @@ public class StackAbility implements StackObject, Ability { @Override public void newId() {} + @Override + public void newOriginalId() {} + @Override public Ability getStackAbility() { return ability;