@Override public String getLogName() { if (faceDown) { if (this.isCreature()) { return "face down creature spell"; } else { return "face down spell"; } } return GameLog.getColoredObjectIdName(card); }
@Override public boolean applies(GameEvent event, Ability source, Game game) { Spell spell = game.getStack().getSpell(event.getTargetId()); if (spell != null && spell.isCreature()) { return true; } return false; } }
@Override public boolean applies(GameEvent event, Ability source, Game game) { Spell spell = game.getStack().getSpell(event.getTargetId()); if (spell != null && spell.isCreature()) { return true; } return false; }
@Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.SPELL_CAST) { Spell spell = (Spell) game.getObject(event.getTargetId()); if (spell.isCreature()) { playerIds.add(spell.getControllerId()); } } }
@Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.SPELL_CAST) { Spell spell = (Spell) game.getObject(event.getTargetId()); if (!spell.isCreature()) { playerIds.add(spell.getControllerId()); } } }
@Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.SPELL_CAST) { if (!activeScoutsWarningSpells.isEmpty() && event.getPlayerId().equals(getControllerId())) { Spell spell = game.getStack().getSpell(event.getTargetId()); if (spell != null && spell.isCreature()) { activeScoutsWarningSpells.clear(); } } } }
@Override public void watch(GameEvent event, Game game) { condition = false; if (event.getType() == EventType.SPELL_CAST && event.getPlayerId().equals(controllerId)) { Spell spell = game.getStack().getSpell(event.getTargetId()); if (spell != null && spell.isCreature()) { creatureSpellCount++; if (creatureSpellCount == 2) condition = true; } } }
@Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.SPELL_CAST && event.getZone() == Zone.GRAVEYARD) { Spell spell = (Spell) game.getObject(event.getTargetId()); if (spell.isCreature()) { abilityUsed = true; } } }
@Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.SPELL_CAST) { Spell spell = (Spell) game.getObject(event.getTargetId()); if (spell != null && spell.isCreature()) { playerCreatureSpells.put(event.getPlayerId(), creatureSpellsCastThisTurn(event.getPlayerId()) + 1); } } }
@Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.SPELL_CAST && event.getZone() == Zone.GRAVEYARD) { Spell spell = (Spell) game.getObject(event.getTargetId()); if (spell != null && spell.isCreature() && spell.hasSubtype(SubType.ZOMBIE, game)) { abilityUsed = true; } } }
@Override public boolean applies(Ability abilityToModify, Ability source, Game game) { if (abilityToModify instanceof SpellAbility) { if (abilityToModify.isControlledBy(source.getControllerId())) { Spell spell = (Spell) game.getStack().getStackObject(abilityToModify.getId()); if (spell != null) { return spell.isCreature(); } } } return false; }
@Override public boolean applies(GameEvent event, Ability source, Game game) { choiceValue = (Integer) game.getState().getValue(source.getSourceId().toString()); Spell spell = game.getStack().getSpell(event.getTargetId()); if (spell != null && !spell.isCreature()) { return spell.getConvertedManaCost() == choiceValue; } return false; }
@Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.SPELL_CAST && game.isActivePlayer(event.getPlayerId()) && game.getOpponents(controllerId).contains(event.getPlayerId())) { Spell spell = (Spell) game.getObject(event.getTargetId()); if (spell.isCreature()) { condition = true; } } }
@Override public void watch(GameEvent event, Game game) { if (event.getType() == GameEvent.EventType.SPELL_CAST && ready) { if (uncounterableSpell == null && event.getPlayerId().equals(this.getControllerId())) { Spell spell = game.getStack().getSpell(event.getTargetId()); if (spell != null && (spell.isCreature())) { uncounterableSpell = spell.getId(); ready = false; } } } }
@Override public boolean apply(ObjectPlayer<Controllable> input, Game game) { if (input.getObject() instanceof Spell && ((Spell) input.getObject()).isCreature()) { ConduitOfRuinWatcher watcher = game.getState().getWatcher(ConduitOfRuinWatcher.class); return watcher != null && watcher.creatureSpellsCastThisTurn(input.getPlayerId()) == 0; } return false; }
@Override public boolean checkTrigger(GameEvent event, Game game) { if (game.getOpponents(controllerId).contains(event.getPlayerId())) { Spell spell = game.getStack().getSpell(event.getTargetId()); if (spell != null && !spell.isCreature()){ for (Effect effect : this.getEffects()) { effect.setTargetPointer(new FixedTarget(event.getPlayerId())); } return true; } } return false; }
@Override public boolean checkTrigger(GameEvent event, Game game) { Spell spell = game.getStack().getSpell(event.getTargetId()); if (spell != null && !spell.isCreature()) { for (Effect effect : this.getEffects()) { effect.setTargetPointer(new FixedTarget(event.getPlayerId())); } return true; } return false; }
@Override public boolean checkTrigger(GameEvent event, Game game) { if (event.getPlayerId().equals(this.getControllerId())) { Spell spell = game.getStack().getSpell(event.getTargetId()); if (spell != null && spell.isCreature() && spell.hasSubtype(SubType.DINOSAUR, game)) { getEffects().setTargetPointer(new FixedTarget(spell.getSourceId())); return true; } } return false; }
@Override public boolean checkTrigger(GameEvent event, Game game) { Spell spell = game.getStack().getSpell(event.getTargetId()); if (spell != null && !spell.isCreature()) { for (Effect effect : this.getEffects()) { effect.setTargetPointer(new FixedTarget(event.getPlayerId())); } return true; } return false; }
@Override public boolean checkTrigger(GameEvent event, Game game) { SubType subType = ChooseCreatureTypeEffect.getChosenCreatureType(getSourceId(), game); if (subType != null) { Spell spell = game.getStack().getSpell(event.getTargetId()); if (spell != null && spell.isCreature() && spell.hasSubtype(subType, game) && spell.isControlledBy(getControllerId())) { return true; } } return false; }