mirror of
https://github.com/correl/mage.git
synced 2024-11-29 03:00:12 +00:00
Fixed combat information not being preserved in LKI and added unit test
This commit is contained in:
parent
5e67314c96
commit
27d4fb13c3
4 changed files with 49 additions and 4 deletions
|
@ -81,7 +81,7 @@ class DeathTyrantTriggeredAbility extends TriggeredAbilityImpl {
|
||||||
public boolean checkTrigger(GameEvent event, Game game) {
|
public boolean checkTrigger(GameEvent event, Game game) {
|
||||||
ZoneChangeEvent zEvent = (ZoneChangeEvent) event;
|
ZoneChangeEvent zEvent = (ZoneChangeEvent) event;
|
||||||
if (zEvent.isDiesEvent()) {
|
if (zEvent.isDiesEvent()) {
|
||||||
Permanent permanent = zEvent.getTarget();
|
Permanent permanent = game.getPermanentOrLKIBattlefield(zEvent.getTargetId());
|
||||||
if (permanent != null && permanent.isCreature(game)) {
|
if (permanent != null && permanent.isCreature(game)) {
|
||||||
if (permanent.isControlledBy(controllerId) && permanent.isAttacking()) {
|
if (permanent.isControlledBy(controllerId) && permanent.isAttacking()) {
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -0,0 +1,45 @@
|
||||||
|
package org.mage.test.cards.single.afc;
|
||||||
|
|
||||||
|
import mage.constants.PhaseStep;
|
||||||
|
import mage.constants.Zone;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.mage.test.serverside.base.CardTestPlayerBase;
|
||||||
|
|
||||||
|
public class DeathTyrantTest extends CardTestPlayerBase {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void attackerDies() {
|
||||||
|
addCard(Zone.BATTLEFIELD, playerA, "Death Tyrant", 1);
|
||||||
|
addCard(Zone.BATTLEFIELD, playerA, "Grizzly Bears", 1);
|
||||||
|
addCard(Zone.BATTLEFIELD, playerB, "Hill Giant", 1);
|
||||||
|
|
||||||
|
attack(1, playerA, "Grizzly Bears");
|
||||||
|
block(1, playerB, "Hill Giant", "Grizzly Bears");
|
||||||
|
|
||||||
|
setStopAt(1, PhaseStep.POSTCOMBAT_MAIN);
|
||||||
|
execute();
|
||||||
|
|
||||||
|
assertGraveyardCount(playerA, "Grizzly Bears", 1);
|
||||||
|
assertPermanentCount(playerA, "Zombie", 1);
|
||||||
|
assertPermanentCount(playerA, "Death Tyrant", 1);
|
||||||
|
assertPermanentCount(playerB, "Hill Giant", 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void blockerDies() {
|
||||||
|
addCard(Zone.BATTLEFIELD, playerA, "Death Tyrant", 1);
|
||||||
|
addCard(Zone.BATTLEFIELD, playerA, "Hill Giant", 1);
|
||||||
|
addCard(Zone.BATTLEFIELD, playerB, "Grizzly Bears", 1);
|
||||||
|
|
||||||
|
attack(1, playerA, "Hill Giant");
|
||||||
|
block(1, playerB, "Grizzly Bears", "Hill Giant");
|
||||||
|
|
||||||
|
setStopAt(1, PhaseStep.POSTCOMBAT_MAIN);
|
||||||
|
execute();
|
||||||
|
|
||||||
|
assertGraveyardCount(playerB, "Grizzly Bears", 1);
|
||||||
|
assertPermanentCount(playerA, "Zombie", 1);
|
||||||
|
assertPermanentCount(playerA, "Death Tyrant", 1);
|
||||||
|
assertPermanentCount(playerA, "Hill Giant", 1);
|
||||||
|
}
|
||||||
|
}
|
|
@ -382,8 +382,8 @@ public final class ZonesHandler {
|
||||||
} else if (event.getTarget() != null) {
|
} else if (event.getTarget() != null) {
|
||||||
card.setFaceDown(info.faceDown, game);
|
card.setFaceDown(info.faceDown, game);
|
||||||
Permanent target = event.getTarget();
|
Permanent target = event.getTarget();
|
||||||
success = game.getPlayer(target.getControllerId()).removeFromBattlefield(target, source, game)
|
success = target.removeFromZone(game, fromZone, source)
|
||||||
&& target.removeFromZone(game, fromZone, source);
|
&& game.getPlayer(target.getControllerId()).removeFromBattlefield(target, source, game);
|
||||||
} else {
|
} else {
|
||||||
card.setFaceDown(info.faceDown, game);
|
card.setFaceDown(info.faceDown, game);
|
||||||
success = card.removeFromZone(game, fromZone, source);
|
success = card.removeFromZone(game, fromZone, source);
|
||||||
|
|
|
@ -1723,7 +1723,7 @@ public abstract class PermanentImpl extends CardImpl implements Permanent {
|
||||||
Zone fromZone = game.getState().getZone(objectId);
|
Zone fromZone = game.getState().getZone(objectId);
|
||||||
Player controller = game.getPlayer(controllerId);
|
Player controller = game.getPlayer(controllerId);
|
||||||
if (controller != null) {
|
if (controller != null) {
|
||||||
ZoneChangeEvent event = new ZoneChangeEvent(this.copy(), source, controllerId, fromZone, toZone, appliedEffects);
|
ZoneChangeEvent event = new ZoneChangeEvent(this, source, controllerId, fromZone, toZone, appliedEffects);
|
||||||
ZoneChangeInfo zoneChangeInfo;
|
ZoneChangeInfo zoneChangeInfo;
|
||||||
if (toZone == Zone.LIBRARY) {
|
if (toZone == Zone.LIBRARY) {
|
||||||
zoneChangeInfo = new ZoneChangeInfo.Library(event, flag /* put on top */);
|
zoneChangeInfo = new ZoneChangeInfo.Library(event, flag /* put on top */);
|
||||||
|
|
Loading…
Reference in a new issue