fix LoseLifeControllerAttachedEffect

resolves #11421
This commit is contained in:
xenohedron 2023-11-18 22:39:00 -05:00
parent 67d9127027
commit f46ac4c5ee

View file

@ -1,4 +1,3 @@
package mage.abilities.effects.common; package mage.abilities.effects.common;
import mage.abilities.Ability; import mage.abilities.Ability;
@ -38,24 +37,21 @@ public class LoseLifeControllerAttachedEffect extends OneShotEffect {
@Override @Override
public boolean apply(Game game, Ability source) { public boolean apply(Game game, Ability source) {
Permanent enchantment = game.getPermanent(source.getSourceId()); Permanent attachment = source.getSourcePermanentOrLKI(game);
if (enchantment == null) { if (attachment == null || attachment.getAttachedTo() == null) {
enchantment = (Permanent) game.getLastKnownInformation(source.getSourceId(), Zone.BATTLEFIELD); return false;
} }
if (enchantment != null && enchantment.getAttachedTo() != null) { Permanent attachedTo = (Permanent) game.getLastKnownInformation(attachment.getAttachedTo(),
Permanent creature = game.getPermanent(enchantment.getAttachedTo()); Zone.BATTLEFIELD, attachment.getAttachedToZoneChangeCounter());
if (creature == null) { if (attachedTo == null) {
creature = (Permanent) game.getLastKnownInformation(source.getSourceId(), Zone.BATTLEFIELD); return false;
}
if (creature != null) {
Player player = game.getPlayer(creature.getControllerId());
if (player != null) {
player.loseLife(amount.calculate(game, source, this), game, source, false);
return true;
}
}
} }
return false; Player player = game.getPlayer(attachedTo.getControllerId());
if (player == null) {
return false;
}
player.loseLife(amount.calculate(game, source, this), game, source, false);
return true;
} }
private void setText() { private void setText() {