2017-08-22 19:36:17 -07:00
|
|
|
package magic.model.event;
|
|
|
|
|
|
|
|
import java.util.Collections;
|
2020-01-15 12:02:42 -08:00
|
|
|
import java.util.Set;
|
2017-08-22 19:36:17 -07:00
|
|
|
|
2020-01-15 12:02:42 -08:00
|
|
|
import magic.model.MagicAbility;
|
|
|
|
import magic.model.MagicColor;
|
2017-08-22 19:36:17 -07:00
|
|
|
import magic.model.MagicGame;
|
|
|
|
import magic.model.MagicPermanent;
|
|
|
|
import magic.model.MagicPermanentList;
|
|
|
|
import magic.model.MagicPlayer;
|
2020-01-15 12:02:42 -08:00
|
|
|
import magic.model.MagicSource;
|
2017-08-22 19:36:17 -07:00
|
|
|
import magic.model.MagicSubType;
|
2020-01-15 12:02:42 -08:00
|
|
|
import magic.model.action.AddStaticAction;
|
2017-08-22 19:36:17 -07:00
|
|
|
import magic.model.choice.MagicColorChoice;
|
|
|
|
import magic.model.mstatic.MagicLayer;
|
|
|
|
import magic.model.mstatic.MagicStatic;
|
|
|
|
|
|
|
|
public class MagicBecomesChosenBasicLand extends MagicEvent {
|
|
|
|
|
|
|
|
private static MagicStatic SUBTYPE(final MagicColor color) {
|
|
|
|
return new MagicStatic(MagicLayer.Type, MagicStatic.UntilEOT) {
|
|
|
|
@Override
|
|
|
|
public void modSubTypeFlags(final MagicPermanent permanent, final Set<MagicSubType> flags) {
|
|
|
|
flags.clear();
|
|
|
|
flags.add(color.getLandSubType());
|
|
|
|
}
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
private static MagicStatic MANA(final MagicColor color) {
|
|
|
|
return new MagicStatic(MagicLayer.Ability, MagicStatic.UntilEOT) {
|
|
|
|
@Override
|
|
|
|
public void modAbilityFlags(final MagicPermanent source, final MagicPermanent permanent, final Set<MagicAbility> flags) {
|
|
|
|
permanent.loseAllAbilities();
|
|
|
|
permanent.addAbility(new MagicTapManaActivation(Collections.singletonList(color.getManaType())));
|
|
|
|
}
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
private static final MagicEventAction action = (final MagicGame game, final MagicEvent event) -> {
|
2017-08-22 19:54:12 -07:00
|
|
|
for (final MagicPermanent it : event.getRefPermanentList()) {
|
|
|
|
game.doAction(new AddStaticAction(it, SUBTYPE(event.getChosenColor())));
|
|
|
|
game.doAction(new AddStaticAction(it, MANA(event.getChosenColor())));
|
|
|
|
}
|
2017-08-22 19:36:17 -07:00
|
|
|
};
|
|
|
|
|
|
|
|
public MagicBecomesChosenBasicLand(final MagicSource source, final MagicPlayer player, final MagicPermanentList permanentList) {
|
|
|
|
super(
|
|
|
|
source,
|
|
|
|
player,
|
|
|
|
MagicColorChoice.ALL_INSTANCE,
|
|
|
|
permanentList,
|
|
|
|
action,
|
|
|
|
"Chosen type$."
|
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|