mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-20 04:38:00 +00:00
- A different approach to remedying the broken Play Effect problem (uses a dedicated SVar on a SpellAbility).
This commit is contained in:
@@ -107,12 +107,15 @@ public abstract class Spell extends SpellAbility implements java.io.Serializable
|
||||
|| this.getRestrictions().isInstantSpeed()
|
||||
|| activator.hasKeyword("You may cast nonland cards as though they had flash.")
|
||||
|| card.hasStartOfKeyword("You may cast CARDNAME as though it had flash.")
|
||||
|| this.hasSVar("IsCastFromPlayEffect")
|
||||
|| (card.isFaceDown() && !card.getZone().is(ZoneType.Battlefield) && card.getState(CardStateName.Original).getType().isInstant()))) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!this.getRestrictions().canPlay(card, this)) {
|
||||
return false;
|
||||
if (!this.hasSVar("IsCastFromPlayEffect")) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// for uncastables like lotus bloom, check if manaCost is blank (except for morph spells)
|
||||
|
||||
@@ -63,10 +63,6 @@ public class HumanPlay {
|
||||
* a {@link forge.game.spellability.SpellAbility} object.
|
||||
*/
|
||||
public final static boolean playSpellAbility(final PlayerControllerHuman controller, final Player p, SpellAbility sa) {
|
||||
return playSpellAbility(controller, p, sa, false);
|
||||
}
|
||||
|
||||
public final static boolean playSpellAbility(final PlayerControllerHuman controller, final Player p, SpellAbility sa, boolean fromPlayEffect) {
|
||||
FThreads.assertExecutedByEdt(false);
|
||||
|
||||
if (sa == controller.getGame().PLAY_LAND_SURROGATE) {
|
||||
@@ -87,7 +83,7 @@ public class HumanPlay {
|
||||
}
|
||||
|
||||
// extra play check (unless the card is cast from a play effect)
|
||||
if (!(fromPlayEffect || sa.canPlay())) {
|
||||
if (!sa.canPlay()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@@ -1506,7 +1506,8 @@ public class PlayerControllerHuman extends PlayerController implements IGameCont
|
||||
|
||||
@Override
|
||||
public boolean playSaFromPlayEffect(final SpellAbility tgtSA) {
|
||||
return HumanPlay.playSpellAbility(this, player, tgtSA, true);
|
||||
tgtSA.setSVar("IsCastFromPlayEffect", "True");
|
||||
return HumanPlay.playSpellAbility(this, player, tgtSA);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user