forked from External/mage
"Once per game, any time you could cast a sorcery (during your main phase when the stack is empty), you can pay 3 generic mana to put your companion from your sideboard into your hand. This is a special action, not an activated ability."
46 lines
1.1 KiB
Java
46 lines
1.1 KiB
Java
package mage.abilities.keyword;
|
|
|
|
import mage.abilities.SpecialAction;
|
|
import mage.abilities.costs.mana.GenericManaCost;
|
|
import mage.abilities.effects.keyword.CompanionEffect;
|
|
import mage.cards.Card;
|
|
import mage.constants.TimingRule;
|
|
import mage.constants.Zone;
|
|
|
|
import java.util.Set;
|
|
|
|
/*
|
|
* @author emerald000
|
|
*/
|
|
public class CompanionAbility extends SpecialAction {
|
|
|
|
private final CompanionCondition condition;
|
|
|
|
public CompanionAbility(CompanionCondition condition) {
|
|
super(Zone.OUTSIDE);
|
|
this.condition = condition;
|
|
this.addCost(new GenericManaCost(3));
|
|
this.addEffect(new CompanionEffect());
|
|
this.setTiming(TimingRule.SORCERY);
|
|
}
|
|
|
|
private CompanionAbility(final CompanionAbility ability) {
|
|
super(ability);
|
|
this.condition = ability.condition;
|
|
}
|
|
|
|
@Override
|
|
public CompanionAbility copy() {
|
|
return new CompanionAbility(this);
|
|
}
|
|
|
|
@Override
|
|
public String getRule() {
|
|
return "Companion — " + condition.getRule();
|
|
}
|
|
|
|
public boolean isLegal(Set<Card> cards, int startingSize) {
|
|
return condition.isLegal(cards, startingSize);
|
|
}
|
|
}
|
|
|