From 10b78114bbbd6310a466fce11a8ea070393483ac Mon Sep 17 00:00:00 2001 From: tool4ever Date: Sat, 6 Jul 2024 17:05:06 +0200 Subject: [PATCH] Fix Bamboozling Beebles (#5531) Co-authored-by: TRT <> --- .../game/ability/effects/ReplaceEffect.java | 6 ++---- .../java/forge/game/card/CardProperty.java | 19 +++++++++---------- .../upcoming/havi_the_all_father.txt | 2 +- 3 files changed, 12 insertions(+), 15 deletions(-) diff --git a/forge-game/src/main/java/forge/game/ability/effects/ReplaceEffect.java b/forge-game/src/main/java/forge/game/ability/effects/ReplaceEffect.java index 26802697ab7..82fa064dc41 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/ReplaceEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/ReplaceEffect.java @@ -3,7 +3,6 @@ package forge.game.ability.effects; import java.util.List; import java.util.Map; -import com.google.common.collect.Maps; import forge.game.GameObject; import forge.game.PlanarDice; import forge.game.ability.AbilityKey; @@ -45,11 +44,10 @@ public class ReplaceEffect extends SpellAbilityEffect { } else if ("PlanarDice".equals(type)) { params.put(varName, PlanarDice.smartValueOf(varValue)); } else if ("Map".equals(type)) { - Map m = Maps.newHashMap(); + Map m = (Map) sa.getReplacingObject(varName); for (Player key : AbilityUtils.getDefinedPlayers(card, sa.getParam("VarKey"), sa)) { - m.put(key, AbilityUtils.calculateAmount(card, varValue, sa)); + m.put(key, m.getOrDefault(key, 0) + AbilityUtils.calculateAmount(card, varValue, sa)); } - params.put(varName, m); } else { params.put(varName, AbilityUtils.calculateAmount(card, varValue, sa)); } diff --git a/forge-game/src/main/java/forge/game/card/CardProperty.java b/forge-game/src/main/java/forge/game/card/CardProperty.java index 027843841fb..f901355ee19 100644 --- a/forge-game/src/main/java/forge/game/card/CardProperty.java +++ b/forge-game/src/main/java/forge/game/card/CardProperty.java @@ -584,21 +584,20 @@ public class CardProperty { } } } else if (property.startsWith("EquippedBy") || property.startsWith("AttachedBy")) { - if (property.substring(10).equals("Targeted")) { - for (final Card c : AbilityUtils.getDefinedCards(source, "Targeted", spellAbility)) { - if (!card.hasCardAttachment(c)) { - return false; - } - } - } else if (property.substring(10).equals("Enchanted")) { + String prop = property.substring(10); + if (prop.equals("Enchanted")) { if (source.getEnchantingCard() == null || !card.hasCardAttachment(source.getEnchantingCard())) { return false; } - } else { - if (!card.hasCardAttachment(source)) { - return false; + } else if (!StringUtils.isBlank(prop)) { + for (final Card c : AbilityUtils.getDefinedCards(source, prop, spellAbility)) { + if (!card.hasCardAttachment(c)) { + return false; + } } + } else if (!card.hasCardAttachment(source)) { + return false; } } else if (property.startsWith("FortifiedBy")) { if (!card.hasCardAttachment(source)) { diff --git a/forge-gui/res/cardsfolder/upcoming/havi_the_all_father.txt b/forge-gui/res/cardsfolder/upcoming/havi_the_all_father.txt index 2db966d6ba8..7248b7e5f3a 100644 --- a/forge-gui/res/cardsfolder/upcoming/havi_the_all_father.txt +++ b/forge-gui/res/cardsfolder/upcoming/havi_the_all_father.txt @@ -1,5 +1,5 @@ Name:Havi, the All-Father -ManaCost:3 R W +ManaCost:3 R G W Types:Legendary Creature God Warrior PT:6/6 S:Mode$ Continuous | Affected$ Card.Self | IsPresent$ Card.Historic+YouOwn | PresentZone$ Graveyard | PresentCompare$ GE4 | AddKeyword$ Indestructible | Description$ CARDNAME has indestructible as long as there are four or more historic cards in your graveyard. (Artifacts, legendaries, and Sagas are historic.)