diff --git a/Mage.Common/src/mage/view/AbilityView.java b/Mage.Common/src/mage/view/AbilityView.java index 6e1035101ac..44d73318b96 100644 --- a/Mage.Common/src/mage/view/AbilityView.java +++ b/Mage.Common/src/mage/view/AbilityView.java @@ -48,7 +48,7 @@ public class AbilityView extends CardView { this.sourceName = sourceName; this.sourceCard = sourceCard; this.rules = new ArrayList(); - rules.add(formatRule(ability.getRule())); + rules.add(ability.getRule(sourceName)); this.power = ""; this.toughness = ""; this.loyalty = ""; @@ -60,13 +60,6 @@ public class AbilityView extends CardView { this.art = ""; } - @Override - protected String formatRule(String rule) { - String newRule = rule.replace("{this}", this.sourceName); - newRule.replace("{source}", this.sourceName); - return newRule; - } - public CardView getSourceCard() { return this.sourceCard; } diff --git a/Mage.Common/src/mage/view/CardView.java b/Mage.Common/src/mage/view/CardView.java index 4116c281214..4c733d5cdb5 100644 --- a/Mage.Common/src/mage/view/CardView.java +++ b/Mage.Common/src/mage/view/CardView.java @@ -76,7 +76,7 @@ public class CardView implements Serializable { public CardView(Card card) { this.id = card.getId(); this.name = card.getName(); - this.rules = formatRules(card.getRules()); + this.rules = card.getRules(); if (card instanceof Permanent) { this.power = Integer.toString(card.getPower().getValue()); this.toughness = Integer.toString(card.getToughness().getValue()); @@ -118,7 +118,7 @@ public class CardView implements Serializable { CardView(Token token) { this.id = token.getId(); this.name = token.getName(); - this.rules = formatRules(token.getAbilities().getRules()); + this.rules = token.getAbilities().getRules(this.name); this.power = token.getPower().toString(); this.toughness = token.getToughness().toString(); this.loyalty = token.getLoyalty().toString(); @@ -143,19 +143,19 @@ public class CardView implements Serializable { } } - protected List formatRules(List rules) { - List newRules = new ArrayList(); - for (String rule: rules) { - newRules.add(formatRule(rule)); - } - return newRules; - } - - protected String formatRule(String rule) { - String replace = rule.replace("{this}", this.name); - replace = replace.replace("{source}", this.name); - return replace; - } +// protected List formatRules(List rules) { +// List newRules = new ArrayList(); +// for (String rule: rules) { +// newRules.add(formatRule(rule)); +// } +// return newRules; +// } +// +// protected String formatRule(String rule) { +// String replace = rule.replace("{this}", this.name); +// replace = replace.replace("{source}", this.name); +// return replace; +// } public String getName() { return name; diff --git a/Mage.Common/src/mage/view/StackAbilityView.java b/Mage.Common/src/mage/view/StackAbilityView.java index 5beaed5077a..d795daa7fc2 100644 --- a/Mage.Common/src/mage/view/StackAbilityView.java +++ b/Mage.Common/src/mage/view/StackAbilityView.java @@ -47,7 +47,7 @@ public class StackAbilityView extends CardView { this.sourceName = sourceName; this.sourceCard = sourceCard; this.rules = new ArrayList(); - rules.add(formatRule(ability.getRule())); + rules.add(ability.getRule(sourceName)); this.power = ability.getPower().toString(); this.toughness = ability.getToughness().toString(); this.loyalty = ability.getLoyalty().toString(); @@ -60,13 +60,6 @@ public class StackAbilityView extends CardView { setTargets(ability.getTargets()); } - @Override - protected String formatRule(String rule) { - String newRule = rule.replace("{this}", this.sourceName); - newRule.replace("{source}", this.sourceName); - return newRule; - } - public CardView getSourceCard() { return this.sourceCard; } diff --git a/Mage/src/mage/abilities/Abilities.java b/Mage/src/mage/abilities/Abilities.java index 84fa54f9061..373446b4554 100644 --- a/Mage/src/mage/abilities/Abilities.java +++ b/Mage/src/mage/abilities/Abilities.java @@ -39,7 +39,7 @@ import mage.filter.FilterAbility; public interface Abilities extends List, Serializable { - public List getRules(); + public List getRules(String source); public Abilities getActivatedAbilities(Zone zone); public Abilities getActivatedAbilities(Zone zone, FilterAbility filter); public Abilities getManaAbilities(Zone zone); diff --git a/Mage/src/mage/abilities/AbilitiesImpl.java b/Mage/src/mage/abilities/AbilitiesImpl.java index ae40e84139e..e63ac8d181f 100644 --- a/Mage/src/mage/abilities/AbilitiesImpl.java +++ b/Mage/src/mage/abilities/AbilitiesImpl.java @@ -58,7 +58,7 @@ public class AbilitiesImpl extends ArrayList implements Ab } @Override - public List getRules() { + public List getRules(String source) { List rules = new ArrayList(); for (T ability:this) { diff --git a/Mage/src/mage/abilities/Ability.java b/Mage/src/mage/abilities/Ability.java index ab37daa5358..54c9cc73b22 100644 --- a/Mage/src/mage/abilities/Ability.java +++ b/Mage/src/mage/abilities/Ability.java @@ -73,6 +73,7 @@ public interface Ability extends Serializable { public Zone getZone(); public boolean isUsesStack(); public String getRule(); + public String getRule(String source); public boolean activate(Game game, boolean noMana); public boolean resolve(Game game); public void reset(Game game); diff --git a/Mage/src/mage/abilities/AbilityImpl.java b/Mage/src/mage/abilities/AbilityImpl.java index b8149c48050..fdfe229c7a9 100644 --- a/Mage/src/mage/abilities/AbilityImpl.java +++ b/Mage/src/mage/abilities/AbilityImpl.java @@ -302,6 +302,17 @@ public abstract class AbilityImpl> implements Ability { return sbRule.toString(); } + @Override + public String getRule(String source) { + return formatRule(getRule(), source); + } + + protected String formatRule(String rule, String source) { + String replace = rule.replace("{this}", source); + replace = replace.replace("{source}", source); + return replace; + } + @Override public void addCost(Cost cost) { if (cost != null) { diff --git a/Mage/src/mage/abilities/TriggeredAbilityImpl.java b/Mage/src/mage/abilities/TriggeredAbilityImpl.java index df530369a21..4aa8a015647 100644 --- a/Mage/src/mage/abilities/TriggeredAbilityImpl.java +++ b/Mage/src/mage/abilities/TriggeredAbilityImpl.java @@ -81,10 +81,13 @@ public abstract class TriggeredAbilityImpl> ex Player player = game.getPlayer(this.getControllerId()); MageObject object = game.getObject(sourceId); StringBuilder sb = new StringBuilder(); - sb.append("Use ").append(this.getRule()).append("ability"); if (object != null) { + sb.append("Use ").append(this.getRule(object.getName())).append("ability"); sb.append(" from ").append(object.getName()); } + else { + sb.append("Use ").append(this.getRule()).append("ability"); + } sb.append("?"); if (!player.chooseUse(this.effects.get(0).getOutcome(), sb.toString(), game)) { return false; diff --git a/Mage/src/mage/abilities/effects/common/SacrificeSourceUnlessPaysEffect.java b/Mage/src/mage/abilities/effects/common/SacrificeSourceUnlessPaysEffect.java index b8b48c9a84a..c95b298dd67 100644 --- a/Mage/src/mage/abilities/effects/common/SacrificeSourceUnlessPaysEffect.java +++ b/Mage/src/mage/abilities/effects/common/SacrificeSourceUnlessPaysEffect.java @@ -30,15 +30,17 @@ public class SacrificeSourceUnlessPaysEffect extends OneShotEffect { else sb.append("-").append(level2); sb.append(": ").append(power).append("/").append(toughness).append(" "); - for (String rule: abilities.getRules()) { + for (String rule: abilities.getRules("{this}")) { sb.append(rule).append(" "); } return sb.toString(); diff --git a/Mage/src/mage/cards/CardImpl.java b/Mage/src/mage/cards/CardImpl.java index be6684ac7bc..499e9161711 100644 --- a/Mage/src/mage/cards/CardImpl.java +++ b/Mage/src/mage/cards/CardImpl.java @@ -130,9 +130,9 @@ public abstract class CardImpl> extends MageObjectImpl @Override public List getRules() { - List rules = abilities.getRules(); + List rules = abilities.getRules(this.name); if (cardType.contains(CardType.INSTANT) || cardType.contains(CardType.SORCERY)) { - rules.add(0, getSpellAbility().getRule()); + rules.add(0, getSpellAbility().getRule(this.name)); } return rules; } diff --git a/Mage/src/mage/game/stack/StackAbility.java b/Mage/src/mage/game/stack/StackAbility.java index 2228a4e878d..54ddb3d24be 100644 --- a/Mage/src/mage/game/stack/StackAbility.java +++ b/Mage/src/mage/game/stack/StackAbility.java @@ -192,6 +192,11 @@ public class StackAbility implements StackObject, Ability { return ability.getRule(); } + @Override + public String getRule(String source) { + return ability.getRule(source); + } + @Override public void setControllerId(UUID controllerId) { this.controllerId = controllerId;