* Phyrexian Revier - Replaced ReplacementEffect with ContinuousRuleModifyingEffect.

This commit is contained in:
LevelX2 2014-07-25 15:53:47 +02:00
parent 7f6d5bcac6
commit 8bdc94082d

View file

@ -39,8 +39,8 @@ import mage.MageObject;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.AsEntersBattlefieldAbility; import mage.abilities.common.AsEntersBattlefieldAbility;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.ContinuousRuleModifiyingEffectImpl;
import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.ReplacementEffectImpl;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.repository.CardRepository; import mage.cards.repository.CardRepository;
import mage.choices.Choice; import mage.choices.Choice;
@ -48,7 +48,9 @@ import mage.choices.ChoiceImpl;
import mage.game.Game; import mage.game.Game;
import mage.game.events.GameEvent; import mage.game.events.GameEvent;
import mage.game.events.GameEvent.EventType; import mage.game.events.GameEvent.EventType;
import mage.game.permanent.Permanent;
import mage.players.Player; import mage.players.Player;
import mage.util.CardUtil;
/** /**
* *
@ -95,7 +97,8 @@ class PhyrexianRevokerEffect1 extends OneShotEffect {
@Override @Override
public boolean apply(Game game, Ability source) { public boolean apply(Game game, Ability source) {
Player controller = game.getPlayer(source.getControllerId()); Player controller = game.getPlayer(source.getControllerId());
if (controller != null) { Permanent permanent = game.getPermanent(source.getSourceId());
if (controller != null && permanent != null) {
Choice cardChoice = new ChoiceImpl(); Choice cardChoice = new ChoiceImpl();
cardChoice.setChoices(CardRepository.instance.getNonLandNames()); cardChoice.setChoices(CardRepository.instance.getNonLandNames());
cardChoice.clearChoice(); cardChoice.clearChoice();
@ -105,8 +108,9 @@ class PhyrexianRevokerEffect1 extends OneShotEffect {
} }
} }
String cardName = cardChoice.getChoice(); String cardName = cardChoice.getChoice();
game.informPlayers("Phyrexian Revoker, named card: [" + cardName + "]"); game.informPlayers(permanent.getLogName() + ", named card: [" + cardName + "]");
game.getState().setValue(source.getSourceId().toString(), cardName); game.getState().setValue(source.getSourceId().toString(), cardName);
permanent.addInfo("named card", CardUtil.addToolTipMarkTags("Named card: [" + cardName +"]"));
} }
return false; return false;
} }
@ -118,7 +122,7 @@ class PhyrexianRevokerEffect1 extends OneShotEffect {
} }
class PhyrexianRevokerEffect2 extends ReplacementEffectImpl { class PhyrexianRevokerEffect2 extends ContinuousRuleModifiyingEffectImpl {
public PhyrexianRevokerEffect2() { public PhyrexianRevokerEffect2() {
super(Duration.WhileOnBattlefield, Outcome.Detriment); super(Duration.WhileOnBattlefield, Outcome.Detriment);
@ -138,14 +142,18 @@ class PhyrexianRevokerEffect2 extends ReplacementEffectImpl {
public PhyrexianRevokerEffect2 copy() { public PhyrexianRevokerEffect2 copy() {
return new PhyrexianRevokerEffect2(this); return new PhyrexianRevokerEffect2(this);
} }
@Override @Override
public boolean replaceEvent(GameEvent event, Ability source, Game game) { public String getInfoMessage(Ability source, Game game) {
return true; MageObject mageObject = game.getObject(source.getSourceId());
if (mageObject != null) {
return "You can't activate sources with that name (" + mageObject.getLogName() + " in play).";
}
return null;
} }
@Override @Override
public boolean applies(GameEvent event, Ability source, Game game) { public boolean applies(GameEvent event, Ability source, boolean checkPlayableMode ,Game game) {
if (event.getType() == EventType.ACTIVATE_ABILITY) { if (event.getType() == EventType.ACTIVATE_ABILITY) {
MageObject object = game.getObject(event.getSourceId()); MageObject object = game.getObject(event.getSourceId());
if (object != null && object.getName().equals(game.getState().getValue(source.getSourceId().toString()))) { if (object != null && object.getName().equals(game.getState().getValue(source.getSourceId().toString()))) {