diff --git a/Mage/src/main/java/mage/abilities/dynamicvalue/AdditiveDynamicValue.java b/Mage/src/main/java/mage/abilities/dynamicvalue/AdditiveDynamicValue.java index 5c30bdeae8e..0d48476246b 100644 --- a/Mage/src/main/java/mage/abilities/dynamicvalue/AdditiveDynamicValue.java +++ b/Mage/src/main/java/mage/abilities/dynamicvalue/AdditiveDynamicValue.java @@ -3,33 +3,31 @@ package mage.abilities.dynamicvalue; import mage.abilities.Ability; import mage.abilities.effects.Effect; import mage.game.Game; +import mage.util.CardUtil; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; +/** + * Creates a {@link DynamicValue} from that adds together multiple + * {@link DynamicValue}s. + */ public class AdditiveDynamicValue implements DynamicValue { private final List dynamicValues; - /** - * Creates a {@link DynamicValue} from that adds together multiple - * {@link DynamicValue}s. - * - * @param dynamicValues The dynamic values to add together. - */ public AdditiveDynamicValue(DynamicValue... dynamicValues) { - this.dynamicValues = Arrays.asList(dynamicValues); + this(Arrays.asList(dynamicValues)); } - /** - * Creates a {@link DynamicValue} from that adds together multiple - * {@link DynamicValue}s. - * - * @param dynamicValues The dynamic values to add together. - */ public AdditiveDynamicValue(List dynamicValues) { - this.dynamicValues = dynamicValues; + this.dynamicValues = new ArrayList<>(dynamicValues); + } + + private AdditiveDynamicValue(final AdditiveDynamicValue value) { + this.dynamicValues = CardUtil.deepCopyObject(value.dynamicValues); } @Override @@ -39,7 +37,7 @@ public class AdditiveDynamicValue implements DynamicValue { @Override public AdditiveDynamicValue copy() { - return new AdditiveDynamicValue(this.dynamicValues); + return new AdditiveDynamicValue(this); } @Override diff --git a/Mage/src/main/java/mage/abilities/dynamicvalue/MaximumDynamicValue.java b/Mage/src/main/java/mage/abilities/dynamicvalue/MaximumDynamicValue.java index 4215a96825a..53e8eb11c4c 100644 --- a/Mage/src/main/java/mage/abilities/dynamicvalue/MaximumDynamicValue.java +++ b/Mage/src/main/java/mage/abilities/dynamicvalue/MaximumDynamicValue.java @@ -3,33 +3,31 @@ package mage.abilities.dynamicvalue; import mage.abilities.Ability; import mage.abilities.effects.Effect; import mage.game.Game; +import mage.util.CardUtil; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; +/** + * Creates a {@link DynamicValue} that finds the maximum of multiple + * {@link DynamicValue}s. + */ public class MaximumDynamicValue implements DynamicValue { private final List dynamicValues; - /** - * Creates a {@link DynamicValue} that finds the maximum of multiple - * {@link DynamicValue}s. - * - * @param dynamicValues The dynamic values to add together. - */ public MaximumDynamicValue(DynamicValue... dynamicValues) { - this.dynamicValues = Arrays.asList(dynamicValues); + this(Arrays.asList(dynamicValues)); } - /** - * Creates a {@link DynamicValue} that finds the maximum of multiple - * {@link DynamicValue}s. - * - * @param dynamicValues The dynamic values to add together. - */ public MaximumDynamicValue(List dynamicValues) { - this.dynamicValues = dynamicValues; + this.dynamicValues = new ArrayList<>(dynamicValues); + } + + private MaximumDynamicValue(final MaximumDynamicValue value) { + this.dynamicValues = CardUtil.deepCopyObject(value.dynamicValues); } @Override @@ -39,7 +37,7 @@ public class MaximumDynamicValue implements DynamicValue { @Override public MaximumDynamicValue copy() { - return new MaximumDynamicValue(this.dynamicValues); + return new MaximumDynamicValue(this); } @Override