- Added the option to remove triggered abilities with continuous static abilities.

- Added it to some cards that currently still use stAnimate.
This commit is contained in:
Sloth
2011-09-05 17:04:36 +00:00
parent 383525a4a1
commit 9170a06da0
10 changed files with 33 additions and 4 deletions

View File

@@ -2,6 +2,7 @@ Name:Blood Moon
ManaCost:2 R
Types:Enchantment
Text:no text
S:Mode$ Continuous | Affected$ Land.nonBasic | RemoveTriggers$ True
K:stAnimateAll:Land.nonBasic:no change/no change/Overwrite:Land,Mountain,RemoveSubTypes:no colors:Overwrite:No Condition:Nonbasic lands are Mountains.
SVar:RemRandomDeck:True
SVar:Rarity:Rare

View File

@@ -4,6 +4,7 @@ Types:Enchantment Aura
Text:no text
K:Enchant land
A:SP$ Attach | Cost$ 1 B | ValidTgts$ Land | AILogic$ Curse
S:Mode$ Continuous | Affected$ Card.EnchantedBy | RemoveTriggers$ True
K:stAnimateEnchanted:Land:no change/no change/Overwrite:Land,Swamp,RemoveSubTypes:no colors:Overwrite:No Condition:Enchanted land is a Swamp.
T:Mode$ Taps | ValidCard$ Card.AttachedBy | TriggerZones$ Battlefield | Execute$ TrigLose | TriggerDescription$ Whenever enchanted land becomes tapped, its controller loses 2 life.
SVar:TrigLose:AB$LoseLife | Cost$ 0 | Defined$ TriggeredCardController | LifeAmount$ 2

View File

@@ -4,6 +4,7 @@ Types:Tribal Enchantment Treefolk Aura
Text:no text
K:Enchant creature
A:SP$ Attach | Cost$ 1 G | ValidTgts$ Creature | AILogic$ Curse
S:Mode$ Continuous | Affected$ Card.EnchantedBy | RemoveTriggers$ True
K:stAnimateEnchanted:Creature:0/4/Overwrite:Creature,Treefolk,Overwrite:no colors:Overwrite:No condition:Enchanted creature is a 0/4 Treefolk with no abilities.
SVar:RemAIDeck:True
SVar:Rarity:Common

View File

@@ -4,6 +4,7 @@ Types:Enchantment Aura
Text:no text
K:Enchant land
A:SP$ Attach | Cost$ G | ValidTgts$ Land | AILogic$ Pump
S:Mode$ Continuous | Affected$ Card.EnchantedBy | RemoveTriggers$ True
K:stAnimateEnchanted:Land:no change/no change/Overwrite:Land,Mountain,Forest,Plains,RemoveSubTypes:no colors:Overwrite:No Condition:Enchanted land is a Mountain, Forest, and Plains.
SVar:RemRandomDeck:True
SVar:Rarity:Common

View File

@@ -3,6 +3,7 @@ ManaCost:2 R
Types:Creature Human Wizard
Text:no text
PT:2/2
S:Mode$ Continuous | Affected$ Land.nonBasic | RemoveTriggers$ True
K:stAnimateAll:Land.nonBasic:no change/no change/Overwrite:Land,Mountain,RemoveSubTypes:no colors:Overwrite:No Condition:Nonbasic lands are Mountains.
SVar:RemRandomDeck:True
SVar:Rarity:Rare

View File

@@ -34,7 +34,7 @@ public class StaticEffects {
}
staticEffects = new ArrayList<StaticEffect>();
AllZone.getTriggerHandler().removeTemporaryTriggers();
AllZone.getTriggerHandler().cleanUpTemporaryTriggers();
}
/**

View File

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

View File

@@ -203,6 +203,14 @@ public class StaticAbility_Continuous {
affectedCard.addTrigger(actualTrigger);
AllZone.getTriggerHandler().registerTrigger(actualTrigger);
}
// remove triggers
if (params.containsKey("RemoveTriggers") || params.containsKey("RemoveAllAbilities")) {
ArrayList<Trigger> triggers = affectedCard.getTriggers();
for (Trigger trigger : triggers) {
trigger.setSuppressed(true);
}
}
//affectedCard.updateObservers();
}
}

View File

@@ -207,7 +207,7 @@ public abstract class Trigger {
* @return a {@link java.lang.String} object.
*/
public String toString() {
if (mapParams.containsKey("TriggerDescription")) {
if (mapParams.containsKey("TriggerDescription") && !isSuppressed()) {
return mapParams.get("TriggerDescription").replace("CARDNAME", hostCard.getName());
} else return "";
}
@@ -523,4 +523,14 @@ public abstract class Trigger {
public boolean isTemporary() {
return temporary;
}
protected boolean suppressed = false;
public void setSuppressed(boolean supp) {
suppressed = supp;
}
public boolean isSuppressed() {
return suppressed;
}
}

View File

@@ -253,13 +253,16 @@ public class TriggerHandler {
* <p>removeTemporaryTriggers.</p>
*
*/
public final void removeTemporaryTriggers() {
public final void cleanUpTemporaryTriggers() {
for (int i = 0; i < registeredTriggers.size(); i++) {
if (registeredTriggers.get(i).isTemporary()) {
registeredTriggers.get(i).hostCard.removeTrigger(registeredTriggers.get(i));
registeredTriggers.remove(i);
}
}
for (int i = 0; i < registeredTriggers.size(); i++) {
registeredTriggers.get(i).setSuppressed(false);
}
}
/**
@@ -365,6 +368,9 @@ public class TriggerHandler {
if (!regtrig.performTest(runParams)) {
return false; //Test failed.
}
if (regtrig.isSuppressed()) {
return false; //Trigger removed by effect
}
//Torpor Orb check
CardList torporOrbs = AllZoneUtil.getCardsInPlay("Torpor Orb");