fix #11385 - triggers once per turn

even if another effect would cause additional triggers
This commit is contained in:
xenohedron 2023-11-03 20:41:39 -04:00
parent e8b94d566a
commit daecbe2071
3 changed files with 9 additions and 1 deletions

View file

@ -97,7 +97,8 @@ public class TriggeredAbilities extends ConcurrentHashMap<String, TriggeredAbili
NumberOfTriggersEvent numberOfTriggersEvent = new NumberOfTriggersEvent(ability, event);
// event == null - state based triggers like StateTriggeredAbility, must be ignored for number event
if (event == null || !game.replaceEvent(numberOfTriggersEvent, ability)) {
for (int i = 0; i < numberOfTriggersEvent.getAmount(); i++) {
int numTriggers = ability.getTriggersOnceEachTurn() ? 1 : numberOfTriggersEvent.getAmount();
for (int i = 0; i < numTriggers; i++) {
ability.trigger(game, ability.getControllerId(), event);
}
}

View file

@ -33,6 +33,8 @@ public interface TriggeredAbility extends Ability {
TriggeredAbility setTriggersOnceEachTurn(boolean triggersOnce);
boolean getTriggersOnceEachTurn();
TriggeredAbility setDoOnlyOnceEachTurn(boolean doOnlyOnce);
/**

View file

@ -123,6 +123,11 @@ public abstract class TriggeredAbilityImpl extends AbilityImpl implements Trigge
return this;
}
@Override
public boolean getTriggersOnceEachTurn() {
return this.triggersOnceEachTurn;
}
@Override
public TriggeredAbility setDoOnlyOnceEachTurn(boolean doOnlyOnce) {
this.optional = true;