Implement [J22] Mild-Mannered Librarian

closes #10031
This commit is contained in:
xenohedron 2023-08-11 23:21:10 -04:00
parent a8d86e1587
commit b0f7f0c78c
3 changed files with 57 additions and 23 deletions

View file

@ -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());
}
}