foul-magics/Mage/src/main/java/mage/game/command/emblems/NarsetTranscendentEmblem.java
Evan Kranzler 572104b8fc
Reworking card types in preparation for implementing Grist, the Hunger Tide (#7899)
Co-authored-by: Oleg Agafonov <jaydi85@gmail.com>
2021-07-09 07:28:43 +04:00

78 lines
2.3 KiB
Java

package mage.game.command.emblems;
import mage.MageObject;
import mage.abilities.Ability;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.ContinuousRuleModifyingEffectImpl;
import mage.cards.Card;
import mage.constants.Duration;
import mage.constants.Outcome;
import mage.constants.Zone;
import mage.game.Game;
import mage.game.command.Emblem;
import mage.game.events.GameEvent;
import mage.players.Player;
/**
*
* @author spjspj
*/
public final class NarsetTranscendentEmblem extends Emblem {
// "Your opponents can't cast noncreature spells.
public NarsetTranscendentEmblem() {
this.setName("Emblem Narset");
this.getAbilities().add(new SimpleStaticAbility(Zone.COMMAND, new NarsetTranscendentCantCastEffect()));
}
}
class NarsetTranscendentCantCastEffect extends ContinuousRuleModifyingEffectImpl {
public NarsetTranscendentCantCastEffect() {
super(Duration.EndOfGame, Outcome.Benefit);
staticText = "Your opponents can't cast noncreature spells";
}
public NarsetTranscendentCantCastEffect(final NarsetTranscendentCantCastEffect effect) {
super(effect);
}
@Override
public NarsetTranscendentCantCastEffect copy() {
return new NarsetTranscendentCantCastEffect(this);
}
@Override
public boolean apply(Game game, Ability source) {
return true;
}
@Override
public String getInfoMessage(Ability source, GameEvent event, Game game) {
MageObject mageObject = game.getObject(source.getSourceId());
if (mageObject != null) {
return "You can't cast can't cast noncreature spells (it is prevented by emblem of " + mageObject.getLogName() + ')';
}
return null;
}
@Override
public boolean checksEventType(GameEvent event, Game game) {
return event.getType() == GameEvent.EventType.CAST_SPELL;
}
@Override
public boolean applies(GameEvent event, Ability source, Game game) {
Player controller = game.getPlayer(source.getControllerId());
if (controller != null && controller.hasOpponent(event.getPlayerId(), game)) {
Card card = game.getCard(event.getSourceId());
if (card != null && !card.isCreature(game)) {
return true;
}
}
return false;
}
}