forked from External/mage
* simulated games was able to change objects from another games (ConcurrentModificationException, related tod202278ccd, details in3a6cdd2615); * AI: fixed cards disappear in multiplayer games with computer (details in #6738);
48 lines
1.2 KiB
Java
48 lines
1.2 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;
|
|
|
|
/**
|
|
* Allows card to be companion
|
|
*
|
|
* @author emerald000
|
|
*/
|
|
public class CompanionAbility extends SpecialAction {
|
|
|
|
private final CompanionCondition companionCondition;
|
|
|
|
public CompanionAbility(CompanionCondition companionCondition) {
|
|
super(Zone.OUTSIDE);
|
|
this.companionCondition = companionCondition;
|
|
this.addCost(new GenericManaCost(3));
|
|
this.addEffect(new CompanionEffect());
|
|
this.setTiming(TimingRule.SORCERY);
|
|
}
|
|
|
|
private CompanionAbility(final CompanionAbility ability) {
|
|
super(ability);
|
|
this.companionCondition = ability.companionCondition;
|
|
}
|
|
|
|
@Override
|
|
public CompanionAbility copy() {
|
|
return new CompanionAbility(this);
|
|
}
|
|
|
|
@Override
|
|
public String getRule() {
|
|
return "Companion — " + companionCondition.getRule();
|
|
}
|
|
|
|
public boolean isLegal(Set<Card> cards, int startingHandSize) {
|
|
return companionCondition.isLegal(cards, startingHandSize);
|
|
}
|
|
}
|
|
|