Change static trigger to a replacement

This commit is contained in:
friarsol
2023-04-08 11:13:18 -04:00
committed by Chris H
parent 3c1da39f9e
commit 2e24d43ab6
2 changed files with 23 additions and 24 deletions

View File

@@ -370,26 +370,7 @@ public class CardFactory {
//K:etbCounter:DEFENSE:3
if (card.getType().hasSubtype("Siege")) {
StringBuilder triggerSB = new StringBuilder();
triggerSB.append("Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Static$ True | ");
triggerSB.append("TriggerDescription$ (As a Siege enters the battlefield, choose an opponent to protect it. You and others can attack it. When its defeated, exile it, then cast it transformed.)");
String chooseProtector = "DB$ ChoosePlayer | Defined$ You | Choices$ Player.Opponent | Protect$ True | ChoiceTitle$ Choose an opponent to protect this battle | AILogic$ Curse";
Trigger protectTrigger = TriggerHandler.parseTrigger(triggerSB.toString(), card, true);
protectTrigger.setOverridingAbility(AbilityFactory.getAbility(chooseProtector, card));
card.addTrigger(protectTrigger);
StringBuilder triggerDefeated = new StringBuilder();
triggerDefeated.append("Mode$ Defeated | ValidCard$ Card.Self | Secondary$ True | ");
triggerDefeated.append(" TriggerDescription$ When CARDNAME is defeated, exile it, then cast it transformed.");
String castDefeatedBattle = "DB$ Play | Defined$ Self | WithoutManaCost$ True | CastTransformed$ True";
Trigger defeatedTrigger = TriggerHandler.parseTrigger(triggerDefeated.toString(), card, true);
defeatedTrigger.setOverridingAbility(AbilityFactory.getAbility(castDefeatedBattle, card));
card.addTrigger(defeatedTrigger);
CardFactoryUtil.setupSiegeAbilities(card);
}
}

View File

@@ -103,8 +103,6 @@ public class CardFactoryUtil {
* abilityMorphDown.
* </p>
*
* @param sourceCard
* a {@link forge.game.card.Card} object.
* @return a {@link forge.game.spellability.SpellAbility} object.
*/
public static SpellAbility abilityMorphDown(final CardState cardState, final boolean intrinsic) {
@@ -160,8 +158,6 @@ public class CardFactoryUtil {
* abilityMorphUp.
* </p>
*
* @param sourceCard
* a {@link forge.game.card.Card} object.
* @return a {@link forge.game.spellability.AbilityActivated} object.
*/
public static SpellAbility abilityMorphUp(final CardState cardState, final String costStr, final boolean mega, final boolean intrinsic) {
@@ -3932,6 +3928,28 @@ public class CardFactoryUtil {
return altCostSA;
}
public static void setupSiegeAbilities(Card card) {
StringBuilder chooseSB = new StringBuilder();
chooseSB.append("Event$ Moved | ValidCard$ Card.Self | Destination$ Battlefield | ReplacementResult$ Updated");
chooseSB.append(" | Description$ (As a Siege enters the battlefield, choose an opponent to protect it. You and others can attack it. When its defeated, exile it, then cast it transformed.)");
String chooseProtector = "DB$ ChoosePlayer | Defined$ You | Choices$ Player.Opponent | Protect$ True | ChoiceTitle$ Choose an opponent to protect this battle | AILogic$ Curse";
ReplacementEffect re = ReplacementHandler.parseReplacement(chooseSB.toString(), card, true);
re.setOverridingAbility(AbilityFactory.getAbility(chooseProtector, card));
card.addReplacementEffect(re);
// Defeated trigger
StringBuilder triggerDefeated = new StringBuilder();
triggerDefeated.append("Mode$ Defeated | ValidCard$ Card.Self | Secondary$ True | ");
triggerDefeated.append(" TriggerDescription$ When CARDNAME is defeated, exile it, then cast it transformed.");
String castDefeatedBattle = "DB$ Play | Defined$ Self | WithoutManaCost$ True | CastTransformed$ True";
Trigger defeatedTrigger = TriggerHandler.parseTrigger(triggerDefeated.toString(), card, true);
defeatedTrigger.setOverridingAbility(AbilityFactory.getAbility(castDefeatedBattle, card));
card.addTrigger(defeatedTrigger);
}
public static void setupAdventureAbility(Card card) {
if (card.getCurrentStateName() != CardStateName.Adventure) {
return;