- Fixed Djinn of Wishes not being able to play lands.

This commit is contained in:
Sloth
2013-05-24 18:08:06 +00:00
parent 42c1bc2896
commit 7c61612de5
4 changed files with 20 additions and 8 deletions

View File

@@ -196,8 +196,7 @@ public class PlayEffect extends SpellAbilityEffect {
}
// lands will be played
if (tgtCard.isLand()) {
controller.playLand(tgtCard);
if (remember && controller.canPlayLand(tgtCard)) {
if (controller.playLand(tgtCard, true) && remember) {
source.addRemembered(tgtCard);
}
tgtCards.remove(tgtCard);

View File

@@ -884,7 +884,7 @@ public class AiController {
while(landsWannaPlay != null && !landsWannaPlay.isEmpty() && player.canPlayLand(null)) {
Card land = chooseBestLandToPlay(landsWannaPlay);
landsWannaPlay.remove(land);
player.playLand(land);
player.playLand(land, false);
game.getPhaseHandler().setPriority(player);
}
}

View File

@@ -69,7 +69,7 @@ public class HumanPlay {
*/
public static void playSpellAbility(Player p, Card c, SpellAbility ab) {
if (ab == Ability.PLAY_LAND_SURROGATE)
p.playLand(c);
p.playLand(c, false);
else {
HumanPlay.playSpellAbility(p, ab);
}

View File

@@ -1786,9 +1786,9 @@ public class Player extends GameEntity implements Comparable<Player> {
* @param land
* a {@link forge.Card} object.
*/
public final void playLand(final Card land) {
public final boolean playLand(final Card land, final boolean ignoreTiming) {
FThreads.assertExecutedByEdt(false);
if (this.canPlayLand(land)) {
if (this.canPlayLand(land, ignoreTiming)) {
land.setController(this, 0);
game.getAction().moveTo(this.getZone(ZoneType.Battlefield), land);
CardFactoryUtil.playLandEffects(land);
@@ -1808,9 +1808,12 @@ public class Player extends GameEntity implements Comparable<Player> {
final HashMap<String, Object> runParams = new HashMap<String, Object>();
runParams.put("Card", land);
game.getTriggerHandler().runTrigger(TriggerType.LandPlayed, runParams, false);
game.getStack().unfreezeStack();
return true;
}
game.getStack().unfreezeStack();
return false;
}
/**
@@ -1820,9 +1823,19 @@ public class Player extends GameEntity implements Comparable<Player> {
*
* @return a boolean.
*/
public final boolean canPlayLand(Card land) {
public final boolean canPlayLand(final Card land) {
return canPlayLand(land, false);
}
/**
* <p>
* canPlayLand.
* </p>
*
* @return a boolean.
*/
public final boolean canPlayLand(Card land, final boolean ignoreTiming) {
if (!this.canCastSorcery()) {
if (!ignoreTiming && !this.canCastSorcery()) {
return false;
}