- Added the option "RemoveAllAbilities" to continuous static abilities which will remove triggers and activated abilities (keywords and static abilities coming soon).

- Fixed Pithing Needle affecting mana abilities.
This commit is contained in:
Sloth
2011-09-09 16:18:25 +00:00
parent 1c16386490
commit b4c734b49d
5 changed files with 39 additions and 4 deletions

View File

@@ -138,6 +138,14 @@ public class StaticEffects {
}
}
}
//remove abilities
if (params.containsKey("RemoveAllAbilities")) {
SpellAbility[] spellAbility = affectedCard.getSpellAbility();
for (SpellAbility s : spellAbility) {
s.setTemporarilySuppressed(false);
}
}
//remove Types
if (params.containsKey("AddType") || params.containsKey("RemoveType")) {

View File

@@ -46,9 +46,13 @@ abstract public class Ability_Activated extends SpellAbility implements java.io.
if (AllZone.getStack().isSplitSecondOnStack()) return false;
final 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;
if (c.hasKeyword("CARDNAME's activated abilities can't be activated.")) return false;
}
if (c.hasKeyword("CARDNAME's activated abilities can't be activated.") || isSuppressed()) {
return false;
}
CardList pithing = AllZoneUtil.getPlayerCardsInPlay(AllZone.getHumanPlayer());
pithing.addAll(AllZoneUtil.getPlayerCardsInPlay(AllZone.getComputerPlayer()));
@@ -59,7 +63,7 @@ abstract public class Ability_Activated extends SpellAbility implements java.io.
}
});
if (pithing.size() != 0) return false;
if (pithing.size() != 0 && !(this instanceof Ability_Mana)) return false;
if (!(getRestrictions().canPlay(c, this)))
return false;

View File

@@ -48,6 +48,7 @@ public abstract class SpellAbility {
private boolean trigger = false;
private int sourceTrigger = -1;
private boolean mandatory = false;
private boolean temporarilySuppressed = false;
private boolean tapAbility;
private boolean untapAbility;
@@ -865,6 +866,11 @@ public abstract class SpellAbility {
/** {@inheritDoc} */
@Override
public String toString() {
if(isSuppressed()) {
return "";
}
StringBuilder sb = new StringBuilder();
SpellAbility node = this;
@@ -1215,5 +1221,13 @@ public abstract class SpellAbility {
public boolean isWrapper() {
return false;
}
public void setTemporarilySuppressed(boolean supp) {
temporarilySuppressed = supp;
}
public boolean isSuppressed() {
return (temporarilySuppressed);
}
}

View File

@@ -82,7 +82,8 @@ public class StaticAbility {
return 5;
if(mapParams.containsKey("AddKeyword") || mapParams.containsKey("AddAbility")
|| mapParams.containsKey("AddTrigger") || mapParams.containsKey("RemoveTriggers"))
|| mapParams.containsKey("AddTrigger") || mapParams.containsKey("RemoveTriggers")
|| mapParams.containsKey("RemoveAllAbilities"))
return 6;
if(mapParams.containsKey("CharacteristicDefining"))

View File

@@ -249,6 +249,14 @@ public class StaticAbility_Continuous {
trigger.setTemporarilySuppressed(true);
}
}
// remove activated abilities
if (params.containsKey("RemoveAllAbilities")) {
ArrayList<SpellAbility> abilities = affectedCard.getSpellAbilities();
for (SpellAbility ab : abilities) {
ab.setTemporarilySuppressed(true);
}
}
//affectedCard.updateObservers();
}
}