- Added the static ability "CantBeActivated".

- Converted Grand Abolisher.
This commit is contained in:
Sloth
2011-10-17 18:38:29 +00:00
parent 845539c095
commit b9a7fab398
5 changed files with 44 additions and 3 deletions

View File

@@ -1,9 +1,12 @@
package forge.card.spellability;
import java.util.ArrayList;
import forge.*;
import forge.Constant.Zone;
import forge.card.cost.Cost;
import forge.card.cost.Cost_Payment;
import forge.card.staticAbility.StaticAbility;
/**
@@ -51,6 +54,19 @@ abstract public class Ability_Activated extends SpellAbility implements java.io.
return false;
}
Player activator = getActivatingPlayer();
//CantBeActivated static abilities
CardList allp = AllZoneUtil.getCardsIn(Zone.Battlefield);
for (Card ca : allp) {
ArrayList<StaticAbility> staticAbilities = ca.getStaticAbilities();
for (StaticAbility stAb : staticAbilities) {
if(stAb.applyAbility("CantBeActivated", c, activator)) {
return false;
}
}
}
if (c.hasKeyword("CARDNAME's activated abilities can't be activated.") || isSuppressed()) {
return false;
}

View File

@@ -61,7 +61,7 @@ abstract public class Spell extends SpellAbility implements java.io.Serializable
Player activator = getActivatingPlayer();
//Prevent Damage static abilities
//CantBeCast static abilities
CardList allp = AllZoneUtil.getCardsIn(Zone.Battlefield);
for (Card ca : allp) {
ArrayList<StaticAbility> staticAbilities = ca.getStaticAbilities();

View File

@@ -181,6 +181,9 @@ public class StaticAbility {
if (mode.equals("CantBeCast"))
return StaticAbility_CantBeCast.applyCantBeCastAbility(this, card, activator);
if (mode.equals("CantBeActivated"))
return StaticAbility_CantBeCast.applyCantBeActivatedAbility(this, card, activator);
return false;
}

View File

@@ -20,7 +20,29 @@ public class StaticAbility_CantBeCast {
return false;
}
if(params.containsKey("Caster") && !activator.isValid(params.get("Caster"), hostCard.getController(), hostCard)) {
if(params.containsKey("Caster") && activator != null &&
!activator.isValid(params.get("Caster"), hostCard.getController(), hostCard)) {
return false;
}
return true;
}
/**
*
* TODO Write javadoc for this method.
* @param stAb a StaticAbility
*/
public static boolean applyCantBeActivatedAbility(final StaticAbility stAb, Card card, Player activator) {
HashMap<String, String> params = stAb.getMapParams();
Card hostCard = stAb.getHostCard();
if(params.containsKey("ValidCard") && !card.isValid(params.get("ValidCard").split(","), hostCard.getController(), hostCard)) {
return false;
}
if(params.containsKey("Activator") && activator != null &&
!activator.isValid(params.get("Activator"), hostCard.getController(), hostCard)) {
return false;
}