mirror of
https://github.com/correl/mage.git
synced 2024-12-26 11:09:27 +00:00
- Fixed #6037
This commit is contained in:
parent
c4de13ac17
commit
d2115b0425
1 changed files with 17 additions and 18 deletions
|
@ -1,4 +1,3 @@
|
|||
|
||||
package mage.abilities.keyword;
|
||||
|
||||
import mage.abilities.Ability;
|
||||
|
@ -16,8 +15,9 @@ import mage.game.events.GameEvent.EventType;
|
|||
import mage.players.Player;
|
||||
|
||||
/**
|
||||
* If you would draw a card, instead you may put exactly X cards from the top of your library into your graveyard. If
|
||||
* you do, return this card from your graveyard to your hand. Otherwise, draw a card.
|
||||
* If you would draw a card, instead you may put exactly X cards from the top of
|
||||
* your library into your graveyard. If you do, return this card from your
|
||||
* graveyard to your hand. Otherwise, draw a card.
|
||||
*
|
||||
* @author North
|
||||
*/
|
||||
|
@ -42,7 +42,7 @@ class DredgeEffect extends ReplacementEffectImpl {
|
|||
private final int amount;
|
||||
|
||||
public DredgeEffect(int value) {
|
||||
super(Duration.WhileInGraveyard, Outcome.ReturnToHand);
|
||||
super(Duration.WhileInGraveyard, Outcome.AIDontUseIt);
|
||||
this.amount = value;
|
||||
this.staticText = new StringBuilder("Dredge ").append(Integer.toString(value)).append(" <i>(If you would draw a card, instead you may put exactly ").append(value).append(" card(s) from the top of your library into your graveyard. If you do, return this card from your graveyard to your hand. Otherwise, draw a card.)</i>").toString();
|
||||
}
|
||||
|
@ -68,17 +68,18 @@ class DredgeEffect extends ReplacementEffectImpl {
|
|||
if (sourceCard == null) {
|
||||
return false;
|
||||
}
|
||||
Player player = game.getPlayer(source.getControllerId());
|
||||
if (player != null && player.getLibrary().size() >= amount
|
||||
&& player.chooseUse(outcome, new StringBuilder("Dredge ").append(sourceCard.getLogName()).
|
||||
append("? (").append(amount).append(" cards go from top of library to graveyard)").toString(), source, game)) {
|
||||
Player owner = game.getPlayer(game.getCard(source.getSourceId()).getOwnerId());
|
||||
if (owner != null
|
||||
&& owner.getLibrary().size() >= amount
|
||||
&& owner.chooseUse(outcome, new StringBuilder("Dredge ").append(sourceCard.getLogName()).
|
||||
append("? (").append(amount).append(" cards go from top of library to graveyard)").toString(), source, game)) {
|
||||
if (!game.isSimulation()) {
|
||||
game.informPlayers(new StringBuilder(player.getLogName()).append(" dredges ").append(sourceCard.getLogName()).toString());
|
||||
game.informPlayers(new StringBuilder(owner.getLogName()).append(" dredges ").append(sourceCard.getLogName()).toString());
|
||||
}
|
||||
Cards cardsToGrave = new CardsImpl();
|
||||
cardsToGrave.addAll(player.getLibrary().getTopCards(game, amount));
|
||||
player.moveCards(cardsToGrave, Zone.GRAVEYARD, source, game);
|
||||
player.moveCards(sourceCard, Zone.HAND, source, game);
|
||||
cardsToGrave.addAll(owner.getLibrary().getTopCards(game, amount));
|
||||
owner.moveCards(cardsToGrave, Zone.GRAVEYARD, source, game);
|
||||
owner.moveCards(sourceCard, Zone.HAND, source, game);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
@ -89,13 +90,11 @@ class DredgeEffect extends ReplacementEffectImpl {
|
|||
return event.getType() == EventType.DRAW_CARD;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean applies(GameEvent event, Ability source, Game game) {
|
||||
if (event.getPlayerId().equals(source.getControllerId())) {
|
||||
Player controller = game.getPlayer(source.getControllerId());
|
||||
return controller != null && controller.getLibrary().size() >= amount;
|
||||
}
|
||||
return false;
|
||||
Player owner = game.getPlayer(game.getCard(source.getSourceId()).getOwnerId());
|
||||
return (owner != null
|
||||
&& event.getPlayerId().equals(owner.getId())
|
||||
&& owner.getLibrary().size() >= amount);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue