tests: added runtime check for OrTriggeredAbility (related to #12826, 13309)

This commit is contained in:
Oleg Agafonov 2025-02-07 14:34:45 +04:00
parent a63ad8f99c
commit 9f2cfc9e09

View file

@ -42,7 +42,7 @@ public class OrTriggeredAbility extends TriggeredAbilityImpl {
//Remove useless data //Remove useless data
ability.getEffects().clear(); ability.getEffects().clear();
for(Watcher watcher : ability.getWatchers()) { for (Watcher watcher : ability.getWatchers()) {
super.addWatcher(watcher); super.addWatcher(watcher);
} }
@ -51,6 +51,21 @@ public class OrTriggeredAbility extends TriggeredAbilityImpl {
} }
} }
setTriggerPhrase(generateTriggerPhrase()); setTriggerPhrase(generateTriggerPhrase());
// runtime check: enters and sacrifice must use Zone.ALL, see https://github.com/magefree/mage/issues/12826
boolean haveEnters = false;
boolean haveSacrifice = false;
for (Ability ability : abilities) {
if (ability.getRule().toLowerCase(Locale.ENGLISH).contains("enters")) {
haveEnters = true;
}
if (ability.getRule().toLowerCase(Locale.ENGLISH).contains("sacrifice")) {
haveSacrifice = true;
}
}
if (zone != Zone.ALL && haveEnters && haveSacrifice) {
throw new IllegalArgumentException("Wrong code usage: on enters and sacrifice OrTriggeredAbility must use Zone.ALL");
}
} }
public OrTriggeredAbility(OrTriggeredAbility ability) { public OrTriggeredAbility(OrTriggeredAbility ability) {