forked from External/mage
fix Stalwart Successor checking permanents entering
This commit is contained in:
parent
c16b3d6056
commit
b0ee19d782
2 changed files with 59 additions and 1 deletions
|
|
@ -78,14 +78,19 @@ class StalwartSuccessorTriggeredAbility extends TriggeredAbilityImpl {
|
|||
|
||||
@Override
|
||||
public boolean checkTrigger(GameEvent event, Game game) {
|
||||
int zccOffset = 0;
|
||||
Permanent permanent = game.getPermanent(event.getTargetId());
|
||||
if (permanent == null) {
|
||||
permanent = game.getPermanentEntering(event.getTargetId());
|
||||
zccOffset = 1;
|
||||
}
|
||||
if (permanent == null
|
||||
|| !permanent.isCreature(game)
|
||||
|| !permanent.isControlledBy(getControllerId())
|
||||
|| !StalwartSuccessorWatcher.checkCreature(permanent, event, game)) {
|
||||
return false;
|
||||
}
|
||||
this.getEffects().setTargetPointer(new FixedTarget(permanent, game));
|
||||
this.getEffects().setTargetPointer(new FixedTarget(permanent.getId(), permanent.getZoneChangeCounter(game) + zccOffset));
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
@ -101,6 +106,11 @@ class StalwartSuccessorWatcher extends Watcher {
|
|||
@Override
|
||||
public void watch(GameEvent event, Game game) {
|
||||
if (event.getType() == GameEvent.EventType.COUNTERS_ADDED) {
|
||||
if (game.getPermanent(event.getTargetId()) == null) {
|
||||
// permanent entering
|
||||
Permanent permanent = game.getPermanentEntering(event.getTargetId());
|
||||
map.putIfAbsent(new MageObjectReference(event.getTargetId(), permanent.getZoneChangeCounter(game) + 1, game), event.getId());
|
||||
}
|
||||
map.putIfAbsent(new MageObjectReference(event.getTargetId(), game), event.getId());
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,48 @@
|
|||
package org.mage.test.cards.single.tdm;
|
||||
|
||||
import mage.constants.PhaseStep;
|
||||
import mage.constants.Zone;
|
||||
import mage.counters.CounterType;
|
||||
import org.junit.Test;
|
||||
import org.mage.test.serverside.base.CardTestPlayerBase;
|
||||
|
||||
public class StalwartSuccessorTest extends CardTestPlayerBase {
|
||||
|
||||
/*
|
||||
Stalwart Successor
|
||||
{1}{B}{G}
|
||||
Creature — Human Warrior
|
||||
|
||||
Menace (This creature can’t be blocked except by two or more creatures.)
|
||||
|
||||
Whenever one or more counters are put on a creature you control, if it’s the first time counters have been put on that creature this turn, put a +1/+1 counter on that creature.
|
||||
|
||||
3/2
|
||||
*/
|
||||
private static final String stalwartSuccessor = "Stalwart Successor";
|
||||
/*
|
||||
Purestrain Genestealer
|
||||
{2}{G}
|
||||
Creature — Tyranid
|
||||
|
||||
This creature enters with two +1/+1 counters on it.
|
||||
|
||||
Vanguard Species — Whenever this creature attacks, you may remove a +1/+1 counter from it. If you do, search your library for a basic land card, put it onto the battlefield tapped, then shuffle.
|
||||
|
||||
1/1
|
||||
*/
|
||||
private static final String purestrainGenestealer = "Purestrain Genestealer";
|
||||
@Test
|
||||
public void testStalwartSuccessor() {
|
||||
|
||||
addCard(Zone.BATTLEFIELD, playerA, stalwartSuccessor);
|
||||
addCard(Zone.BATTLEFIELD, playerA, "Forest", 3);
|
||||
addCard(Zone.HAND, playerA, purestrainGenestealer);
|
||||
|
||||
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, purestrainGenestealer);
|
||||
setStopAt(1, PhaseStep.END_TURN);
|
||||
execute();
|
||||
|
||||
assertCounterCount(playerA, purestrainGenestealer, CounterType.P1P1, 2 + 1);
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue