mirror of
https://github.com/correl/mage.git
synced 2024-11-15 11:09:30 +00:00
Some changes/fixes to Praetors's Grasp and Bane Alley Broker, to handle face down cards.
This commit is contained in:
parent
48f1560cb8
commit
1df4946135
2 changed files with 53 additions and 11 deletions
|
@ -104,7 +104,7 @@ public class BaneAlleyBroker extends CardImpl<BaneAlleyBroker> {
|
|||
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BaneAlleyBrokerDrawExileEffect(), new TapSourceCost()));
|
||||
|
||||
// You may look at cards exiled with Bane Alley Broker.
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BaneAlleyBrokerLookAtCardEffect(this.getId())));
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BaneAlleyBrokerLookAtCardEffect()));
|
||||
|
||||
// {U}{B}, {tap}: Return a card exiled with Bane Alley Broker to its owner's hand.
|
||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new ReturnToHandTargetEffect(), new ManaCostsImpl("{U}{B}"));
|
||||
|
@ -227,17 +227,13 @@ class TargetCardInBaneAlleyBrokerExile extends TargetCard<TargetCardInBaneAlleyB
|
|||
|
||||
class BaneAlleyBrokerLookAtCardEffect extends AsThoughEffectImpl<BaneAlleyBrokerLookAtCardEffect> {
|
||||
|
||||
private UUID cardId;
|
||||
|
||||
public BaneAlleyBrokerLookAtCardEffect(UUID cardId) {
|
||||
super(AsThoughEffectType.CAST, Duration.EndOfGame, Outcome.Benefit);
|
||||
this.cardId = cardId;
|
||||
public BaneAlleyBrokerLookAtCardEffect() {
|
||||
super(AsThoughEffectType.REVEAL_FACE_DOWN, Duration.EndOfGame, Outcome.Benefit);
|
||||
staticText = "You may look at cards exiled with {this}";
|
||||
}
|
||||
|
||||
public BaneAlleyBrokerLookAtCardEffect(final BaneAlleyBrokerLookAtCardEffect effect) {
|
||||
super(effect);
|
||||
this.cardId = effect.cardId;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -103,11 +103,11 @@ class PraetorsGraspEffect extends OneShotEffect<PraetorsGraspEffect> {
|
|||
card.setControllerId(player.getId());
|
||||
card.moveToExile(getId(), "Praetor's Grasp", source.getSourceId(), game);
|
||||
game.addEffect(new PraetorsGraspPlayEffect(card.getId()), source);
|
||||
game.addEffect(new PraetorsGraspRevealEffect(card.getId()), source);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
opponent.shuffleLibrary(game);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -141,10 +141,56 @@ class PraetorsGraspPlayEffect extends AsThoughEffectImpl<PraetorsGraspPlayEffect
|
|||
public boolean applies(UUID sourceId, Ability source, Game game) {
|
||||
if (sourceId.equals(cardId)) {
|
||||
Card card = game.getCard(cardId);
|
||||
if (card != null && game.getState().getZone(cardId) == Zone.EXILED) {
|
||||
Player controller = game.getPlayer(source.getControllerId());
|
||||
if (controller != null && card != null && game.getState().getZone(cardId) == Zone.EXILED) {
|
||||
if (card.getCardType().contains(CardType.INSTANT) || game.canPlaySorcery(source.getControllerId())) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
class PraetorsGraspRevealEffect extends AsThoughEffectImpl<PraetorsGraspRevealEffect> {
|
||||
|
||||
private UUID cardId;
|
||||
|
||||
public PraetorsGraspRevealEffect(UUID cardId) {
|
||||
super(AsThoughEffectType.REVEAL_FACE_DOWN, Duration.EndOfGame, Outcome.Benefit);
|
||||
this.cardId = cardId;
|
||||
staticText = "You may look at and play that card for as long as it remains exiled";
|
||||
}
|
||||
|
||||
public PraetorsGraspRevealEffect(final PraetorsGraspRevealEffect effect) {
|
||||
super(effect);
|
||||
this.cardId = effect.cardId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean apply(Game game, Ability source) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public PraetorsGraspRevealEffect copy() {
|
||||
return new PraetorsGraspRevealEffect(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean applies(UUID sourceId, Ability source, Game game) {
|
||||
if (sourceId.equals(cardId)) {
|
||||
Card card = game.getCard(cardId);
|
||||
Card sourceCard = game.getCard(source.getSourceId());
|
||||
Player controller = game.getPlayer(source.getControllerId());
|
||||
if (controller != null && card != null && game.getState().getZone(cardId) == Zone.EXILED) {
|
||||
if (controller.chooseUse(outcome, "Reveal exiled card?", game)) {
|
||||
Cards cards = new CardsImpl(card);
|
||||
controller.lookAtCards("Exiled with " + sourceCard.getName(), cards, game);
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue