1
0
Fork 0
mirror of https://github.com/correl/mage.git synced 2025-04-11 17:00:08 -09:00

Fixed moveToExile.

This commit is contained in:
magenoxx 2011-05-19 23:22:11 +04:00
parent 4133a13120
commit ec1327199d
4 changed files with 50 additions and 19 deletions
Mage/src/mage

View file

@ -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);

View file

@ -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;
}
}

View file

@ -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);

View file

@ -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) {