(final Card land, SpellAbility cause)
| 1637 | } |
| 1638 | |
| 1639 | public final Card playLand(final Card land, SpellAbility cause) { |
| 1640 | land.setController(this, 0); |
| 1641 | if (land.isFaceDown()) { |
| 1642 | land.turnFaceUp(null); |
| 1643 | if (cause.isLandAbility()) { |
| 1644 | land.changeToState(cause.getCardStateName()); |
| 1645 | } |
| 1646 | } |
| 1647 | |
| 1648 | Map<AbilityKey, Object> runParams = AbilityKey.mapFromCard(land); |
| 1649 | runParams.put(AbilityKey.Origin, land.getZone().getZoneType().name()); |
| 1650 | |
| 1651 | game.copyLastState(); |
| 1652 | final Card c = game.getAction().moveTo(getZone(ZoneType.Battlefield), land, cause); |
| 1653 | game.updateLastStateForCard(c); |
| 1654 | |
| 1655 | // Run triggers |
| 1656 | runParams.put(AbilityKey.SpellAbility, cause); |
| 1657 | game.getTriggerHandler().runTrigger(TriggerType.LandPlayed, runParams, false); |
| 1658 | |
| 1659 | game.getStack().unfreezeStack(); |
| 1660 | addLandPlayedThisTurn(); |
| 1661 | |
| 1662 | // play a sound |
| 1663 | game.fireEvent(new GameEventLandPlayed(PlayerView.get(this), CardView.get(c))); |
| 1664 | |
| 1665 | return c; |
| 1666 | } |
| 1667 | |
| 1668 | public final boolean canPlayLand(final Card land, final boolean ignoreZoneAndTiming, SpellAbility landSa) { |
| 1669 | if (!ignoreZoneAndTiming) { |
no test coverage detected