forked from External/mage
Included watcher for catching excess instances of "you choose blockers" effect
This commit is contained in:
parent
e3af939bd7
commit
23f256c4b2
1 changed files with 56 additions and 27 deletions
|
|
@ -56,6 +56,7 @@ import mage.target.common.TargetCreaturePermanent;
|
|||
import mage.filter.predicate.permanent.ControllerPredicate;
|
||||
import mage.target.targetpointer.FixedTarget;
|
||||
import mage.watchers.Watcher;
|
||||
import mage.watchers.common.ChooseBlockersRedundancyWatcher;
|
||||
|
||||
/**
|
||||
*
|
||||
|
|
@ -79,6 +80,8 @@ public class MasterWarcraft extends CardImpl {
|
|||
// (only the last resolved Master Warcraft spell's effects apply)
|
||||
this.getSpellAbility().addWatcher(new MasterWarcraftCastWatcher());
|
||||
this.getSpellAbility().addEffect(new MasterWarcraftCastWatcherIncrementEffect());
|
||||
this.getSpellAbility().addWatcher(new ChooseBlockersRedundancyWatcher());
|
||||
this.getSpellAbility().addEffect(new ChooseBlockersRedundancyWatcherIncrementEffect());
|
||||
}
|
||||
|
||||
public MasterWarcraft(final MasterWarcraft card) {
|
||||
|
|
@ -89,6 +92,58 @@ public class MasterWarcraft extends CardImpl {
|
|||
public MasterWarcraft copy() {
|
||||
return new MasterWarcraft(this);
|
||||
}
|
||||
|
||||
private class MasterWarcraftCastWatcherIncrementEffect extends OneShotEffect {
|
||||
|
||||
MasterWarcraftCastWatcherIncrementEffect() {
|
||||
super(Outcome.Neutral);
|
||||
}
|
||||
|
||||
MasterWarcraftCastWatcherIncrementEffect(final MasterWarcraftCastWatcherIncrementEffect effect) {
|
||||
super(effect);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean apply(Game game, Ability source) {
|
||||
MasterWarcraftCastWatcher watcher = (MasterWarcraftCastWatcher) game.getState().getWatchers().get(MasterWarcraftCastWatcher.class.getSimpleName());
|
||||
if (watcher != null) {
|
||||
watcher.increment();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public MasterWarcraftCastWatcherIncrementEffect copy() {
|
||||
return new MasterWarcraftCastWatcherIncrementEffect(this);
|
||||
}
|
||||
}
|
||||
|
||||
private class ChooseBlockersRedundancyWatcherIncrementEffect extends OneShotEffect {
|
||||
|
||||
ChooseBlockersRedundancyWatcherIncrementEffect() {
|
||||
super(Outcome.Neutral);
|
||||
}
|
||||
|
||||
ChooseBlockersRedundancyWatcherIncrementEffect(final ChooseBlockersRedundancyWatcherIncrementEffect effect) {
|
||||
super(effect);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean apply(Game game, Ability source) {
|
||||
ChooseBlockersRedundancyWatcher watcher = (ChooseBlockersRedundancyWatcher) game.getState().getWatchers().get(ChooseBlockersRedundancyWatcher.class.getSimpleName());
|
||||
if (watcher != null) {
|
||||
watcher.increment();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChooseBlockersRedundancyWatcherIncrementEffect copy() {
|
||||
return new ChooseBlockersRedundancyWatcherIncrementEffect(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class MasterWarcraftChooseAttackersEffect extends ContinuousRuleModifyingEffectImpl {
|
||||
|
|
@ -197,7 +252,7 @@ class MasterWarcraftChooseBlockersEffect extends ContinuousRuleModifyingEffectIm
|
|||
|
||||
@Override
|
||||
public boolean applies(GameEvent event, Ability source, Game game) {
|
||||
MasterWarcraftCastWatcher watcher = (MasterWarcraftCastWatcher) game.getState().getWatchers().get(MasterWarcraftCastWatcher.class.getSimpleName());
|
||||
ChooseBlockersRedundancyWatcher watcher = (ChooseBlockersRedundancyWatcher) game.getState().getWatchers().get(ChooseBlockersRedundancyWatcher.class.getSimpleName());
|
||||
watcher.decrement();
|
||||
if (watcher.copyCountApply > 0) {
|
||||
game.informPlayers(source.getSourceObject(game).getIdName() + " didn't apply");
|
||||
|
|
@ -254,29 +309,3 @@ class MasterWarcraftCastWatcher extends Watcher {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
class MasterWarcraftCastWatcherIncrementEffect extends OneShotEffect {
|
||||
|
||||
MasterWarcraftCastWatcherIncrementEffect() {
|
||||
super(Outcome.Neutral);
|
||||
}
|
||||
|
||||
MasterWarcraftCastWatcherIncrementEffect(final MasterWarcraftCastWatcherIncrementEffect effect) {
|
||||
super(effect);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean apply(Game game, Ability source) {
|
||||
MasterWarcraftCastWatcher watcher = (MasterWarcraftCastWatcher) game.getState().getWatchers().get(MasterWarcraftCastWatcher.class.getSimpleName());
|
||||
if (watcher != null) {
|
||||
watcher.increment();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public MasterWarcraftCastWatcherIncrementEffect copy() {
|
||||
return new MasterWarcraftCastWatcherIncrementEffect(this);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue