forked from External/mage
51 lines
1.7 KiB
Java
51 lines
1.7 KiB
Java
package mage.abilities.effects.common;
|
|
|
|
import mage.abilities.Ability;
|
|
import mage.abilities.common.delayed.ReflexiveTriggeredAbility;
|
|
import mage.game.Game;
|
|
import mage.game.events.GameEvent;
|
|
import mage.target.targetpointer.FixedTarget;
|
|
|
|
/**
|
|
* @author Susucr
|
|
*/
|
|
public class RegenerateSourceWithReflexiveEffect extends RegenerateSourceEffect {
|
|
|
|
private final ReflexiveTriggeredAbility reflexive;
|
|
private final boolean setReflexiveTarget;
|
|
|
|
public RegenerateSourceWithReflexiveEffect(ReflexiveTriggeredAbility reflexive, boolean setReflexiveTarget) {
|
|
super();
|
|
this.reflexive = reflexive;
|
|
this.reflexive.setTriggerPhrase("When it regenerates this way, ");
|
|
this.reflexive.withRuleTextReplacement(true);
|
|
this.setReflexiveTarget = setReflexiveTarget;
|
|
this.staticText = "regenerate {this}. " + reflexive.getRule();
|
|
}
|
|
|
|
protected RegenerateSourceWithReflexiveEffect(final RegenerateSourceWithReflexiveEffect effect) {
|
|
super(effect);
|
|
this.reflexive = effect.reflexive.copy();
|
|
this.setReflexiveTarget = effect.setReflexiveTarget;
|
|
}
|
|
|
|
@Override
|
|
public RegenerateSourceWithReflexiveEffect copy() {
|
|
return new RegenerateSourceWithReflexiveEffect(this);
|
|
}
|
|
|
|
@Override
|
|
public boolean replaceEvent(GameEvent event, Ability source, Game game) {
|
|
if (super.replaceEvent(event, source, game)) {
|
|
if (this.setReflexiveTarget) {
|
|
reflexive.getEffects().setTargetPointer(
|
|
new FixedTarget(getTargetPointer().getFirst(game, source), game)
|
|
);
|
|
}
|
|
game.fireReflexiveTriggeredAbility(reflexive, source);
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
}
|