From b5267d5a648f5d457350d0fb22a56f5c35febbc0 Mon Sep 17 00:00:00 2001 From: Northmoc Date: Fri, 6 May 2022 23:19:35 -0400 Subject: [PATCH 1/6] bribe_taker.txt --- forge-gui/res/cardsfolder/upcoming/bribe_taker.txt | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 forge-gui/res/cardsfolder/upcoming/bribe_taker.txt diff --git a/forge-gui/res/cardsfolder/upcoming/bribe_taker.txt b/forge-gui/res/cardsfolder/upcoming/bribe_taker.txt new file mode 100644 index 00000000000..8477beef3bd --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/bribe_taker.txt @@ -0,0 +1,10 @@ +Name:Bribe Taker +ManaCost:5 G +Types:Creature Rhino Warrior +PT:6/6 +K:Trample +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigPutCounter | TriggerDescription$ When CARDNAME enters the battlefield, for each kind of counter on permanents you control, you may put your choice of a +1/+1 counter or a counter of that kind on CARDNAME. +SVar:TrigPutCounter:DB$ PutCounter | CounterTypes$ EachType_Permanent.YouCtrl | AltChoiceForEach$ P1P1 +DeckNeeds:Ability$Counters +DckHas:Ability$Counters +Oracle:Trample\nWhen Bribe Taker enters the battlefield, for each kind of counter on permanents you control, you may put your choice of a +1/+1 counter or a counter of that kind on Bribe Taker. From efb713405f13dcf31a7a5750af8d06459eeee2b0 Mon Sep 17 00:00:00 2001 From: Northmoc Date: Fri, 6 May 2022 23:20:13 -0400 Subject: [PATCH 2/6] CountersPutEffect support "AltChoiceForEach" --- .../forge/game/ability/effects/CountersPutEffect.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/forge-game/src/main/java/forge/game/ability/effects/CountersPutEffect.java b/forge-game/src/main/java/forge/game/ability/effects/CountersPutEffect.java index 44b6daac6b1..51fc512417a 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/CountersPutEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/CountersPutEffect.java @@ -298,6 +298,10 @@ public class CountersPutEffect extends SpellAbilityEffect { } } for (CounterType ct : counterTypes) { + if (sa.hasParam("AltChoiceForEach")) { + String typeChoices = sa.getParam("AltChoiceForEach") + "," + ct.toString(); + ct = chooseTypeFromList(sa, typeChoices, obj, pc); + } resolvePerType(sa, placer, ct, counterAmount, table, false); } } else { @@ -596,7 +600,10 @@ public class CountersPutEffect extends SpellAbilityEffect { List choices = Lists.newArrayList(); for (String s : list.split(",")) { if (!s.equals("") && (!sa.hasParam("UniqueType") || obj.getCounters(CounterType.getType(s)) == 0)) { - choices.add(CounterType.getType(s)); + CounterType type = CounterType.getType(s); + if (!choices.contains(type)) { + choices.add(type); + } } } if (sa.hasParam("RandomType")) { From 9db791d875edaac45002be60bf56eed5a71ebe2c Mon Sep 17 00:00:00 2001 From: tool4EvEr Date: Sat, 7 May 2022 10:18:19 +0200 Subject: [PATCH 3/6] Fix casting card copies not being added to stack correctly --- forge-game/src/main/java/forge/game/GameAction.java | 7 ++++++- .../java/forge/game/ability/effects/AbandonEffect.java | 2 +- .../java/forge/game/ability/effects/BalanceEffect.java | 6 +++--- .../java/forge/game/ability/effects/BidLifeEffect.java | 4 ++-- 4 files changed, 12 insertions(+), 7 deletions(-) diff --git a/forge-game/src/main/java/forge/game/GameAction.java b/forge-game/src/main/java/forge/game/GameAction.java index 06ca81ada10..591cd5f4082 100644 --- a/forge-game/src/main/java/forge/game/GameAction.java +++ b/forge-game/src/main/java/forge/game/GameAction.java @@ -275,7 +275,12 @@ public class GameAction { lastKnownInfo = CardUtil.getLKICopy(c); } - copied = CardFactory.copyCard(c, false); + // CR 707.12 casting of a card copy, don't copy it again + if (zoneTo.is(ZoneType.Stack) && c.isRealToken()) { + copied = c; + } else { + copied = CardFactory.copyCard(c, false); + } if (zoneTo.is(ZoneType.Stack)) { // when moving to stack, copy changed card information diff --git a/forge-game/src/main/java/forge/game/ability/effects/AbandonEffect.java b/forge-game/src/main/java/forge/game/ability/effects/AbandonEffect.java index 7eeffb6afec..72a88f752c5 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/AbandonEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/AbandonEffect.java @@ -34,7 +34,7 @@ public class AbandonEffect extends SpellAbilityEffect { if (sa.hasParam("RememberAbandoned")) { source.addRemembered(source); } - + game.getTriggerHandler().suppressMode(TriggerType.ChangesZone); controller.getZone(ZoneType.Command).remove(source); game.getTriggerHandler().clearSuppression(TriggerType.ChangesZone); diff --git a/forge-game/src/main/java/forge/game/ability/effects/BalanceEffect.java b/forge-game/src/main/java/forge/game/ability/effects/BalanceEffect.java index a726d0a47ee..a4d62e9f2a5 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/BalanceEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/BalanceEffect.java @@ -35,13 +35,13 @@ public class BalanceEffect extends SpellAbilityEffect { Game game = activator.getGame(); String valid = sa.getParamOrDefault("Valid", "Card"); ZoneType zone = sa.hasParam("Zone") ? ZoneType.smartValueOf(sa.getParam("Zone")) : ZoneType.Battlefield; - + int min = Integer.MAX_VALUE; - + final FCollectionView players = game.getPlayersInTurnOrder(); final List validCards = new ArrayList<>(players.size()); Map discardedMap = Maps.newHashMap(); - + for (int i = 0; i < players.size(); i++) { // Find the minimum of each Valid per player validCards.add(CardLists.getValidCards(players.get(i).getCardsIn(zone), valid, activator, source, sa)); diff --git a/forge-game/src/main/java/forge/game/ability/effects/BidLifeEffect.java b/forge-game/src/main/java/forge/game/ability/effects/BidLifeEffect.java index 99dc3eb9068..0eba85ba70f 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/BidLifeEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/BidLifeEffect.java @@ -33,7 +33,7 @@ public class BidLifeEffect extends SpellAbilityEffect { } else { startBidding = 0; } - + if (sa.hasParam("OtherBidder")) { bidPlayers.add(activator); bidPlayers.addAll(AbilityUtils.getDefinedPlayers(host, sa.getParam("OtherBidder"), sa)); @@ -62,7 +62,7 @@ public class BidLifeEffect extends SpellAbilityEffect { } } } - + host.setChosenNumber(bid); host.addRemembered(winner); final SpellAbility action = sa.getAdditionalAbility("BidSubAbility"); From ab2ea6554f54fe4efb56d1be16939d525cb6d6e6 Mon Sep 17 00:00:00 2001 From: Northmoc Date: Sat, 7 May 2022 09:43:16 -0400 Subject: [PATCH 4/6] bribe_taker.txt fix typo --- forge-gui/res/cardsfolder/upcoming/bribe_taker.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/forge-gui/res/cardsfolder/upcoming/bribe_taker.txt b/forge-gui/res/cardsfolder/upcoming/bribe_taker.txt index 8477beef3bd..65814fb74ab 100644 --- a/forge-gui/res/cardsfolder/upcoming/bribe_taker.txt +++ b/forge-gui/res/cardsfolder/upcoming/bribe_taker.txt @@ -6,5 +6,5 @@ K:Trample T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigPutCounter | TriggerDescription$ When CARDNAME enters the battlefield, for each kind of counter on permanents you control, you may put your choice of a +1/+1 counter or a counter of that kind on CARDNAME. SVar:TrigPutCounter:DB$ PutCounter | CounterTypes$ EachType_Permanent.YouCtrl | AltChoiceForEach$ P1P1 DeckNeeds:Ability$Counters -DckHas:Ability$Counters +DeckHas:Ability$Counters Oracle:Trample\nWhen Bribe Taker enters the battlefield, for each kind of counter on permanents you control, you may put your choice of a +1/+1 counter or a counter of that kind on Bribe Taker. From 8a05179a74eed24e5b2329c9fcfd7f8d09a24438 Mon Sep 17 00:00:00 2001 From: JohnWilliams77 <103562494+JohnWilliams77@users.noreply.github.com> Date: Sat, 7 May 2022 18:15:43 +0100 Subject: [PATCH 5/6] Update Secret Lair Drop Series.txt --- forge-gui/res/editions/Secret Lair Drop Series.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/forge-gui/res/editions/Secret Lair Drop Series.txt b/forge-gui/res/editions/Secret Lair Drop Series.txt index a8becaff39f..88ad80287ec 100644 --- a/forge-gui/res/editions/Secret Lair Drop Series.txt +++ b/forge-gui/res/editions/Secret Lair Drop Series.txt @@ -521,6 +521,7 @@ ScryfallCode=SLD 587 R Spellskite @Thomas M. Baxa 588 R Sphere of Safety @Johannes Voss 589 R Arcane Signet @Dan Frazier +590 R Lurking Crocodile @Crocodile Jackson 591 R Crash Through @Tyler Walpole 593 R Persistent Petitioners @Brandi Milne 596 R Persistent Petitioners @Crom From 5e8587d786d2a5c030e7397c337326738e2f0f5e Mon Sep 17 00:00:00 2001 From: Northmoc <103371817+Northmoc@users.noreply.github.com> Date: Sat, 7 May 2022 16:02:49 -0400 Subject: [PATCH 6/6] sewer_crocodile.txt remove bad NonStackingEffect line (#286) --- forge-gui/res/cardsfolder/upcoming/sewer_crocodile.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/forge-gui/res/cardsfolder/upcoming/sewer_crocodile.txt b/forge-gui/res/cardsfolder/upcoming/sewer_crocodile.txt index ec665af931f..5d83ef75d7a 100644 --- a/forge-gui/res/cardsfolder/upcoming/sewer_crocodile.txt +++ b/forge-gui/res/cardsfolder/upcoming/sewer_crocodile.txt @@ -5,5 +5,4 @@ PT:4/6 A:AB$ Pump | Cost$ 3 U | Defined$ Self | KW$ HIDDEN Unblockable | ReduceCost$ X | SpellDescription$ CARDNAME can't be blocked this turn. SVar:X:Count$Compare Y GE5.3.0 SVar:Y:Count$ValidGraveyard Card.YouOwn$DifferentCMC -SVar:NonStackingEffect:True Oracle:{3}{U}: Sewer Crocodile can't be blocked this turn. This ability costs {3} less to activate if there are five or more mana values among cards in your graveyard.