diff --git a/Mage.Sets/src/mage/cards/m/MildManneredLibrarian.java b/Mage.Sets/src/mage/cards/m/MildManneredLibrarian.java new file mode 100644 index 00000000000..42664ab1631 --- /dev/null +++ b/Mage.Sets/src/mage/cards/m/MildManneredLibrarian.java @@ -0,0 +1,44 @@ +package mage.cards.m; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.common.ActivateOncePerGameActivatedAbility; +import mage.abilities.costs.mana.ManaCostsImpl; +import mage.abilities.effects.common.DrawCardSourceControllerEffect; +import mage.abilities.effects.common.continuous.AddCardSubTypeSourceEffect; +import mage.abilities.effects.common.counter.AddCountersSourceEffect; +import mage.constants.*; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.counters.CounterType; + +/** + * @author xenohedron + */ +public final class MildManneredLibrarian extends CardImpl { + + public MildManneredLibrarian(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{G}"); + + this.subtype.add(SubType.HUMAN); + this.power = new MageInt(1); + this.toughness = new MageInt(1); + + // {3}{G}: Mild-Mannered Librarian becomes a Werewolf. Put two +1/+1 counters on it and you draw a card. Activate only once. + Ability ability = new ActivateOncePerGameActivatedAbility(Zone.BATTLEFIELD, new AddCardSubTypeSourceEffect(Duration.Custom, SubType.WEREWOLF), + new ManaCostsImpl<>("{3}{G}"), TimingRule.INSTANT); + ability.addEffect(new AddCountersSourceEffect(CounterType.P1P1.createInstance(2)).setText("Put two +1/+1 counters on it")); + ability.addEffect(new DrawCardSourceControllerEffect(1).setText("and you draw a card")); + this.addAbility(ability); + } + + private MildManneredLibrarian(final MildManneredLibrarian card) { + super(card); + } + + @Override + public MildManneredLibrarian copy() { + return new MildManneredLibrarian(this); + } +} diff --git a/Mage.Sets/src/mage/sets/Jumpstart2022.java b/Mage.Sets/src/mage/sets/Jumpstart2022.java index 64dcfb8f7ea..5c5e87ee18f 100644 --- a/Mage.Sets/src/mage/sets/Jumpstart2022.java +++ b/Mage.Sets/src/mage/sets/Jumpstart2022.java @@ -475,6 +475,7 @@ public final class Jumpstart2022 extends ExpansionSet { cards.add(new SetCardInfo("Michiko Konda, Truth Seeker", 215, Rarity.RARE, mage.cards.m.MichikoKondaTruthSeeker.class)); cards.add(new SetCardInfo("Midnight Guard", 216, Rarity.COMMON, mage.cards.m.MidnightGuard.class)); cards.add(new SetCardInfo("Might of the Masses", 690, Rarity.COMMON, mage.cards.m.MightOfTheMasses.class)); + cards.add(new SetCardInfo("Mild-Mannered Librarian", 41, Rarity.UNCOMMON, mage.cards.m.MildManneredLibrarian.class)); cards.add(new SetCardInfo("Military Intelligence", 322, Rarity.UNCOMMON, mage.cards.m.MilitaryIntelligence.class)); cards.add(new SetCardInfo("Miraculous Recovery", 217, Rarity.UNCOMMON, mage.cards.m.MiraculousRecovery.class)); cards.add(new SetCardInfo("Mire Blight", 442, Rarity.COMMON, mage.cards.m.MireBlight.class)); diff --git a/Mage/src/main/java/mage/abilities/effects/common/continuous/AddCardSubTypeSourceEffect.java b/Mage/src/main/java/mage/abilities/effects/common/continuous/AddCardSubTypeSourceEffect.java index 357383fc194..d3fa4d3f4e9 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/continuous/AddCardSubTypeSourceEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/continuous/AddCardSubTypeSourceEffect.java @@ -7,10 +7,12 @@ import mage.abilities.effects.ContinuousEffectImpl; import mage.constants.*; import mage.game.Game; import mage.game.permanent.Permanent; +import mage.util.CardUtil; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; -import java.util.Locale; +import java.util.stream.Collectors; /** * @author TheElk801 @@ -27,9 +29,7 @@ public class AddCardSubTypeSourceEffect extends ContinuousEffectImpl { public AddCardSubTypeSourceEffect(Duration duration, boolean inAddition, SubType... addedSubType) { super(duration, Layer.TypeChangingEffects_4, SubLayer.NA, Outcome.Benefit); this.inAddition = inAddition; - for (SubType cardType : addedSubType) { - this.addedSubTypes.add(cardType); - } + this.addedSubTypes.addAll(Arrays.asList(addedSubType)); } private AddCardSubTypeSourceEffect(final AddCardSubTypeSourceEffect effect) { @@ -71,24 +71,13 @@ public class AddCardSubTypeSourceEffect extends ContinuousEffectImpl { if (staticText != null && !staticText.isEmpty()) { return staticText; } - StringBuilder sb = new StringBuilder(); - sb.append("{this} becomes "); - boolean article = false; - for (SubType subType : addedSubTypes) { - if (!article) { - if (subType.toString().startsWith("A") || subType.toString().startsWith("E")) { - sb.append("an "); - } else { - sb.append("a "); - } - article = true; - } - sb.append(subType.toString().toLowerCase(Locale.ENGLISH)).append(" "); - } - if (inAddition) { - sb.append(" in addition to its other types "); - } - sb.append(this.getDuration().toString()); - return sb.toString(); + String subTypeText = addedSubTypes + .stream() + .map(SubType::toString) + .collect(Collectors.joining(" ")); + return "{this} becomes " + + CardUtil.addArticle(subTypeText) + + (inAddition ? " in addition to its other types" : "") + + (duration.toString().isEmpty() ? "" : ' ' + duration.toString()); } }