From c0e10f05696232e0c87b1b87cb6afd282db5c3ee Mon Sep 17 00:00:00 2001 From: theelk801 Date: Wed, 12 Nov 2025 10:17:13 -0500 Subject: [PATCH] [TLA] Implement Lo and Li, Twin Tutors --- .../src/mage/cards/l/LoAndLiTwinTutors.java | 75 +++++++++++++++++++ .../src/mage/sets/AvatarTheLastAirbender.java | 1 + 2 files changed, 76 insertions(+) create mode 100644 Mage.Sets/src/mage/cards/l/LoAndLiTwinTutors.java diff --git a/Mage.Sets/src/mage/cards/l/LoAndLiTwinTutors.java b/Mage.Sets/src/mage/cards/l/LoAndLiTwinTutors.java new file mode 100644 index 00000000000..0a7fd5d7a44 --- /dev/null +++ b/Mage.Sets/src/mage/cards/l/LoAndLiTwinTutors.java @@ -0,0 +1,75 @@ +package mage.cards.l; + +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.common.EntersBattlefieldTriggeredAbility; +import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.effects.common.continuous.GainAbilityControlledEffect; +import mage.abilities.effects.common.continuous.GainAbilityControlledSpellsEffect; +import mage.abilities.effects.common.search.SearchLibraryPutInHandEffect; +import mage.abilities.keyword.LifelinkAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.SubType; +import mage.constants.SuperType; +import mage.filter.FilterCard; +import mage.filter.FilterPermanent; +import mage.filter.common.FilterCreaturePermanent; +import mage.filter.common.FilterNonlandCard; +import mage.filter.predicate.Predicates; +import mage.target.common.TargetCardInLibrary; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class LoAndLiTwinTutors extends CardImpl { + + private static final FilterCard filter = new FilterCard("a Lesson or Noble card"); + private static final FilterPermanent filter2 = new FilterCreaturePermanent(SubType.NOBLE, ""); + private static final FilterNonlandCard filter3 = new FilterNonlandCard("Lesson spells you control"); + + static { + filter.add(Predicates.or( + SubType.LESSON.getPredicate(), + SubType.NOBLE.getPredicate() + )); + filter3.add(SubType.LESSON.getPredicate()); + } + + public LoAndLiTwinTutors(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{B}"); + + this.supertype.add(SuperType.LEGENDARY); + this.subtype.add(SubType.HUMAN); + this.subtype.add(SubType.ADVISOR); + this.power = new MageInt(2); + this.toughness = new MageInt(2); + + // When Lo and Li enter, search your library for a Lesson or Noble card, reveal it, put it into your hand, then shuffle. + this.addAbility(new EntersBattlefieldTriggeredAbility( + new SearchLibraryPutInHandEffect(new TargetCardInLibrary(filter), true) + ).setTriggerPhrase("When {this} enter, ")); + + // Noble creatures you control and Lesson spells you control have lifelink. + Ability ability = new SimpleStaticAbility(new GainAbilityControlledEffect( + LifelinkAbility.getInstance(), Duration.WhileOnBattlefield, filter2 + ).setText("Noble creatures you control")); + ability.addEffect(new GainAbilityControlledSpellsEffect( + LifelinkAbility.getInstance(), filter3 + ).concatBy("and")); + this.addAbility(ability); + } + + private LoAndLiTwinTutors(final LoAndLiTwinTutors card) { + super(card); + } + + @Override + public LoAndLiTwinTutors copy() { + return new LoAndLiTwinTutors(this); + } +} diff --git a/Mage.Sets/src/mage/sets/AvatarTheLastAirbender.java b/Mage.Sets/src/mage/sets/AvatarTheLastAirbender.java index e6e834b21c0..b587ea004e8 100644 --- a/Mage.Sets/src/mage/sets/AvatarTheLastAirbender.java +++ b/Mage.Sets/src/mage/sets/AvatarTheLastAirbender.java @@ -203,6 +203,7 @@ public final class AvatarTheLastAirbender extends ExpansionSet { cards.add(new SetCardInfo("Kyoshi Warriors", 26, Rarity.COMMON, mage.cards.k.KyoshiWarriors.class)); cards.add(new SetCardInfo("Leaves from the Vine", 185, Rarity.UNCOMMON, mage.cards.l.LeavesFromTheVine.class)); cards.add(new SetCardInfo("Lightning Strike", 146, Rarity.COMMON, mage.cards.l.LightningStrike.class)); + cards.add(new SetCardInfo("Lo and Li, Twin Tutors", 108, Rarity.UNCOMMON, mage.cards.l.LoAndLiTwinTutors.class)); cards.add(new SetCardInfo("Long Feng, Grand Secretariat", 233, Rarity.UNCOMMON, mage.cards.l.LongFengGrandSecretariat.class)); cards.add(new SetCardInfo("Mai, Jaded Edge", 147, Rarity.UNCOMMON, mage.cards.m.MaiJadedEdge.class)); cards.add(new SetCardInfo("Mai, Scornful Striker", 109, Rarity.RARE, mage.cards.m.MaiScornfulStriker.class, NON_FULL_USE_VARIOUS));