package mage.abilities.keyword; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.effects.common.CreateTokenEffect; import mage.constants.CardType; import mage.game.Game; import mage.game.permanent.Permanent; import mage.game.permanent.token.Token; import mage.players.Player; public class LivingWeaponAbility extends EntersBattlefieldTriggeredAbility { public LivingWeaponAbility() { super(new LivingWeaponEffect()); } public LivingWeaponAbility(final LivingWeaponAbility ability) { super(ability); } @Override public String getRule() { return "Living weapon (When this Equipment enters the battlefield, put a 0/0 black Germ creature token onto the battlefield, then attach this to it.)"; } @Override public EntersBattlefieldTriggeredAbility copy() { return new LivingWeaponAbility(this); } } class LivingWeaponEffect extends CreateTokenEffect { LivingWeaponEffect() { super(new GermToken()); } LivingWeaponEffect(final LivingWeaponEffect effect) { super(effect); } @Override public boolean apply(Game game, Ability source) { Player controller = game.getPlayer(source.getControllerId()); if (controller != null) { if (super.apply(game, source)) { Permanent p = game.getPermanent(this.getLastAddedTokenId()); if (p != null) { p.addAttachment(source.getSourceId(), game); return true; } } } return false; } @Override public LivingWeaponEffect copy() { return new LivingWeaponEffect(this); } } class GermToken extends Token { final static private List tokenImageSets = new ArrayList<>(); static { tokenImageSets.addAll(Arrays.asList("C14", "MBS", "MM2")); } public GermToken() { super("Germ", "a 0/0 black Germ creature token"); availableImageSetCodes = tokenImageSets; cardType.add(CardType.CREATURE); color.setBlack(true); subtype.add("Germ"); power = new MageInt(0); toughness = new MageInt(0); } }