forked from External/mage
* added function for casting spells with specific attributes from a selection of cards * updated cascade to use new method * refactored various cards to use new methods * added TestPlayer method * fixed a small error * text fix * broke out some repeated code * added missing notTarget setting * add additional retain zone check * some more cards refactored * more refactoring * added interface for split/modal cards * reworked spell casting methods * reworked multiple cast to prevent unnecessary dialogs * fixed test failures due to change in functionality * add AI code * small nonfunctional change * reworked Kaya, the Inexorable * added currently failing test * added more tests * updated Geode Golem implementation * fixed adventure/cascade interaction, added/updated tests * some nonfunctional refactoring * added interface for subcards * [AFC] Implemented Fevered Suspicion * [AFC] Implemented Extract Brain * [AFC] updated Arcane Endeavor implementation * [C17] reworked implementation of Izzet Chemister * [ZEN] reworked implemented of Chandra Ablaze * additional merge fix * [SLD] updated Eleven, the Mage * [NEO] Implemented Discover the Impossible * [NEO] Implemented The Dragon-Kami Reborn / Dragon-Kami's Egg * [NEO] Implemented Invoke Calamity * [AFR] Implemented Rod of Absorption * [VOC] Implemented Spectral Arcanist * [VOC] added additional printings * [NEO] added all variants * [SLD] updated implementation of Ken, Burning Brawler
55 lines
1.9 KiB
Java
55 lines
1.9 KiB
Java
package mage.cards.o;
|
|
|
|
import mage.MageInt;
|
|
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
|
import mage.abilities.condition.common.TributeNotPaidCondition;
|
|
import mage.abilities.decorator.ConditionalInterveningIfTriggeredAbility;
|
|
import mage.abilities.effects.common.cost.CastFromHandForFreeEffect;
|
|
import mage.abilities.keyword.HasteAbility;
|
|
import mage.abilities.keyword.TributeAbility;
|
|
import mage.cards.CardImpl;
|
|
import mage.cards.CardSetInfo;
|
|
import mage.constants.CardType;
|
|
import mage.constants.SubType;
|
|
import mage.filter.StaticFilters;
|
|
|
|
import java.util.UUID;
|
|
|
|
/**
|
|
* @author LevelX2
|
|
*/
|
|
public final class OracleOfBones extends CardImpl {
|
|
|
|
public OracleOfBones(UUID ownerId, CardSetInfo setInfo) {
|
|
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}{R}");
|
|
this.subtype.add(SubType.MINOTAUR);
|
|
this.subtype.add(SubType.SHAMAN);
|
|
|
|
this.power = new MageInt(3);
|
|
this.toughness = new MageInt(1);
|
|
|
|
// Haste
|
|
this.addAbility(HasteAbility.getInstance());
|
|
// Tribute 2
|
|
this.addAbility(new TributeAbility(2));
|
|
// When Oracle of Bones enters the battlefield, if tribute wasn't paid,
|
|
// you may cast an instant or sorcery card from your hand without paying its mana cost.
|
|
this.addAbility(new ConditionalInterveningIfTriggeredAbility(
|
|
new EntersBattlefieldTriggeredAbility(new CastFromHandForFreeEffect(
|
|
StaticFilters.FILTER_CARD_INSTANT_OR_SORCERY
|
|
), false),
|
|
TributeNotPaidCondition.instance, "When {this} enters the battlefield, " +
|
|
"if its tribute wasn't paid, you may cast an instant or " +
|
|
"sorcery spell from your hand without paying its mana cost."
|
|
));
|
|
}
|
|
|
|
private OracleOfBones(final OracleOfBones card) {
|
|
super(card);
|
|
}
|
|
|
|
@Override
|
|
public OracleOfBones copy() {
|
|
return new OracleOfBones(this);
|
|
}
|
|
}
|