mirror of
https://github.com/magefree/mage.git
synced 2026-01-26 21:29:17 -08:00
fix Contested Game Ball
This commit is contained in:
parent
933d694b08
commit
d937f7279e
3 changed files with 9 additions and 10 deletions
|
|
@ -89,14 +89,12 @@ class AlelaCunningConquerorTriggeredAbility extends TriggeredAbilityImpl {
|
|||
@Override
|
||||
public boolean checkTrigger(GameEvent event, Game game) {
|
||||
DamagedBatchEvent dEvent = (DamagedBatchEvent) event;
|
||||
if (dEvent == null) {
|
||||
if (!dEvent.isCombatDamage()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
List<DamagedEvent> events = dEvent
|
||||
.getEvents()
|
||||
.stream()
|
||||
.filter(DamagedEvent::isCombatDamage)
|
||||
.filter(e -> {
|
||||
Permanent permanent = game.getPermanentOrLKIBattlefield(e.getSourceId());
|
||||
return permanent != null
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ import mage.constants.Outcome;
|
|||
import mage.constants.Zone;
|
||||
import mage.counters.CounterType;
|
||||
import mage.game.Game;
|
||||
import mage.game.events.DamagedEvent;
|
||||
import mage.game.events.DamagedBatchEvent;
|
||||
import mage.game.events.GameEvent;
|
||||
import mage.game.permanent.Permanent;
|
||||
import mage.game.permanent.token.TreasureToken;
|
||||
|
|
@ -79,15 +79,12 @@ class ContestedGameBallTriggeredAbility extends TriggeredAbilityImpl {
|
|||
|
||||
@Override
|
||||
public boolean checkEventType(GameEvent event, Game game) {
|
||||
return event.getType() == GameEvent.EventType.DAMAGED_PLAYER;
|
||||
return event.getType() == GameEvent.EventType.DAMAGED_BATCH_FOR_ONE_PLAYER;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean checkTrigger(GameEvent event, Game game) {
|
||||
if (event.getTargetId() != this.getControllerId()) {
|
||||
return false;
|
||||
}
|
||||
if (((DamagedEvent) event).isCombatDamage()) {
|
||||
if (((DamagedBatchEvent) event).isCombatDamage() && event.getPlayerId().equals(this.getControllerId())) {
|
||||
this.getAllEffects().setTargetPointer(new FixedTarget(game.getActivePlayerId()));
|
||||
// attacking player is active player
|
||||
return true;
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ public abstract class DamagedBatchEvent extends GameEvent implements BatchGameEv
|
|||
private final Class<? extends DamagedEvent> damageClazz;
|
||||
private final Set<DamagedEvent> events = new HashSet<>();
|
||||
|
||||
public DamagedBatchEvent(EventType type, Class<? extends DamagedEvent> damageClazz) {
|
||||
protected DamagedBatchEvent(EventType type, Class<? extends DamagedEvent> damageClazz) {
|
||||
super(type, null, null, null);
|
||||
this.damageClazz = damageClazz;
|
||||
}
|
||||
|
|
@ -40,6 +40,10 @@ public abstract class DamagedBatchEvent extends GameEvent implements BatchGameEv
|
|||
.sum();
|
||||
}
|
||||
|
||||
public boolean isCombatDamage() {
|
||||
return events.stream().anyMatch(DamagedEvent::isCombatDamage);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Deprecated // events can store a diff value, so search it from events list instead
|
||||
public UUID getTargetId() {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue