add new keyword: Split second

This commit is contained in:
jendave
2011-08-06 14:59:59 +00:00
parent 01dc189adc
commit beebb2ad9d
5 changed files with 28 additions and 2 deletions

View File

@@ -22,7 +22,9 @@ abstract public class Ability extends SpellAbility {
@Override @Override
public boolean canPlay() { 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); CardList Pithing = AllZoneUtil.getPlayerCardsInPlay(AllZone.HumanPlayer);
Pithing.add(AllZoneUtil.getPlayerCardsInPlay(AllZone.ComputerPlayer)); Pithing.add(AllZoneUtil.getPlayerCardsInPlay(AllZone.ComputerPlayer));
Pithing = Pithing.getName("Pithing Needle"); 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 AllZone.GameAction.isCardInPlay(getSourceCard()) && !getSourceCard().isFaceDown() && getSourceCard().getName().equals("Spreading Seas") == false && Pithing.size() == 0;
// return false; // return false;
} }
} }

View File

@@ -15,6 +15,8 @@ abstract public class Ability_Activated extends SpellAbility implements java.io.
@Override @Override
public boolean canPlay() { public boolean canPlay() {
if(AllZone.Stack.isSplitSecondOnStack()) return false;
Card c = getSourceCard(); Card c = getSourceCard();
if (c.isFaceDown() && isIntrinsic()) // Intrinsic abilities can't be activated by face down cards if (c.isFaceDown() && isIntrinsic()) // Intrinsic abilities can't be activated by face down cards
return false; return false;

View File

@@ -9,6 +9,7 @@ public class MagicStack extends MyObservable {
private ArrayList<SpellAbility> frozenStack = new ArrayList<SpellAbility>(); private ArrayList<SpellAbility> frozenStack = new ArrayList<SpellAbility>();
private boolean frozen = false; private boolean frozen = false;
private boolean bResolving = false; private boolean bResolving = false;
private boolean splitSecondOnStack = false;
private Object StormCount; private Object StormCount;
private Object PlayerSpellCount; private Object PlayerSpellCount;
@@ -19,9 +20,24 @@ public class MagicStack extends MyObservable {
public void reset() { public void reset() {
stack.clear(); stack.clear();
frozen = false; frozen = false;
splitSecondOnStack = false;
frozenStack.clear(); frozenStack.clear();
this.updateObservers(); 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() { public void freezeStack() {
frozen = true; frozen = true;
@@ -545,6 +561,7 @@ public class MagicStack extends MyObservable {
} }
stack.add(0, sp); stack.add(0, sp);
setSplitSecondOnStack();
this.updateObservers(); this.updateObservers();
@@ -704,6 +721,7 @@ public class MagicStack extends MyObservable {
public SpellAbility pop() { public SpellAbility pop() {
SpellAbility sp = (SpellAbility) stack.remove(0); SpellAbility sp = (SpellAbility) stack.remove(0);
this.updateObservers(); this.updateObservers();
setSplitSecondOnStack();
return sp; return sp;
} }

View File

@@ -27,6 +27,8 @@ abstract public class Spell extends SpellAbility implements java.io.Serializable
@Override @Override
public boolean canPlay() { public boolean canPlay() {
if(AllZone.Stack.isSplitSecondOnStack()) return false;
Card card = getSourceCard(); Card card = getSourceCard();
if (card.isUnCastable()) if (card.isUnCastable())

View File

@@ -143,6 +143,8 @@ public class Spell_Permanent extends Spell {
@Override @Override
public boolean canPlay() { public boolean canPlay() {
if(AllZone.Stack.isSplitSecondOnStack()) return false;
Card perm = getSourceCard(); Card perm = getSourceCard();
Player turn = AllZone.Phase.getPlayerTurn(); Player turn = AllZone.Phase.getPlayerTurn();