* Fixed a problem with Dash not giving Haste to the creature beginning with the second use of Dash (fixes #4985).

This commit is contained in:
LevelX2 2018-05-30 16:51:59 +02:00
parent 4e862019f6
commit b6f7efe5e9
3 changed files with 28 additions and 4 deletions

View file

@ -27,6 +27,7 @@
*/
package org.mage.test.cards.abilities.keywords;
import mage.abilities.keyword.HasteAbility;
import mage.constants.PhaseStep;
import mage.constants.Zone;
import org.junit.Test;
@ -120,4 +121,26 @@ public class DashTest extends CardTestPlayerBase {
assertGraveyardCount(playerB, "Geist of the Moors", 1);
}
/**
* Test that the creature got Dash again if cast again
*/
@Test
public void testDashedCreatureDiesInCombatAndIsLaterRecast() {
addCard(Zone.BATTLEFIELD, playerA, "Mountain", 2);
addCard(Zone.HAND, playerA, "Screamreach Brawler"); // 2/3
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Screamreach Brawler");
setChoice(playerA, "Yes");
attack(1, playerA, "Screamreach Brawler");
castSpell(3, PhaseStep.PRECOMBAT_MAIN, playerA, "Screamreach Brawler");
setStopAt(3, PhaseStep.BEGIN_COMBAT);
execute();
assertLife(playerB, 18);
assertPermanentCount(playerA, "Screamreach Brawler", 1);
assertHandCount(playerA, "Screamreach Brawler", 0);
assertAbility(playerA, "Screamreach Brawler", HasteAbility.getInstance(), true);
}
}

View file

@ -145,8 +145,8 @@ class UnearthLeavesBattlefieldEffect extends ReplacementEffectImpl {
if (event.getTargetId().equals(source.getSourceId())) {
ZoneChangeEvent zEvent = (ZoneChangeEvent) event;
if (zEvent.getFromZone() == Zone.BATTLEFIELD && zEvent.getToZone() != Zone.EXILED) {
// started in graveyard going to battlefield so current zone change counter has to be +1
return source.getSourceObjectZoneChangeCounter() + 1 == game.getState().getZoneChangeCounter(source.getSourceId());
// Only move it to exile if it was this instance that was moved to battlefield with unearth
return source.getSourceObjectZoneChangeCounter() == game.getState().getZoneChangeCounter(source.getSourceId());
}
}
return false;

View file

@ -1521,8 +1521,9 @@ public abstract class GameImpl implements Game, Serializable {
@Override
public void addEffect(ContinuousEffect continuousEffect, Ability source) {
Ability newAbility = source.copy();
newAbility.setSourceObject(null, this); // Update the source object to the currently existing Object
ContinuousEffect newEffect = continuousEffect.copy();
newEffect.newId();
newEffect.init(newAbility, this);