fix The Raven's Warning

This commit is contained in:
xenohedron 2024-09-08 23:43:24 -04:00
parent d249dcc815
commit 03a83df35a

View file

@ -64,7 +64,7 @@ public final class TheRavensWarning extends CardImpl {
class TheRavensWarningTriggeredAbility extends DelayedTriggeredAbility { class TheRavensWarningTriggeredAbility extends DelayedTriggeredAbility {
public TheRavensWarningTriggeredAbility() { TheRavensWarningTriggeredAbility() {
super(new LookAtTargetPlayerHandEffect(), Duration.EndOfTurn, false); super(new LookAtTargetPlayerHandEffect(), Duration.EndOfTurn, false);
this.addEffect(new DrawCardSourceControllerEffect(1)); this.addEffect(new DrawCardSourceControllerEffect(1));
} }
@ -78,7 +78,6 @@ class TheRavensWarningTriggeredAbility extends DelayedTriggeredAbility {
return new TheRavensWarningTriggeredAbility(this); return new TheRavensWarningTriggeredAbility(this);
} }
// Code based on ControlledCreaturesDealCombatDamagePlayerTriggeredAbility
@Override @Override
public boolean checkEventType(GameEvent event, Game game) { public boolean checkEventType(GameEvent event, Game game) {
return event.getType() == GameEvent.EventType.DAMAGED_BATCH_FOR_ONE_PLAYER; return event.getType() == GameEvent.EventType.DAMAGED_BATCH_FOR_ONE_PLAYER;
@ -86,22 +85,18 @@ class TheRavensWarningTriggeredAbility extends DelayedTriggeredAbility {
@Override @Override
public boolean checkTrigger(GameEvent event, Game game) { public boolean checkTrigger(GameEvent event, Game game) {
DamagedBatchForOnePlayerEvent dEvent = (DamagedBatchForOnePlayerEvent) event; DamagedBatchForOnePlayerEvent dEvent = (DamagedBatchForOnePlayerEvent) event;
if (!dEvent.isCombatDamage()) {
int flyingDamage = dEvent.getEvents() return false;
.stream() }
.filter(ev -> { return dEvent.getEvents().stream()
if (!ev.getSourceId().equals(controllerId)) { .anyMatch(e -> {
return false; Permanent permanent = game.getPermanentOrLKIBattlefield(e.getSourceId());
} return permanent != null
Permanent permanent = game.getPermanentOrLKIBattlefield(ev.getSourceId()); && permanent.isCreature(game)
return permanent != null && permanent.isCreature() && permanent.hasAbility(FlyingAbility.getInstance(), game); && permanent.isControlledBy(this.getControllerId())
}) && permanent.hasAbility(FlyingAbility.getInstance(), game);
.mapToInt(GameEvent::getAmount) });
.sum();
return flyingDamage > 0 && dEvent.isCombatDamage();
} }
@Override @Override