CLB - 22 Jul (more) (#1174)

* druidic_ritual.txt

* en-US.properties better Mill prompt

* fraying_line.txt

* barrowin_of_clan_undurr.txt should not target

* emerald_dragon_dissonant_wave.txt

* flaming_fist.txt

* drillworks_mole.txt

* CounterEnumType.ROPE

* druidic_ritual.txt just one ChangeZone

* ChangeZoneEffect.changeZonePlayerInvariant support ChangeType$ EACH X & Y

* ChangeZoneEffect.changeHiddenOriginStackDescription improve Yard -> Hand
This commit is contained in:
Northmoc
2022-07-25 02:58:47 -04:00
committed by GitHub
parent bc8388ba3b
commit c28a1f0f98
9 changed files with 74 additions and 8 deletions

View File

@@ -280,12 +280,13 @@ public class ChangeZoneEffect extends SpellAbilityEffect {
} else {
changed = Lang.nounWithNumeralExceptOne(num, type + cardTag);
}
final boolean battlefield = destination.equals("Battlefield");
final boolean toField = destination.equals("Battlefield");
final boolean toHand = destination.equals("Hand");
sb.append(chooserNames).append(" returns ").append(mandatory || changeNumDesc ? "" : "up to ");
sb.append(changed);
// so far, it seems non-targeted only lets you return from your own graveyard
sb.append(" from their graveyard").append(choosers.size() > 1 ? "s" : "");
sb.append(battlefield ? " to the " : " into their ").append(destination.toLowerCase());
sb.append(toField ? " to the " : toHand ? " to their " : " into their ").append(destination.toLowerCase());
if (sa.hasParam("WithCountersType")) {
final CounterType cType = CounterType.getType(sa.getParam("WithCountersType"));
if (cType != null) {
@@ -1068,7 +1069,7 @@ public class ChangeZoneEffect extends SpellAbilityEffect {
searchedLibrary = false;
}
if (!defined && changeType != null) {
if (!defined && changeType != null && !changeType.startsWith("EACH")) {
fetchList = (CardCollection)AbilityUtils.filterListByType(fetchList, sa.getParam("ChangeType"), sa);
}
@@ -1090,8 +1091,21 @@ public class ChangeZoneEffect extends SpellAbilityEffect {
fetchList.sort();
CardCollection chosenCards = new CardCollection();
// only multi-select if player can select more than one
if (changeNum > 1 && allowMultiSelect(decider, sa)) {
if (changeType.startsWith("EACH")) {
String[] eachTypes = changeType.substring(5).split(" & ");
for (String thisType : eachTypes) {
for (int i = 0; i < changeNum && destination != null; i++) {
CardCollection thisList = (CardCollection) AbilityUtils.filterListByType(fetchList, thisType, sa);
if (!chosenCards.isEmpty()) {
thisList.removeAll(chosenCards);
}
Card c = decider.getController().chooseSingleCardForZoneChange(destination, origin, sa,
thisList, delayedReveal, selectPrompt, !sa.hasParam("Mandatory"), decider);
chosenCards.add(c);
}
}
} else if (changeNum > 1 && allowMultiSelect(decider, sa)) {
// only multi-select if player can select more than one
List<Card> selectedCards;
if (!sa.hasParam("SelectPrompt")) {
// new default messaging for multi select

View File

@@ -289,6 +289,8 @@ public enum CounterEnumType {
RITUAL("RITUAL", 155, 17, 30),
ROPE("ROPE", 239, 223, 187),
RUST("RUST", 255, 181, 116),
SCREAM("SCREM", 0, 220, 255),

View File

@@ -4,8 +4,9 @@ Types:Legendary Creature Dwarf Cleric
PT:3/3
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ DBVenture | TriggerDescription$ When CARDNAME enters the battlefield, venture into the dungeon. (Enter the first room or advance to the next room.)
T:Mode$ Attacks | ValidCard$ Card.Self | CheckSVar$ X | SVarCompare$ GE1 | Execute$ DBChangeZone | TriggerDescription$ Whenever CARDNAME attacks, return up to one creature card with mana value 3 or less from your graveyard to the battlefield if you've completed a dungeon.
SVar:DBChangeZone:DB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | TgtPrompt$ Choose target creature in your graveyard | ValidTgts$ Creature.YouOwn+cmcLE3
SVar:DBChangeZone:DB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | Hidden$ True | ChangeType$ Creature.YouOwn+cmcLE3
SVar:DBVenture:DB$ Venture | Defined$ You
SVar:X:PlayerCountPropertyYou$DungeonsCompleted
DeckHints:Ability$Graveyard
DeckHints:Ability$Mill|Discard
DeckHas:Ability$Graveyard
Oracle:When Barrowin of Clan Undurr enters the battlefield, venture into the dungeon. (Enter the first room or advance to the next room.)\nWhenever Barrowin of Clan Undurr attacks, return up to one creature card with mana value 3 or less from your graveyard to the battlefield if you've completed a dungeon.

View File

@@ -0,0 +1,7 @@
Name:Drillworks Mole
ManaCost:1
Types:Artifact Creature Mole
PT:1/1
A:AB$ PutCounter | Cost$ 2 T | Defined$ Self & Targeted | TargetMin$ 0 | TargetMax$ 1 | ValidTgts$ Creature.IsCommander+YouCtrl | TgtPrompt$ Select up to one target commander creature you control | CounterType$ P1P1 | SpellDescription$ Put a +1/+1 counter on CARDNAME and a +1/+1 counter on up to one target commander creature you control.
DeckHas:Ability$Counters
Oracle:{2}, {T}: Put a +1/+1 counter on Drillworks Mole and a +1/+1 counter on up to one target commander creature you control.

View File

@@ -0,0 +1,7 @@
Name:Druidic Ritual
ManaCost:2 G
Types:Sorcery
A:SP$ Mill | NumCards$ 3 | Optional$ True | SubAbility$ DBReturn | SpellDescription$ You may mill three cards.
SVar:DBReturn:DB$ ChangeZone | Origin$ Graveyard | Destination$ Hand | Hidden$ True | ChangeType$ EACH Creature.YouOwn & Land.YouOwn | ChangeTypeDesc$ creature card they own and up to one land card they own | SubAbility$ DBReturn2 | SpellDescription$ Then return up to one creature card and up to one land card from your graveyard to your hand. (To mill a card, put the top card of your library into your graveyard.)
DeckHas:Ability$Mill|Graveyard
Oracle:You may mill three cards. Then return up to one creature card and up to one land card from your graveyard to your hand. (To mill a card, put the top card of your library into your graveyard.)

View File

@@ -0,0 +1,16 @@
Name:Emerald Dragon
ManaCost:4 G G
Types:Creature Dragon
PT:4/4
K:Flying
K:Trample
AlternateMode:Adventure
Oracle:Flying, trample
ALTERNATE
Name:Dissonant Wave
ManaCost:2 G
Types:Instant Adventure
A:SP$ Counter | TargetType$ Activated,Triggered | TgtPrompt$ Select target activated or triggered ability from a noncreature source | ValidTgts$ Card.nonCreature | SpellDescription$ Counter target activated or triggered ability from a noncreature source. (Then exile this card. You may cast the creature later from exile.)
Oracle:Counter target activated or triggered ability from a noncreature source. (Then exile this card. You may cast the creature later from exile.)

View File

@@ -0,0 +1,9 @@
Name:Flaming Fist
ManaCost:2 W
Types:Legendary Enchantment Background
S:Mode$ Continuous | Affected$ Creature.IsCommander+YouOwn | AddTrigger$ Attacks | AddSVar$ AE | Description$ Commander creatures you own have "Whenever this creature attacks, it gains double strike until end of turn."
SVar:Attacks:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigPump | TriggerDescription$ Whenever this creature attacks, it gains double strike until end of turn.
SVar:TrigPump:DB$ Pump | KW$ Double Strike
SVar:AE:SVar:HasAttackEffect:TRUE
AI:RemoveDeck:NonCommander
Oracle:Commander creatures you own have "Whenever this creature attacks, it gains double strike until end of turn."

View File

@@ -0,0 +1,10 @@
Name:Fraying Line
ManaCost:4
Types:Artifact
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigPutCounter | TriggerDescription$ When CARDNAME enters the battlefield, put a rope counter on target creature you control.
SVar:TrigPutCounter:DB$ PutCounter | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select target creature you control | CounterType$ ROPE
T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ Player | TriggerZones$ Battlefield | Execute$ TrigRope | TriggerDescription$ At the beginning of each player's upkeep, that player may pay {2}. If they do, they put a rope counter on a creature they control. Otherwise, exile CARDNAME and each creature without a rope counter on it, then remove all rope counters from all creatures.
SVar:TrigRope:DB$ PutCounter | UnlessCost$ 2 | UnlessPayer$ TriggeredPlayer | UnlessSwitched$ True | Chooser$ TriggeredPlayer | Choices$ Creature.ControlledBy TriggeredPlayer | CounterType$ ROPE | UnlessResolveSubs$ WhenNotPaid | SubAbility$ CostNotPaid
SVar:CostNotPaid:DB$ ChangeZoneAll | ChangeType$ Card.Self,Creature.counters_EQ0_ROPE | Origin$ Battlefield | Destination$ Exile | SubAbility$ DBRemoveRope
SVar:DBRemoveRope:DB$ RemoveCounterAll | ValidCards$ Creature | CounterType$ ROPE | AllCounters$ True
Oracle:When Fraying Line enters the battlefield, put a rope counter on target creature you control.\nAt the beginning of each player's upkeep, that player may pay {2}. If they do, they put a rope counter on a creature they control. Otherwise, exile Fraying Line and each creature without a rope counter on it, then remove all rope counters from all creatures.

View File

@@ -1989,7 +1989,7 @@ lblChooseCardToManifest=Choose cards to manifest
#MeldEffect.java
lblChooseCardToMeld=Choose card to meld with
#MillEffect.java
lblDoYouWantPutLibraryCardsTo=Do you want to put card(s) from library to {0}?
lblDoYouWantPutLibraryCardsTo=Do you want to mill? (to {0})
#MultiplePilesEffect.java
lblChooseCardsInTargetPile=Choose cards in Pile {0}?
#MutateEffect.java