mirror of
https://github.com/magefree/mage.git
synced 2025-12-22 03:22:00 -08:00
parent
a8d86e1587
commit
b0f7f0c78c
3 changed files with 57 additions and 23 deletions
44
Mage.Sets/src/mage/cards/m/MildManneredLibrarian.java
Normal file
44
Mage.Sets/src/mage/cards/m/MildManneredLibrarian.java
Normal file
|
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -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("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("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("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("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("Miraculous Recovery", 217, Rarity.UNCOMMON, mage.cards.m.MiraculousRecovery.class));
|
||||||
cards.add(new SetCardInfo("Mire Blight", 442, Rarity.COMMON, mage.cards.m.MireBlight.class));
|
cards.add(new SetCardInfo("Mire Blight", 442, Rarity.COMMON, mage.cards.m.MireBlight.class));
|
||||||
|
|
|
||||||
|
|
@ -7,10 +7,12 @@ import mage.abilities.effects.ContinuousEffectImpl;
|
||||||
import mage.constants.*;
|
import mage.constants.*;
|
||||||
import mage.game.Game;
|
import mage.game.Game;
|
||||||
import mage.game.permanent.Permanent;
|
import mage.game.permanent.Permanent;
|
||||||
|
import mage.util.CardUtil;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Locale;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author TheElk801
|
* @author TheElk801
|
||||||
|
|
@ -27,9 +29,7 @@ public class AddCardSubTypeSourceEffect extends ContinuousEffectImpl {
|
||||||
public AddCardSubTypeSourceEffect(Duration duration, boolean inAddition, SubType... addedSubType) {
|
public AddCardSubTypeSourceEffect(Duration duration, boolean inAddition, SubType... addedSubType) {
|
||||||
super(duration, Layer.TypeChangingEffects_4, SubLayer.NA, Outcome.Benefit);
|
super(duration, Layer.TypeChangingEffects_4, SubLayer.NA, Outcome.Benefit);
|
||||||
this.inAddition = inAddition;
|
this.inAddition = inAddition;
|
||||||
for (SubType cardType : addedSubType) {
|
this.addedSubTypes.addAll(Arrays.asList(addedSubType));
|
||||||
this.addedSubTypes.add(cardType);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private AddCardSubTypeSourceEffect(final AddCardSubTypeSourceEffect effect) {
|
private AddCardSubTypeSourceEffect(final AddCardSubTypeSourceEffect effect) {
|
||||||
|
|
@ -71,24 +71,13 @@ public class AddCardSubTypeSourceEffect extends ContinuousEffectImpl {
|
||||||
if (staticText != null && !staticText.isEmpty()) {
|
if (staticText != null && !staticText.isEmpty()) {
|
||||||
return staticText;
|
return staticText;
|
||||||
}
|
}
|
||||||
StringBuilder sb = new StringBuilder();
|
String subTypeText = addedSubTypes
|
||||||
sb.append("{this} becomes ");
|
.stream()
|
||||||
boolean article = false;
|
.map(SubType::toString)
|
||||||
for (SubType subType : addedSubTypes) {
|
.collect(Collectors.joining(" "));
|
||||||
if (!article) {
|
return "{this} becomes "
|
||||||
if (subType.toString().startsWith("A") || subType.toString().startsWith("E")) {
|
+ CardUtil.addArticle(subTypeText)
|
||||||
sb.append("an ");
|
+ (inAddition ? " in addition to its other types" : "")
|
||||||
} else {
|
+ (duration.toString().isEmpty() ? "" : ' ' + duration.toString());
|
||||||
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();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue