From 29ae50a2c42dca6cb148e7609a18a25ee6a8753c Mon Sep 17 00:00:00 2001 From: Agetian Date: Mon, 14 Sep 2015 16:04:41 +0000 Subject: [PATCH] - Fixed Lightning Storm and possibly other similar cards with abilities that can be activated from stack not registering in the Flashback zone correctly when going to stack. - Currently a bit hacky (involves force-updating the flashback zone for view on adding a card to stack if there are externally activatable cards on stack at the moment the spell is added to stack), feel free to improve. - There are still some visual glitches related to flashback and cards activated on stack - after the spell is cast, the spell sometimes visually "lingers" in the flashback zone for some time and then gets removed from there with time. Not sure how to fix. --- .../src/main/java/forge/game/player/Player.java | 4 ++++ .../src/main/java/forge/game/player/PlayerView.java | 4 ++++ .../src/main/java/forge/game/zone/MagicStack.java | 11 +++++++++++ 3 files changed, 19 insertions(+) diff --git a/forge-game/src/main/java/forge/game/player/Player.java b/forge-game/src/main/java/forge/game/player/Player.java index 0134a6a418e..32ca781304a 100644 --- a/forge-game/src/main/java/forge/game/player/Player.java +++ b/forge-game/src/main/java/forge/game/player/Player.java @@ -267,6 +267,10 @@ public class Player extends GameEntity implements Comparable { view.updateOpponents(this); } + public void updateFlashbackForView() { + view.updateFlashbackForPlayer(this); + } + //get single opponent for player if only one, otherwise returns null //meant to be used after game ends for the sake of achievements public Player getSingleOpponent() { diff --git a/forge-game/src/main/java/forge/game/player/PlayerView.java b/forge-game/src/main/java/forge/game/player/PlayerView.java index b70b9ab4af8..1bc11c5e2f5 100644 --- a/forge-game/src/main/java/forge/game/player/PlayerView.java +++ b/forge-game/src/main/java/forge/game/player/PlayerView.java @@ -337,6 +337,10 @@ public class PlayerView extends GameEntityView { } } + void updateFlashbackForPlayer(Player p) { + set(TrackableProperty.Flashback, CardView.getCollection(p.getCardsIn(ZoneType.Flashback))); + } + public int getMana(final byte color) { Integer count = getMana().get(color); return count != null ? count.intValue() : 0; diff --git a/forge-game/src/main/java/forge/game/zone/MagicStack.java b/forge-game/src/main/java/forge/game/zone/MagicStack.java index 354ce13c152..5cf0db869c3 100644 --- a/forge-game/src/main/java/forge/game/zone/MagicStack.java +++ b/forge-game/src/main/java/forge/game/zone/MagicStack.java @@ -47,10 +47,12 @@ import forge.game.card.CardLists; import forge.game.card.CardPredicates; import forge.game.card.CardPredicates.Presets; import forge.game.cost.Cost; +import forge.game.event.EventValueChangeType; import forge.game.event.GameEventCardStatsChanged; import forge.game.event.GameEventSpellAbilityCast; import forge.game.event.GameEventSpellRemovedFromStack; import forge.game.event.GameEventSpellResolved; +import forge.game.event.GameEventZone; import forge.game.player.Player; import forge.game.player.PlayerController.ManaPaymentPurpose; import forge.game.replacement.ReplacementEffect; @@ -415,6 +417,15 @@ public class MagicStack /* extends MyObservable */ implements Iterable