diff --git a/forge-game/src/main/java/forge/game/ability/effects/ChooseEntityEffect.java b/forge-game/src/main/java/forge/game/ability/effects/ChooseEntityEffect.java index f6a252a2f48..b702c7ed633 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/ChooseEntityEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/ChooseEntityEffect.java @@ -19,8 +19,8 @@ import java.util.List; public class ChooseEntityEffect extends SpellAbilityEffect { @Override protected String getStackDescription(SpellAbility sa) { - return (sa.hasParam("StackDescription") ? sa.getParam("StackDescription") : - sa.getParamOrDefault("SpellDescription", "Write a Stack/SpellDescription!")); + return sa.hasParam("StackDescription") ? sa.getParam("StackDescription") : + sa.getParamOrDefault("SpellDescription", "Write a Stack/SpellDescription!"); } @Override diff --git a/forge-game/src/main/java/forge/game/ability/effects/ChooseGenericEffect.java b/forge-game/src/main/java/forge/game/ability/effects/ChooseGenericEffect.java index 2a8bff2a550..e9a597697c1 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/ChooseGenericEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/ChooseGenericEffect.java @@ -67,7 +67,7 @@ public class ChooseGenericEffect extends SpellAbilityEffect { } List chosenSAs = Lists.newArrayList(); - String prompt = sa.getParamOrDefault("ChoicePrompt","Choose"); + String prompt = sa.getParamOrDefault("ChoicePrompt", "Choose"); boolean random = false; if (sa.hasParam("AtRandom")) { random = true; diff --git a/forge-game/src/main/java/forge/game/ability/effects/ChoosePlayerEffect.java b/forge-game/src/main/java/forge/game/ability/effects/ChoosePlayerEffect.java index 2ab519612f0..62dba5b5b40 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/ChoosePlayerEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/ChoosePlayerEffect.java @@ -42,17 +42,13 @@ public class ChoosePlayerEffect extends SpellAbilityEffect { for (final Player p : tgtPlayers) { if ((tgt == null) || p.canBeTargetedBy(sa)) { - - // Was if (sa.getActivatingPlayer().isHuman()) but defined player was being - // overwritten by activatingPlayer (or controller if no activator was set). - // Revert if it causes issues and remove Goblin Festival from card database. Player chosen; if (random) { chosen = choices.isEmpty() ? null : Aggregates.random(choices); } else { chosen = choices.isEmpty() ? null : p.getController().chooseSingleEntityForEffect(choices, sa, choiceDesc, null); } - if( null != chosen ) { + if (null != chosen) { if (sa.hasParam("Secretly")) { card.setSecretChosenPlayer(chosen); } else { diff --git a/forge-game/src/main/java/forge/game/player/PlayerProperty.java b/forge-game/src/main/java/forge/game/player/PlayerProperty.java index 303f00c3cad..cf20c38a3c3 100644 --- a/forge-game/src/main/java/forge/game/player/PlayerProperty.java +++ b/forge-game/src/main/java/forge/game/player/PlayerProperty.java @@ -391,7 +391,18 @@ public class PlayerProperty { if (player.getVenturedThisTurn() < 1) { return false; } - } + } else if (property.startsWith("NotedFor")) { + final String key = property.substring("NotedFor".length()); + for (String note : player.getNotesForName(key)) { + if (note.equals("Name:" + source.getName())) { + return true; + } + if (note.equals("Id:" + source.getId())) { + return true; + } + } + return false; + } return true; } diff --git a/forge-gui/res/cardsfolder/a/archangel_of_strife.txt b/forge-gui/res/cardsfolder/a/archangel_of_strife.txt index 21187640f6b..a9bde07ae90 100644 --- a/forge-gui/res/cardsfolder/a/archangel_of_strife.txt +++ b/forge-gui/res/cardsfolder/a/archangel_of_strife.txt @@ -4,11 +4,12 @@ Types:Creature Angel PT:6/6 K:Flying K:ETBReplacement:Other:ChooseEach -SVar:ChooseEach:DB$ RepeatEach | RepeatPlayers$ Player | RepeatSubAbility$ DBChoice | SpellDescription$ As CARDNAME enters the battlefield, each player chooses war or peace. Creatures controlled by players who chose war get +3/+0. Creatures controlled by players who chose peace get +0/+3. +SVar:ChooseEach:DB$ RepeatEach | RepeatPlayers$ Player | RepeatSubAbility$ DBChoice | SubAbility$ DBRemember | ClearRememberedBeforeLoop$ True | SpellDescription$ As CARDNAME enters the battlefield, each player chooses war or peace. Creatures controlled by players who chose war get +3/+0. Creatures controlled by players who chose peace get +0/+3. SVar:DBChoice:DB$ GenericChoice | Defined$ Player.IsRemembered | Choices$ WarChoice,PeaceChoice -SVar:WarChoice:DB$ Effect | Name$ Archangel War Effect | StaticAbilities$ WarPump | SpellDescription$ War | EffectOwner$ Player.IsRemembered | Duration$ UntilHostLeavesPlay -SVar:PeaceChoice:DB$ Effect | Name$ Archangel Peace Effect | StaticAbilities$ PeacePump | SpellDescription$ Peace | EffectOwner$ Player.IsRemembered | Duration$ UntilHostLeavesPlay -SVar:WarPump:Mode$ Continuous | EffectZone$ Command | AffectedZone$ Battlefield | Affected$ Creature.YouCtrl | AddPower$ 3 | Description$ Creatures you control get +3/+0. -SVar:PeacePump:Mode$ Continuous | EffectZone$ Command | AffectedZone$ Battlefield | Affected$ Creature.YouCtrl | AddToughness$ 3 | Description$ Creatures you control get +0/+3. +SVar:WarChoice:DB$ Pump | Defined$ Player.IsRemembered | NoteCards$ Self | NoteCardsFor$ Strife | SpellDescription$ War +SVar:PeaceChoice:DB$ Pump | Defined$ Player.IsRemembered | ClearNotedCardsFor$ Strife | SpellDescription$ Peace +SVar:DBRemember:DB$ Pump | RememberObjects$ Player.NotedForStrife +S:Mode$ Continuous | AffectedZone$ Battlefield | Affected$ Creature.ControlledBy Remembered | AddPower$ 3 | Description$ Creatures controlled by players who chose war get +3/+0. +S:Mode$ Continuous | AffectedZone$ Battlefield | Affected$ Creature.!ControlledBy Remembered | AddToughness$ 3 | Description$ Creatures controlled by players who chose peace get +0/+3. AI:RemoveDeck:Random Oracle:Flying\nAs Archangel of Strife enters the battlefield, each player chooses war or peace.\nCreatures controlled by players who chose war get +3/+0.\nCreatures controlled by players who chose peace get +0/+3.