mirror of
https://github.com/correl/mage.git
synced 2025-04-11 17:00:08 -09:00
Fixed moveToExile.
This commit is contained in:
parent
4133a13120
commit
ec1327199d
4 changed files with 50 additions and 19 deletions
Mage/src/mage
|
@ -97,7 +97,7 @@ class CascadeEffect extends OneShotEffect<CascadeEffect> {
|
|||
ExileZone exile = game.getExile().createZone(source.getSourceId(), player.getName() + " Cascade");
|
||||
int sourceCost = game.getObject(source.getSourceId()).getManaCost().convertedManaCost();
|
||||
do {
|
||||
card = player.getLibrary().removeFromTop(game);
|
||||
card = player.getLibrary().getFromTop(game);
|
||||
if (card == null)
|
||||
break;
|
||||
card.moveToExile(exile.getId(), exile.getName(), source.getId(), game);
|
||||
|
|
|
@ -205,16 +205,22 @@ public abstract class CardImpl<T extends CardImpl<T>> extends MageObjectImpl<T>
|
|||
Zone fromZone = game.getZone(objectId);
|
||||
ZoneChangeEvent event = new ZoneChangeEvent(this.objectId, sourceId, ownerId, fromZone, toZone);
|
||||
if (!game.replaceEvent(event)) {
|
||||
if (event.getFromZone() != null) {
|
||||
switch (event.getFromZone()) {
|
||||
case GRAVEYARD:
|
||||
game.getPlayer(ownerId).removeFromGraveyard(this, game);
|
||||
break;
|
||||
default:
|
||||
//logger.warning("moveToZone, not fully implemented: from="+event.getFromZone() + ", to="+event.getToZone());
|
||||
}
|
||||
game.rememberLKI(objectId, event.getFromZone(), this);
|
||||
}
|
||||
if (event.getFromZone() != null) {
|
||||
switch (event.getFromZone()) {
|
||||
case GRAVEYARD:
|
||||
game.getPlayer(ownerId).removeFromGraveyard(this, game);
|
||||
break;
|
||||
case HAND:
|
||||
game.getPlayer(ownerId).removeFromHand(this, game);
|
||||
break;
|
||||
case LIBRARY:
|
||||
game.getPlayer(ownerId).removeFromLibrary(this, game);
|
||||
break;
|
||||
default:
|
||||
//logger.warning("moveToZone, not fully implemented: from="+event.getFromZone() + ", to="+event.getToZone());
|
||||
}
|
||||
game.rememberLKI(objectId, event.getFromZone(), this);
|
||||
}
|
||||
switch (event.getToZone()) {
|
||||
case GRAVEYARD:
|
||||
game.getPlayer(ownerId).putInGraveyard(this, game, !flag);
|
||||
|
@ -277,6 +283,23 @@ public abstract class CardImpl<T extends CardImpl<T>> extends MageObjectImpl<T>
|
|||
Zone fromZone = game.getZone(objectId);
|
||||
ZoneChangeEvent event = new ZoneChangeEvent(this.objectId, sourceId, ownerId, fromZone, Zone.EXILED);
|
||||
if (!game.replaceEvent(event)) {
|
||||
if (fromZone != null) {
|
||||
switch (fromZone) {
|
||||
case GRAVEYARD:
|
||||
game.getPlayer(ownerId).removeFromGraveyard(this, game);
|
||||
break;
|
||||
case HAND:
|
||||
game.getPlayer(ownerId).removeFromHand(this, game);
|
||||
break;
|
||||
case LIBRARY:
|
||||
game.getPlayer(ownerId).removeFromLibrary(this, game);
|
||||
break;
|
||||
default:
|
||||
//logger.warning("moveToExile, not fully implemented: from="+fromZone);
|
||||
}
|
||||
game.rememberLKI(objectId, event.getFromZone(), this);
|
||||
}
|
||||
|
||||
if (exileId == null) {
|
||||
game.getExile().getPermanentExile().add(this);
|
||||
}
|
||||
|
@ -301,13 +324,13 @@ public abstract class CardImpl<T extends CardImpl<T>> extends MageObjectImpl<T>
|
|||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getArt() {
|
||||
return "";
|
||||
}
|
||||
@Override
|
||||
public String getArt() {
|
||||
return "";
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setCardNumber(int cid) {
|
||||
this.cardNumber = cid;
|
||||
}
|
||||
@Override
|
||||
public void setCardNumber(int cid) {
|
||||
this.cardNumber = cid;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -111,6 +111,7 @@ public interface Player extends MageItem, Copyable<Player> {
|
|||
public boolean removeFromBattlefield(Permanent permanent, Game game);
|
||||
public boolean putInGraveyard(Card card, Game game, boolean fromBattlefield);
|
||||
public boolean removeFromGraveyard(Card card, Game game);
|
||||
public boolean removeFromLibrary(Card card, Game game);
|
||||
public boolean searchLibrary(TargetCardInLibrary target, Game game);
|
||||
public boolean canPlayLand();
|
||||
public boolean playLand(Card card, Game game);
|
||||
|
|
|
@ -311,6 +311,13 @@ public abstract class PlayerImpl<T extends PlayerImpl<T>> implements Player, Ser
|
|||
hand.remove(card);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean removeFromLibrary(Card card, Game game) {
|
||||
if (card == null) return false;
|
||||
library.remove(card.getId(), game);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void discard(int amount, Ability source, Game game) {
|
||||
|
|
Loading…
Add table
Reference in a new issue