diff --git a/src/forge/Ability.java b/src/forge/Ability.java index dca1f62bb64..6284314674e 100644 --- a/src/forge/Ability.java +++ b/src/forge/Ability.java @@ -22,7 +22,9 @@ abstract public class Ability extends SpellAbility { @Override public boolean canPlay() { -// if(getSourceCard().isCreature() && (!getSourceCard().hasSickness())) + if(AllZone.Stack.isSplitSecondOnStack()) return false; + + // if(getSourceCard().isCreature() && (!getSourceCard().hasSickness())) CardList Pithing = AllZoneUtil.getPlayerCardsInPlay(AllZone.HumanPlayer); Pithing.add(AllZoneUtil.getPlayerCardsInPlay(AllZone.ComputerPlayer)); Pithing = Pithing.getName("Pithing Needle"); @@ -41,6 +43,6 @@ abstract public class Ability extends SpellAbility { return AllZone.GameAction.isCardInPlay(getSourceCard()) && !getSourceCard().isFaceDown() && getSourceCard().getName().equals("Spreading Seas") == false && Pithing.size() == 0; -// return false; + // return false; } } diff --git a/src/forge/Ability_Activated.java b/src/forge/Ability_Activated.java index 04e80ca12bd..abcd3c8cf94 100644 --- a/src/forge/Ability_Activated.java +++ b/src/forge/Ability_Activated.java @@ -15,6 +15,8 @@ abstract public class Ability_Activated extends SpellAbility implements java.io. @Override public boolean canPlay() { + if(AllZone.Stack.isSplitSecondOnStack()) return false; + Card c = getSourceCard(); if (c.isFaceDown() && isIntrinsic()) // Intrinsic abilities can't be activated by face down cards return false; diff --git a/src/forge/MagicStack.java b/src/forge/MagicStack.java index a8fa73a18b7..b92135edae2 100644 --- a/src/forge/MagicStack.java +++ b/src/forge/MagicStack.java @@ -9,6 +9,7 @@ public class MagicStack extends MyObservable { private ArrayList frozenStack = new ArrayList(); private boolean frozen = false; private boolean bResolving = false; + private boolean splitSecondOnStack = false; private Object StormCount; private Object PlayerSpellCount; @@ -19,9 +20,24 @@ public class MagicStack extends MyObservable { public void reset() { stack.clear(); frozen = false; + splitSecondOnStack = false; frozenStack.clear(); this.updateObservers(); } + + public boolean isSplitSecondOnStack() { + return splitSecondOnStack; + } + + public void setSplitSecondOnStack() { + for(SpellAbility sa:stack) { + if(sa.getSourceCard().hasKeyword("Split second")) { + splitSecondOnStack = true; + return; + } + } + splitSecondOnStack = false; + } public void freezeStack() { frozen = true; @@ -545,6 +561,7 @@ public class MagicStack extends MyObservable { } stack.add(0, sp); + setSplitSecondOnStack(); this.updateObservers(); @@ -704,6 +721,7 @@ public class MagicStack extends MyObservable { public SpellAbility pop() { SpellAbility sp = (SpellAbility) stack.remove(0); this.updateObservers(); + setSplitSecondOnStack(); return sp; } diff --git a/src/forge/Spell.java b/src/forge/Spell.java index b6d0cb958bc..c937118ce14 100644 --- a/src/forge/Spell.java +++ b/src/forge/Spell.java @@ -27,6 +27,8 @@ abstract public class Spell extends SpellAbility implements java.io.Serializable @Override public boolean canPlay() { + if(AllZone.Stack.isSplitSecondOnStack()) return false; + Card card = getSourceCard(); if (card.isUnCastable()) diff --git a/src/forge/Spell_Permanent.java b/src/forge/Spell_Permanent.java index a7050ae59a0..80797ae6365 100644 --- a/src/forge/Spell_Permanent.java +++ b/src/forge/Spell_Permanent.java @@ -143,6 +143,8 @@ public class Spell_Permanent extends Spell { @Override public boolean canPlay() { + if(AllZone.Stack.isSplitSecondOnStack()) return false; + Card perm = getSourceCard(); Player turn = AllZone.Phase.getPlayerTurn();