CardFactoryUtil: Move Madness to addReplacementEffect and addTriggerAbility

Falkenrath Gorger: use Madness with AddKeyword (only effects Hand, because Madness only works with Hand)
This commit is contained in:
Hanmac
2016-07-20 17:17:42 +00:00
parent c4fe518336
commit 7e58350e34
2 changed files with 49 additions and 40 deletions

View File

@@ -2958,6 +2958,33 @@ public class CardFactoryUtil {
if (!intrinsic) {
kws.addTrigger(cardTrigger);
}
} if (keyword.startsWith("Madness")) {
// Set Madness Triggers
final String[] k = keyword.split(":");
final String manacost = k[1];
final String trigPlay = "TrigPlayMadness" + StringUtils.join(manacost.split(" "));
final String trigStr = "Mode$ Discarded | ValidCard$ Card.Self | IsMadness$ True | " +
"Execute$ " + trigPlay + " | Secondary$ True | TriggerDescription$ " +
"Play Madness " + ManaCostParser.parse(manacost) + " - " + card.getName();
final String playMadness = "AB$ Play | Cost$ 0 | Defined$ Self | PlayMadness$ " + manacost +
" | ConditionDefined$ Self | ConditionPresent$ Card.StrictlySelf+inZoneExile" +
" | Optional$ True | SubAbility$ DBWasNotPlayMadness | RememberPlayed$ True";
final String moveToYard = "DB$ ChangeZone | Defined$ Self.StrictlySelf | Origin$ Exile | " +
"Destination$ Graveyard | ConditionDefined$ Remembered | ConditionPresent$" +
" Card | ConditionCompare$ EQ0 | SubAbility$ DBMadnessCleanup";
final String cleanUp = "DB$ Cleanup | ClearRemembered$ True";
final Trigger parsedTrigger = TriggerHandler.parseTrigger(trigStr, card, intrinsic);
final Trigger cardTrigger = card.addTrigger(parsedTrigger);
card.setSVar(trigPlay, playMadness);
card.setSVar("DBWasNotPlayMadness", moveToYard);
card.setSVar("DBMadnessCleanup", cleanUp);
if (!intrinsic) {
kws.addTrigger(cardTrigger);
}
}
}
@@ -3012,6 +3039,20 @@ public class CardFactoryUtil {
re.setLayer(ReplacementLayer.Other);
ReplacementEffect cardre = card.addReplacementEffect(re);
if (!intrinsic) {
kws.addReplacement(cardre);
}
} else if (keyword.startsWith("Madness")) {
// Set Madness Replacement effects
String repeffstr = "Event$ Discard | ActiveZones$ Hand | ValidCard$ Card.Self | " +
"ReplaceWith$ DiscardMadness | Secondary$ True | Description$ " +
"Madness: If you discard this card, discard it into exile.";
ReplacementEffect re = ReplacementHandler.parseReplacement(repeffstr, card, intrinsic);
ReplacementEffect cardre = card.addReplacementEffect(re);
String sVarMadness = "DB$ Discard | Defined$ ReplacedPlayer" +
" | Mode$ Defined | DefinedCards$ ReplacedCard | Madness$ True";
card.setSVar("DiscardMadness", sVarMadness);
if (!intrinsic) {
kws.addReplacement(cardre);
}
@@ -3538,38 +3579,12 @@ public class CardFactoryUtil {
}
} // Megamorph
if (hasKeyword(card, "Madness") != -1) {
final int n = hasKeyword(card, "Madness");
if (n != -1) {
// Set Madness Replacement effects
String repeffstr = "Event$ Discard | ActiveZones$ Hand | ValidCard$ Card.Self | " +
"ReplaceWith$ DiscardMadness | Secondary$ True | Description$ If you" +
" discard this card, discard it into exile.";
ReplacementEffect re = ReplacementHandler.parseReplacement(repeffstr, card, true);
card.addReplacementEffect(re);
String sVarMadness = "DB$ Discard | Defined$ ReplacedPlayer" +
" | Mode$ Defined | DefinedCards$ ReplacedCard | Madness$ True";
card.setSVar("DiscardMadness", sVarMadness);
final int madness = hasKeyword(card, "Madness");
if (madness != -1) {
final String parse = card.getKeywords().get(madness).toString();
// Set Madness Triggers
final String parse = card.getKeywords().get(n).toString();
// card.removeIntrinsicKeyword(parse);
final String[] k = parse.split(":");
String trigStr = "Mode$ Discarded | ValidCard$ Card.Self | IsMadness$ True | " +
"Execute$ TrigPlayMadness | Secondary$ True | TriggerDescription$ " +
"Play Madness - " + card.getName();
final Trigger myTrigger = TriggerHandler.parseTrigger(trigStr, card, true);
card.addTrigger(myTrigger);
String playMadness = "AB$ Play | Cost$ 0 | Defined$ Self | PlayMadness$ " + k[1] +
" | Optional$ True | SubAbility$ DBWasNotPlayMadness | RememberPlayed$ True";
String moveToYard = "DB$ ChangeZone | Defined$ Self | Origin$ Exile | " +
"Destination$ Graveyard | ConditionDefined$ Remembered | ConditionPresent$" +
" Card | ConditionCompare$ EQ0 | SubAbility$ DBMadnessCleanup";
String cleanUp = "DB$ Cleanup | ClearRemembered$ True";
card.setSVar("TrigPlayMadness", playMadness);
card.setSVar("DBWasNotPlayMadness", moveToYard);
card.setSVar("DBMadnessCleanup", cleanUp);
}
addReplacementEffect(parse, card, null);
addTriggerAbility(parse, card, null);
} // madness
if (hasKeyword(card, "Miracle") != -1) {

View File

@@ -2,12 +2,6 @@ Name:Falkenrath Gorger
ManaCost:R
Types:Creature Vampire Berserker
PT:2/1
S:Mode$ Continuous | Affected$ Creature.YouOwn+Vampire | AffectedZone$ Hand,Library,Graveyard,Exile,Stack,Command | AddKeyword$ Madness | AddReplacementEffects$ GrantedMadnessDiscRepl | AddSVar$ GrantedMadnessDiscSVar & GrantedManessPlay & GrantedMadnessDontPlay & GrantedMadnessCleanup | AddTrigger$ GrantedMadnessTrigger | Description$ Each Vampire creature card you own that isn't on the battlefield has madness. The madness cost is equal to its mana cost. (If you discard a card with madness, discard it into exile. When you do, cast it for its madness cost or put it into your graveyard.)
SVar:GrantedMadnessDiscRepl:Event$ Discard | ActiveZones$ Hand | ValidCard$ Card.Self | ReplaceWith$ GrantedMadnessDiscSVar | Secondary$ True | Description$ If you discard this card, discard it into exile.
SVar:GrantedMadnessDiscSVar:DB$ Discard | Defined$ ReplacedPlayer | Mode$ Defined | DefinedCards$ ReplacedCard | Madness$ True
# TriggerZones Hand added because otherwise this trigger will fire twice, once for the LKI in hand version, and once on the exiled version
SVar:GrantedMadnessTrigger:Mode$ Discarded | TriggerZones$ Hand | ValidCard$ Card.Self | IsMadness$ True | Execute$ GrantedManessPlay | Secondary$ True | TriggerDescription$ Play Madness - CARDNAME
SVar:GrantedManessPlay:DB$ Play | Defined$ Self | PlayMadness$ ManaCost | Optional$ True | SubAbility$ GrantedMadnessDontPlay | RememberPlayed$ True
SVar:GrantedMadnessDontPlay:DB$ ChangeZone | Defined$ Self | Origin$ Exile | Destination$ Graveyard | ConditionDefined$ Remembered | ConditionPresent$ Card | ConditionCompare$ EQ0 | SubAbility$ GrantedMadnessCleanup
SVar:GrantedMadnessCleanup:DB$ Cleanup | ClearRemembered$ True
S:Mode$ Continuous | Affected$ Creature.YouOwn+Vampire | AffectedZone$ Hand | AddKeyword$ Madness:CardManaCost | Description$ Each Vampire creature card you own that isn't on the battlefield has madness. The madness cost is equal to its mana cost. (If you discard a card with madness, discard it into exile. When you do, cast it for its madness cost or put it into your graveyard.)
Oracle:Each Vampire creature card you own that isn't on the battlefield has madness. The madness cost is equal to its mana cost. (If you discard a card with madness, discard it into exile. When you do, cast it for its madness cost or put it into your graveyard.)