Merge branch 'Card-Forge:master' into Warhammer-8

This commit is contained in:
Simisays
2022-09-19 13:45:21 +02:00
committed by GitHub
7 changed files with 110 additions and 12 deletions

View File

@@ -101,6 +101,7 @@ public class ChooseCardEffect extends SpellAbilityEffect {
} }
for (final Player p : tgtPlayers) { for (final Player p : tgtPlayers) {
boolean dontRevealToOwner = true;
if (sa.hasParam("EachBasicType")) { if (sa.hasParam("EachBasicType")) {
// Get all lands, // Get all lands,
List<Card> land = CardLists.filter(game.getCardsIn(ZoneType.Battlefield), Presets.LANDS); List<Card> land = CardLists.filter(game.getCardsIn(ZoneType.Battlefield), Presets.LANDS);
@@ -220,6 +221,7 @@ public class ChooseCardEffect extends SpellAbilityEffect {
} else if ((tgt == null) || p.canBeTargetedBy(sa)) { } else if ((tgt == null) || p.canBeTargetedBy(sa)) {
if (sa.hasParam("AtRandom") && !choices.isEmpty()) { if (sa.hasParam("AtRandom") && !choices.isEmpty()) {
Aggregates.random(choices, validAmount, chosen); Aggregates.random(choices, validAmount, chosen);
dontRevealToOwner = false;
} else { } else {
String title = sa.hasParam("ChoiceTitle") ? sa.getParam("ChoiceTitle") : Localizer.getInstance().getMessage("lblChooseaCard") + " "; String title = sa.hasParam("ChoiceTitle") ? sa.getParam("ChoiceTitle") : Localizer.getInstance().getMessage("lblChooseaCard") + " ";
if (sa.hasParam ("ChoiceTitleAppendDefined")) { if (sa.hasParam ("ChoiceTitleAppendDefined")) {
@@ -248,12 +250,14 @@ public class ChooseCardEffect extends SpellAbilityEffect {
} }
} }
if (sa.hasParam("Reveal") && !sa.hasParam("SecretlyChoose")) { if (sa.hasParam("Reveal") && !sa.hasParam("SecretlyChoose")) {
game.getAction().reveal(chosen, p, true, sa.hasParam("RevealTitle") ? sa.getParam("RevealTitle") : Localizer.getInstance().getMessage("lblChosenCards") + " "); game.getAction().reveal(chosen, p, dontRevealToOwner, sa.hasParam("RevealTitle") ?
sa.getParam("RevealTitle") : Localizer.getInstance().getMessage("lblChosenCards") + " ");
} }
} }
if(sa.hasParam("Reveal") && sa.hasParam("SecretlyChoose")) { if (sa.hasParam("Reveal") && sa.hasParam("SecretlyChoose")) {
for (final Player p : tgtPlayers) { for (final Player p : tgtPlayers) {
game.getAction().reveal(chosen, p, true, sa.hasParam("RevealTitle") ? sa.getParam("RevealTitle") : Localizer.getInstance().getMessage("lblChosenCards") + " "); game.getAction().reveal(chosen, p, true, sa.hasParam("RevealTitle") ?
sa.getParam("RevealTitle") : Localizer.getInstance().getMessage("lblChosenCards") + " ");
} }
} }
host.setChosenCards(chosen); host.setChosenCards(chosen);

View File

@@ -360,10 +360,15 @@ public class PlayEffect extends SpellAbilityEffect {
tgtSA = tgtSA.copyWithNoManaCost(); tgtSA = tgtSA.copyWithNoManaCost();
} else if (sa.hasParam("PlayCost")) { } else if (sa.hasParam("PlayCost")) {
Cost abCost; Cost abCost;
if ("ManaCost".equals(sa.getParam("PlayCost"))) { String cost = sa.getParam("PlayCost");
if (cost.equals("ManaCost")) {
abCost = new Cost(source.getManaCost(), false); abCost = new Cost(source.getManaCost(), false);
} else { } else {
abCost = new Cost(sa.getParam("PlayCost"), false); if (cost.contains("ConvertedManaCost")) {
final String costcmc = Integer.toString(tgtCard.getCMC());
cost = cost.replace("ConvertedManaCost", costcmc);
}
abCost = new Cost(cost, false);
} }
tgtSA = tgtSA.copyWithDefinedCost(abCost); tgtSA = tgtSA.copyWithDefinedCost(abCost);

View File

@@ -3,10 +3,9 @@ ManaCost:4 R R
Types:Creature Efreet Types:Creature Efreet
PT:6/4 PT:6/4
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigPump | TriggerDescription$ At the beginning of your upkeep, choose target nonland permanent you control and up to two target nonland permanents you don't control. Destroy one of them at random. T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigPump | TriggerDescription$ At the beginning of your upkeep, choose target nonland permanent you control and up to two target nonland permanents you don't control. Destroy one of them at random.
SVar:TrigPump:DB$ Pump | ValidTgts$ Permanent.nonLand+YouCtrl | TgtPrompt$ Select target nonland permanent you control | Mandatory$ True | RememberObjects$ Targeted | IsCurse$ True | SubAbility$ DBPump | StackDescription$ None SVar:TrigPump:DB$ Pump | ValidTgts$ Permanent.nonLand+YouCtrl | TgtPrompt$ Select target nonland permanent you control | Mandatory$ True | IsCurse$ True | SubAbility$ DBPump
SVar:DBPump:DB$ Pump | ValidTgts$ Permanent.nonLand+YouDontCtrl | TgtPrompt$ Select target nonland permanent you don't control | TargetMin$ 0 | TargetMax$ 1 | RememberObjects$ Targeted | IsCurse$ True | SubAbility$ DBPump2 | StackDescription$ None SVar:DBPump:DB$ Pump | ValidTgts$ Permanent.nonLand+YouDontCtrl | TgtPrompt$ Select up to two target nonland permanents you don't control | TargetMin$ 0 | TargetMax$ 2 | IsCurse$ True | SubAbility$ DBChooseRandom
SVar:DBPump2:DB$ Pump | ValidTgts$ Permanent.nonLand+YouDontCtrl | TgtPrompt$ Select another target nonland permanent you don't control | TargetMin$ 0 | TargetMax$ 1 | TargetUnique$ True | RememberObjects$ Targeted | IsCurse$ True | SubAbility$ DBChooseRandom | StackDescription$ None SVar:DBChooseRandom:DB$ ChooseCard | AtRandom$ True | Reveal$ True | RevealTitle$ OVERRIDE Randomly chosen permanent: | DefinedCards$ TargetedCard | SubAbility$ DBDestroy
SVar:DBChooseRandom:DB$ ChooseCard | Defined$ You | Amount$ 1 | AtRandom$ True | Choices$ Card.IsRemembered | SubAbility$ DBDestroy
SVar:DBDestroy:DB$ Destroy | Defined$ ChosenCard | SubAbility$ DBCleanup SVar:DBDestroy:DB$ Destroy | Defined$ ChosenCard | SubAbility$ DBCleanup
SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:DBCleanup:DB$ Cleanup | ClearChosenCard$ True
Oracle:At the beginning of your upkeep, choose target nonland permanent you control and up to two target nonland permanents you don't control. Destroy one of them at random. Oracle:At the beginning of your upkeep, choose target nonland permanent you control and up to two target nonland permanents you don't control. Destroy one of them at random.

View File

@@ -3,7 +3,7 @@ ManaCost:3 B R G
Types:Legendary Creature Dragon Types:Legendary Creature Dragon
PT:6/6 PT:6/6
K:Flying K:Flying
T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | CombatDamage$ True | OptionalDecider$ You | Execute$ TrigChooseColor | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, you may pay {2}{R}. If you do, choose a color, then that player reveals their hand and Darigaaz deals damage to the player equal to the number of cards of that color revealed this way. T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | CombatDamage$ True | OptionalDecider$ You | Execute$ TrigChooseColor | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, you may pay {2}{R}. If you do, choose a color, then that player reveals their hand and NICKNAME deals damage to the player equal to the number of cards of that color revealed this way.
SVar:TrigChooseColor:AB$ ChooseColor | Cost$ 2 R | Defined$ You | AILogic$ MostProminentInHumanDeck | SubAbility$ DBRevealHand SVar:TrigChooseColor:AB$ ChooseColor | Cost$ 2 R | Defined$ You | AILogic$ MostProminentInHumanDeck | SubAbility$ DBRevealHand
SVar:DBRevealHand:DB$ RevealHand | Defined$ TriggeredTarget | RememberRevealed$ True | SubAbility$ DBDamage SVar:DBRevealHand:DB$ RevealHand | Defined$ TriggeredTarget | RememberRevealed$ True | SubAbility$ DBDamage
SVar:DBDamage:DB$ DealDamage | Defined$ TriggeredTarget | NumDmg$ X | SubAbility$ DBCleanup SVar:DBDamage:DB$ DealDamage | Defined$ TriggeredTarget | NumDmg$ X | SubAbility$ DBCleanup

View File

@@ -7,7 +7,7 @@ K:Trample
K:Haste K:Haste
K:etbCounter:P1P1:1:CheckSVar$ WasKicked:If CARDNAME was kicked, it enters the battlefield with a +1/+1 counter on it. K:etbCounter:P1P1:1:CheckSVar$ WasKicked:If CARDNAME was kicked, it enters the battlefield with a +1/+1 counter on it.
SVar:WasKicked:Count$Kicked.1.0 SVar:WasKicked:Count$Kicked.1.0
T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | Execute$ TrigReturn | IsPresent$ Card.Self+counters_EQ0_P1P1 | TriggerDescription$ At the beginning of your end step, return Shatterskull Charger to its owner's hand unless it has a +1/+1 counter on it. T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | Execute$ TrigReturn | IsPresent$ Card.Self+counters_EQ0_P1P1 | TriggerDescription$ At the beginning of your end step, return CARDNAME to its owner's hand unless it has a +1/+1 counter on it.
SVar:TrigReturn:DB$ ChangeZone | Origin$ Battlefield | Destination$ Hand | Defined$ Self SVar:TrigReturn:DB$ ChangeZone | Origin$ Battlefield | Destination$ Hand | Defined$ Self
SVar:PlayMain1:TRUE SVar:PlayMain1:TRUE
DeckHas:Ability$Counters DeckHas:Ability$Counters

View File

@@ -0,0 +1,10 @@
Name:Anrakyr the Traveller
ManaCost:4 B
Types:Legendary Artifact Creature Necron
PT:4/4
T:Mode$ Attacks | ValidCard$ Card.Self | TriggerZones$ Battlefield | Execute$ TrigCast | OptionalDecider$ You | TriggerDescription$ Whenever CARDNAME attacks, you may cast an artifact spell from your hand or graveyard by paying life equal to its mana value rather than paying its mana cost.
SVar:TrigCast:DB$ Play | ValidZone$ Hand | Valid$ Artifact.YouOwn | ValidSA$ Spell | Controller$ You | ValidZone$ Hand,Graveyard | Optional$ True | Amount$ 1 | PlayCost$ PayLife<ConvertedManaCost>
SVar:HasAttackEffect:TRUE
DeckHas:Ability$Graveyard
DeckHints:Type$Artifact
Oracle:Lord of the Pyrrhian Legions — Whenever Anrakyr the Traveller attacks, you may cast an artifact spell from your hand or graveyard by paying life equal to its mana value rather than paying its mana cost.

View File

@@ -0,0 +1,80 @@
Name:Shadowheart, Sharran Cleric
ManaCost:1 B
Types:Legendary Creature Human Elf Cleric
PT:2/2
K:Deathtouch
K:Specialize:2::Activate only if a player has 13 or less life.:CheckSVar$ X | SVarCompare$ LE13
T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigDealDamage | TriggerDescription$ At the beginning of your end step, CARDNAME deals 1 damage to each player.
SVar:TrigDealDamage:DB$ DealDamage | Defined$ Player | NumDmg$ 1
SVar:X:PlayerCountPlayers$LowestLifeTotal
AlternateMode:Specialize
DeckHas:Ability$Discard
Oracle:Deathtouch\nSpecialize {2}. Activate only if a player has 13 or less life.\nAt the beginning of your end step, Shadowheart, Sharran Cleric deals 1 damage to each player.
SPECIALIZE:WHITE
Name:Shadowheart, Cleric of Order
ManaCost:1 W B
Types:Legendary Creature Human Elf Cleric
PT:4/4
K:Deathtouch
T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigDealDamage | TriggerDescription$ At the beginning of your end step, CARDNAME deals 1 damage to each player.
SVar:TrigDealDamage:DB$ DealDamage | Defined$ Player | NumDmg$ 1
T:Mode$ LifeLost | ValidPlayer$ You | TriggerZones$ Battlefield | PlayerTurn$ True | Execute$ TrigToken | TriggerDescription$ Whenever you lose life during your turn, create a 2/2 white Knight creature token.
SVar:TrigToken:DB$ Token | TokenScript$ w_2_2_knight
DeckHas:Ability$Token & Type$Knight
Oracle:Deathtouch\nAt the beginning of your end step, Shadowheart, Cleric of Order deals 1 damage to each player.\nWhenever you lose life during your turn, create a 2/2 white Knight creature token.
SPECIALIZE:BLUE
Name:Shadowheart, Cleric of Trickery
ManaCost:1 U B
Types:Legendary Creature Human Elf Cleric
PT:4/4
K:Deathtouch
T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigDealDamage | TriggerDescription$ At the beginning of your end step, CARDNAME deals 1 damage to each player.
SVar:TrigDealDamage:DB$ DealDamage | Defined$ Player | NumDmg$ 1
T:Mode$ LifeLost | ValidPlayer$ You | TriggerZones$ Battlefield | PlayerTurn$ True | Execute$ TrigDraw | TriggerDescription$ Whenever you lose life during your turn, draw a card.
SVar:TrigDraw:DB$ Draw
Oracle:Deathtouch\nAt the beginning of your end step, Shadowheart, Cleric of Trickery deals 1 damage to each player.\nWhenever you lose life during your turn, draw a card.
SPECIALIZE:BLACK
Name:Shadowheart, Cleric of Graves
ManaCost:1 B B
Types:Legendary Creature Human Elf Cleric
PT:4/4
K:Deathtouch
K:Lifelink
T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigDealDamage | TriggerDescription$ At the beginning of your end step, CARDNAME deals 1 damage to each player.
SVar:TrigDealDamage:DB$ DealDamage | Defined$ Player | NumDmg$ 1
DeckHas:Ability$LifeGain
Oracle:Deathtouch, lifelink\nAt the beginning of your end step, Shadowheart, Cleric of Graves deals 1 damage to each player.
SPECIALIZE:RED
Name:Shadowheart, Cleric of War
ManaCost:1 B R
Types:Legendary Creature Human Elf Cleric
PT:4/4
K:Deathtouch
T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigDamageAll | TriggerDescription$ At the beginning of your end step, CARDNAME deals 1 damage to each player.
SVar:TrigDamageAll:DB$ DealDamage | Defined$ Player | NumDmg$ 1
T:Mode$ LifeLost | ValidPlayer$ You | TriggerZones$ Battlefield | PlayerTurn$ True | Execute$ TrigDamageOpp | TriggerDescription$ Whenever you lose life during your turn, NICKNAME deals that much damage to each opponent.
SVar:TrigDamageOpp:DB$ DealDamage | NumDmg$ X | Defined$ Opponent
SVar:X:TriggerCount$LifeAmount
Oracle:Deathtouch\nAt the beginning of your end step, Shadowheart, Cleric of War deals 1 damage to each player.\nWhenever you lose life during your turn, Shadowheart deals that much damage to each opponent.
SPECIALIZE:GREEN
Name:Shadowheart, Cleric of Twilight
ManaCost:1 B G
Types:Legendary Creature Human Elf Cleric
PT:4/4
K:Deathtouch
S:Mode$ CantBlockBy | ValidAttacker$ Creature.Self | ValidBlocker$ Creature.powerLE2 | Description$ CARDNAME can't be blocked by creatures with power 2 or less.
T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigDealDamage | TriggerDescription$ At the beginning of your end step, NICKNAME deals 1 damage to each player.
SVar:TrigDealDamage:DB$ DealDamage | Defined$ Player | NumDmg$ 1
T:Mode$ LifeLost | ValidPlayer$ You | TriggerZones$ Battlefield | PlayerTurn$ True | Execute$ TrigPutCounter | TriggerDescription$ Whenever you lose life during your turn, put a +1/+1 counter on NICKNAME.
SVar:TrigPutCounter:DB$ PutCounter | CounterType$ P1P1
Oracle:Deathtouch\nShadowheart, Cleric of Twilight can't be blocked by creatures with power 2 or less.\nAt the beginning of your end step, Shadowheart deals 1 damage to each player.\nWhenever you lose life during your turn, put a +1/+1 counter on Shadowheart.