refactor: improved cards hints support for combined triggers like OrTriggeredAbility

This commit is contained in:
Oleg Agafonov 2025-01-22 19:06:05 +04:00
parent 29bab5f614
commit 3f79ffa21a
4 changed files with 35 additions and 0 deletions

View file

@ -8,6 +8,7 @@ import mage.abilities.TriggeredAbility;
import mage.abilities.TriggeredAbilityImpl; import mage.abilities.TriggeredAbilityImpl;
import mage.abilities.effects.Effect; import mage.abilities.effects.Effect;
import mage.abilities.effects.Effects; import mage.abilities.effects.Effects;
import mage.abilities.hint.Hint;
import mage.constants.Duration; import mage.constants.Duration;
import mage.constants.EffectType; import mage.constants.EffectType;
import mage.game.Game; import mage.game.Game;
@ -15,6 +16,7 @@ import mage.game.events.GameEvent;
import mage.util.CardUtil; import mage.util.CardUtil;
import mage.watchers.Watcher; import mage.watchers.Watcher;
import java.util.ArrayList;
import java.util.List; import java.util.List;
/** /**
@ -86,6 +88,13 @@ public class UntilYourNextTurnDelayedTriggeredAbility extends DelayedTriggeredAb
ability.addWatcher(watcher); ability.addWatcher(watcher);
} }
@Override
public List<Hint> getHints() {
List<Hint> res = new ArrayList<>(super.getHints());
res.addAll(ability.getHints());
return res;
}
@Override @Override
public Effects getEffects(Game game, EffectType effectType) { public Effects getEffects(Game game, EffectType effectType) {
return ability.getEffects(game, effectType); return ability.getEffects(game, effectType);

View file

@ -7,6 +7,7 @@ import mage.abilities.TriggeredAbilityImpl;
import mage.abilities.condition.Condition; import mage.abilities.condition.Condition;
import mage.abilities.effects.Effect; import mage.abilities.effects.Effect;
import mage.abilities.effects.Effects; import mage.abilities.effects.Effects;
import mage.abilities.hint.Hint;
import mage.constants.EffectType; import mage.constants.EffectType;
import mage.constants.Zone; import mage.constants.Zone;
import mage.game.Game; import mage.game.Game;
@ -14,6 +15,7 @@ import mage.game.events.GameEvent;
import mage.util.CardUtil; import mage.util.CardUtil;
import mage.watchers.Watcher; import mage.watchers.Watcher;
import java.util.ArrayList;
import java.util.List; import java.util.List;
/** /**
@ -111,6 +113,13 @@ public class ConditionalInterveningIfTriggeredAbility extends TriggeredAbilityIm
ability.addWatcher(watcher); ability.addWatcher(watcher);
} }
@Override
public List<Hint> getHints() {
List<Hint> res = new ArrayList<>(super.getHints());
res.addAll(ability.getHints());
return res;
}
@Override @Override
public Effects getEffects(Game game, EffectType effectType) { public Effects getEffects(Game game, EffectType effectType) {
return ability.getEffects(game, effectType); return ability.getEffects(game, effectType);

View file

@ -8,12 +8,14 @@ import mage.abilities.TriggeredAbilityImpl;
import mage.abilities.condition.Condition; import mage.abilities.condition.Condition;
import mage.abilities.effects.Effect; import mage.abilities.effects.Effect;
import mage.abilities.effects.Effects; import mage.abilities.effects.Effects;
import mage.abilities.hint.Hint;
import mage.constants.EffectType; import mage.constants.EffectType;
import mage.game.Game; import mage.game.Game;
import mage.game.events.GameEvent; import mage.game.events.GameEvent;
import mage.util.CardUtil; import mage.util.CardUtil;
import mage.watchers.Watcher; import mage.watchers.Watcher;
import java.util.ArrayList;
import java.util.List; import java.util.List;
/** /**
@ -106,6 +108,13 @@ public class ConditionalTriggeredAbility extends TriggeredAbilityImpl {
ability.addWatcher(watcher); ability.addWatcher(watcher);
} }
@Override
public List<Hint> getHints() {
List<Hint> res = new ArrayList<>(super.getHints());
res.addAll(ability.getHints());
return res;
}
@Override @Override
public Effects getEffects(Game game, EffectType effectType) { public Effects getEffects(Game game, EffectType effectType) {
return ability.getEffects(game, effectType); return ability.getEffects(game, effectType);

View file

@ -5,6 +5,7 @@ import mage.abilities.Ability;
import mage.abilities.TriggeredAbility; import mage.abilities.TriggeredAbility;
import mage.abilities.TriggeredAbilityImpl; import mage.abilities.TriggeredAbilityImpl;
import mage.abilities.effects.Effect; import mage.abilities.effects.Effect;
import mage.abilities.hint.Hint;
import mage.constants.Zone; import mage.constants.Zone;
import mage.game.Game; import mage.game.Game;
import mage.game.events.GameEvent; import mage.game.events.GameEvent;
@ -126,6 +127,13 @@ public class OrTriggeredAbility extends TriggeredAbilityImpl {
} }
} }
@Override
public List<Hint> getHints() {
List<Hint> res = new ArrayList<>(super.getHints());
this.triggeredAbilities.forEach(a -> res.addAll(a.getHints()));
return res;
}
@Override @Override
public boolean isInUseableZone(Game game, MageObject sourceObject, GameEvent event) { public boolean isInUseableZone(Game game, MageObject sourceObject, GameEvent event) {
boolean res = false; boolean res = false;