diff --git a/Mage/src/mage/abilities/CompoundAbility.java b/Mage/src/mage/abilities/CompoundAbility.java new file mode 100644 index 00000000000..b27a8438f15 --- /dev/null +++ b/Mage/src/mage/abilities/CompoundAbility.java @@ -0,0 +1,55 @@ +package mage.abilities; + +import java.util.List; + +/** + * @author noxx + */ +public class CompoundAbility extends AbilitiesImpl { + + private String ruleText; + + public CompoundAbility(Ability... abilities) { + this(null, abilities); + } + + public CompoundAbility(String ruleText, Ability... abilities) { + for (Ability ability : abilities) { + add(ability); + } + } + + public CompoundAbility(final CompoundAbility compoundAbility) { + for (Ability ability : compoundAbility) { + add(ability); + } + this.ruleText = compoundAbility.ruleText; + } + + public String getRule() { + if (ruleText != null) { + return ruleText; + } + + StringBuilder sb = new StringBuilder(); + List rules = super.getRules(null); + for (int index = 0; index < rules.size(); index++) { + if (index > 0) { + if (index < rules.size() - 1) { + sb.append(", "); + } else { + sb.append(" and "); + } + } + sb.append(rules.get(index)); + } + + // we can't simply cache it to this.ruleText as some cards may change abilities dynamically + return sb.toString(); + } + + @Override + public CompoundAbility copy() { + return new CompoundAbility(this); + } +} diff --git a/Mage/src/mage/abilities/effects/common/continious/GainAbilityControlledEffect.java b/Mage/src/mage/abilities/effects/common/continious/GainAbilityControlledEffect.java index 581509e3d0e..b5487c39b0e 100644 --- a/Mage/src/mage/abilities/effects/common/continious/GainAbilityControlledEffect.java +++ b/Mage/src/mage/abilities/effects/common/continious/GainAbilityControlledEffect.java @@ -33,18 +33,18 @@ import mage.Constants.Layer; import mage.Constants.Outcome; import mage.Constants.SubLayer; import mage.abilities.Ability; +import mage.abilities.CompoundAbility; import mage.abilities.effects.ContinuousEffectImpl; import mage.filter.FilterPermanent; import mage.game.Game; import mage.game.permanent.Permanent; /** - * * @author BetaSteward_at_googlemail.com */ public class GainAbilityControlledEffect extends ContinuousEffectImpl { - protected Ability ability; + protected CompoundAbility ability; protected boolean excludeSource; protected FilterPermanent filter; @@ -52,11 +52,23 @@ public class GainAbilityControlledEffect extends ContinuousEffectImpl