fixed trample and deathtouch not working when deathtouch is gained by an outside source (fixes #7633)

This commit is contained in:
Evan Kranzler 2021-02-28 09:34:09 -05:00
parent 2daf1945e7
commit 6091c7eae3
2 changed files with 21 additions and 1 deletions

View file

@ -180,4 +180,21 @@ public class DamageDistributionTest extends CardTestPlayerBase {
assertLife(playerB, 20); assertLife(playerB, 20);
} }
@Test
public void testTrampleDeathtouch() {
addCard(Zone.BATTLEFIELD, playerA, "Swamp", 2);
addCard(Zone.BATTLEFIELD, playerA, "Colossal Dreadmaw");
addCard(Zone.BATTLEFIELD, playerB, "Colossapede");
addCard(Zone.HAND, playerA, "Bladebrand");
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Bladebrand", "Colossal Dreadmaw");
attack(1, playerA, "Colossal Dreadmaw");
block(1, playerB, "Colossapede", "Colossal Dreadmaw");
setStopAt(1, PhaseStep.END_TURN);
execute();
assertLife(playerB, 20 - 5);
}
} }

View file

@ -1038,7 +1038,10 @@ public abstract class PermanentImpl extends CardImpl implements Permanent {
lethal = Math.min(lethal, toughness.getValue()); lethal = Math.min(lethal, toughness.getValue());
} }
lethal = Math.max(lethal - this.damage, 0); lethal = Math.max(lethal - this.damage, 0);
Card attacker = game.getCard(attackerId); Card attacker = game.getPermanent(attackerId);
if (attacker == null) {
attacker = game.getCard(attackerId);
}
if (attacker != null && attacker.getAbilities(game).containsKey(DeathtouchAbility.getInstance().getId())) { if (attacker != null && attacker.getAbilities(game).containsKey(DeathtouchAbility.getInstance().getId())) {
lethal = Math.min(1, lethal); lethal = Math.min(1, lethal);
} }