mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-17 19:28:01 +00:00
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:
@@ -2958,6 +2958,33 @@ public class CardFactoryUtil {
|
|||||||
if (!intrinsic) {
|
if (!intrinsic) {
|
||||||
kws.addTrigger(cardTrigger);
|
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);
|
re.setLayer(ReplacementLayer.Other);
|
||||||
ReplacementEffect cardre = card.addReplacementEffect(re);
|
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) {
|
if (!intrinsic) {
|
||||||
kws.addReplacement(cardre);
|
kws.addReplacement(cardre);
|
||||||
}
|
}
|
||||||
@@ -3538,38 +3579,12 @@ public class CardFactoryUtil {
|
|||||||
}
|
}
|
||||||
} // Megamorph
|
} // Megamorph
|
||||||
|
|
||||||
if (hasKeyword(card, "Madness") != -1) {
|
final int madness = hasKeyword(card, "Madness");
|
||||||
final int n = hasKeyword(card, "Madness");
|
if (madness != -1) {
|
||||||
if (n != -1) {
|
final String parse = card.getKeywords().get(madness).toString();
|
||||||
// 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);
|
|
||||||
|
|
||||||
// Set Madness Triggers
|
addReplacementEffect(parse, card, null);
|
||||||
final String parse = card.getKeywords().get(n).toString();
|
addTriggerAbility(parse, card, null);
|
||||||
// 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);
|
|
||||||
}
|
|
||||||
} // madness
|
} // madness
|
||||||
|
|
||||||
if (hasKeyword(card, "Miracle") != -1) {
|
if (hasKeyword(card, "Miracle") != -1) {
|
||||||
|
|||||||
@@ -2,12 +2,6 @@ Name:Falkenrath Gorger
|
|||||||
ManaCost:R
|
ManaCost:R
|
||||||
Types:Creature Vampire Berserker
|
Types:Creature Vampire Berserker
|
||||||
PT:2/1
|
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.)
|
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.)
|
||||||
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
|
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.)
|
||||||
# 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
|
|
||||||
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.)
|
|
||||||
|
|||||||
Reference in New Issue
Block a user