mirror of
https://github.com/magefree/mage.git
synced 2025-12-20 10:40:06 -08:00
* 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:
parent
4e862019f6
commit
b6f7efe5e9
3 changed files with 28 additions and 4 deletions
|
|
@ -27,6 +27,7 @@
|
||||||
*/
|
*/
|
||||||
package org.mage.test.cards.abilities.keywords;
|
package org.mage.test.cards.abilities.keywords;
|
||||||
|
|
||||||
|
import mage.abilities.keyword.HasteAbility;
|
||||||
import mage.constants.PhaseStep;
|
import mage.constants.PhaseStep;
|
||||||
import mage.constants.Zone;
|
import mage.constants.Zone;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
@ -120,4 +121,26 @@ public class DashTest extends CardTestPlayerBase {
|
||||||
assertGraveyardCount(playerB, "Geist of the Moors", 1);
|
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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -145,8 +145,8 @@ class UnearthLeavesBattlefieldEffect extends ReplacementEffectImpl {
|
||||||
if (event.getTargetId().equals(source.getSourceId())) {
|
if (event.getTargetId().equals(source.getSourceId())) {
|
||||||
ZoneChangeEvent zEvent = (ZoneChangeEvent) event;
|
ZoneChangeEvent zEvent = (ZoneChangeEvent) event;
|
||||||
if (zEvent.getFromZone() == Zone.BATTLEFIELD && zEvent.getToZone() != Zone.EXILED) {
|
if (zEvent.getFromZone() == Zone.BATTLEFIELD && zEvent.getToZone() != Zone.EXILED) {
|
||||||
// started in graveyard going to battlefield so current zone change counter has to be +1
|
// Only move it to exile if it was this instance that was moved to battlefield with unearth
|
||||||
return source.getSourceObjectZoneChangeCounter() + 1 == game.getState().getZoneChangeCounter(source.getSourceId());
|
return source.getSourceObjectZoneChangeCounter() == game.getState().getZoneChangeCounter(source.getSourceId());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
|
|
||||||
|
|
@ -1521,8 +1521,9 @@ public abstract class GameImpl implements Game, Serializable {
|
||||||
@Override
|
@Override
|
||||||
public void addEffect(ContinuousEffect continuousEffect, Ability source) {
|
public void addEffect(ContinuousEffect continuousEffect, Ability source) {
|
||||||
Ability newAbility = source.copy();
|
Ability newAbility = source.copy();
|
||||||
|
newAbility.setSourceObject(null, this); // Update the source object to the currently existing Object
|
||||||
ContinuousEffect newEffect = continuousEffect.copy();
|
ContinuousEffect newEffect = continuousEffect.copy();
|
||||||
|
|
||||||
newEffect.newId();
|
newEffect.newId();
|
||||||
newEffect.init(newAbility, this);
|
newEffect.init(newAbility, this);
|
||||||
|
|
||||||
|
|
@ -2031,7 +2032,7 @@ public abstract class GameImpl implements Game, Serializable {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// 704.5s If the number of lore counters on a Saga permanent is greater than or equal to its final chapter number
|
// 704.5s If the number of lore counters on a Saga permanent is greater than or equal to its final chapter number
|
||||||
// and it isn’t the source of a chapter ability that has triggered but not yet left the stack, that Saga’s controller sacrifices it.
|
// and it isn’t the source of a chapter ability that has triggered but not yet left the stack, that Saga’s controller sacrifices it.
|
||||||
if (perm.hasSubtype(SubType.SAGA, this)) {
|
if (perm.hasSubtype(SubType.SAGA, this)) {
|
||||||
for (Ability sagaAbility : perm.getAbilities()) {
|
for (Ability sagaAbility : perm.getAbilities()) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue