mirror of
https://github.com/magefree/mage.git
synced 2026-01-26 21:29:17 -08:00
refactor: fixed dies events support in single cards (part 5);
This commit is contained in:
parent
740a9347ae
commit
6d55e4b9e6
25 changed files with 262 additions and 13 deletions
|
|
@ -8,7 +8,9 @@ import mage.constants.AbilityType;
|
|||
import mage.constants.AbilityWord;
|
||||
import mage.constants.Zone;
|
||||
import mage.game.Game;
|
||||
import mage.game.events.BatchEvent;
|
||||
import mage.game.events.GameEvent;
|
||||
import mage.game.events.ZoneChangeBatchEvent;
|
||||
import mage.game.events.ZoneChangeEvent;
|
||||
import mage.game.permanent.Permanent;
|
||||
import mage.game.permanent.PermanentToken;
|
||||
|
|
@ -465,8 +467,14 @@ public abstract class TriggeredAbilityImpl extends AbilityImpl implements Trigge
|
|||
public static boolean isInUseableZoneDiesTrigger(TriggeredAbility source, GameEvent event, Game game) {
|
||||
// runtime check: wrong trigger settings
|
||||
if (!source.isLeavesTheBattlefieldTrigger()) {
|
||||
// TODO: enable after fix
|
||||
// throw new IllegalArgumentException("Wrong code usage: all dies triggers must use setLeavesTheBattlefieldTrigger(true)");
|
||||
throw new IllegalArgumentException("Wrong code usage: all dies triggers must use setLeavesTheBattlefieldTrigger(true) and override isInUseableZone - "
|
||||
+ source.getSourceObject(game) + " - " + source);
|
||||
}
|
||||
|
||||
// runtime check: wrong isInUseableZone for batch related triggers
|
||||
if (event instanceof BatchEvent) {
|
||||
throw new IllegalArgumentException("Wrong code usage: batch events unsupported here, possible miss of override isInUseableZone - "
|
||||
+ source.getSourceObject(game) + " - " + source);
|
||||
}
|
||||
|
||||
// Get the source permanent of the ability
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@ public class DiesOneOrMoreTriggeredAbility extends TriggeredAbilityImpl implemen
|
|||
super(Zone.BATTLEFIELD, effect, optional);
|
||||
this.filter = filter;
|
||||
this.setTriggerPhrase("Whenever one or more " + filter.getMessage() + " die, ");
|
||||
setLeavesTheBattlefieldTrigger(true);
|
||||
}
|
||||
|
||||
private DiesOneOrMoreTriggeredAbility(final DiesOneOrMoreTriggeredAbility ability) {
|
||||
|
|
@ -59,6 +60,6 @@ public class DiesOneOrMoreTriggeredAbility extends TriggeredAbilityImpl implemen
|
|||
return ((ZoneChangeBatchEvent) event)
|
||||
.getEvents()
|
||||
.stream()
|
||||
.allMatch(e -> TriggeredAbilityImpl.isInUseableZoneDiesTrigger(this, e, game));
|
||||
.anyMatch(e -> TriggeredAbilityImpl.isInUseableZoneDiesTrigger(this, e, game));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue