diff --git a/.gitattributes b/.gitattributes index 83c4dcd23e8..ea6b510a8b1 100644 --- a/.gitattributes +++ b/.gitattributes @@ -14450,6 +14450,7 @@ src/main/java/forge/game/event/GameEventCardDamaged.java -text src/main/java/forge/game/event/GameEventCardDestroyed.java -text src/main/java/forge/game/event/GameEventCardDiscarded.java -text src/main/java/forge/game/event/GameEventCardEquipped.java -text +src/main/java/forge/game/event/GameEventCardExiled.java -text src/main/java/forge/game/event/GameEventCardRegenerated.java -text src/main/java/forge/game/event/GameEventCardSacrificed.java -text src/main/java/forge/game/event/GameEventCardTapped.java -text diff --git a/src/main/java/forge/game/GameAction.java b/src/main/java/forge/game/GameAction.java index 33ccd05c1cc..2ba628aa50b 100644 --- a/src/main/java/forge/game/GameAction.java +++ b/src/main/java/forge/game/GameAction.java @@ -59,6 +59,7 @@ import forge.card.trigger.TriggerType; import forge.card.trigger.ZCTrigger; import forge.game.ai.ComputerUtil; import forge.game.event.GameEventCardDestroyed; +import forge.game.event.GameEventCardExiled; import forge.game.event.GameEventCardRegenerated; import forge.game.event.GameEventCardSacrificed; import forge.game.event.GameEventGameFinished; @@ -693,6 +694,9 @@ public class GameAction { } final PlayerZone removed = c.getOwner().getZone(ZoneType.Exile); + // play the Exile sound + game.fireEvent(new GameEventCardExiled()); + return moveTo(removed, c); } diff --git a/src/main/java/forge/game/event/GameEventCardExiled.java b/src/main/java/forge/game/event/GameEventCardExiled.java new file mode 100644 index 00000000000..02e3473b9ea --- /dev/null +++ b/src/main/java/forge/game/event/GameEventCardExiled.java @@ -0,0 +1,10 @@ +package forge.game.event; + +public class GameEventCardExiled extends GameEvent { + + @Override + public T visit(IGameEventVisitor visitor) { + return visitor.visit(this); + } +} + diff --git a/src/main/java/forge/game/event/IGameEventVisitor.java b/src/main/java/forge/game/event/IGameEventVisitor.java index 0a34fee31ce..a07c7593005 100644 --- a/src/main/java/forge/game/event/IGameEventVisitor.java +++ b/src/main/java/forge/game/event/IGameEventVisitor.java @@ -12,6 +12,7 @@ public interface IGameEventVisitor { T visit(GameEventCardDestroyed event); T visit(GameEventCardDiscarded event); T visit(GameEventCardEquipped event); + T visit(GameEventCardExiled event); T visit(GameEventCardRegenerated event); T visit(GameEventCardSacrificed event); T visit(GameEventAnteCardsSelected event); @@ -51,6 +52,7 @@ public interface IGameEventVisitor { public T visit(GameEventCardDestroyed event) { return null; } public T visit(GameEventCardDiscarded event) { return null; } public T visit(GameEventCardEquipped event) { return null; } + public T visit(GameEventCardExiled event) { return null; } public T visit(GameEventCardRegenerated event) { return null; } public T visit(GameEventCardSacrificed event) { return null; } public T visit(GameEventAnteCardsSelected event) { return null; } diff --git a/src/main/java/forge/sound/EventVisualizer.java b/src/main/java/forge/sound/EventVisualizer.java index 9fbde04efa8..a632cc83205 100644 --- a/src/main/java/forge/sound/EventVisualizer.java +++ b/src/main/java/forge/sound/EventVisualizer.java @@ -16,6 +16,7 @@ import forge.game.event.GameEventDrawCard; import forge.game.event.GameEventGameOutcome; import forge.game.event.GameEventTurnEnded; import forge.game.event.GameEvent; +import forge.game.event.GameEventCardExiled; import forge.game.event.GameEventFlipCoin; import forge.game.event.GameEventLandPlayed; import forge.game.event.GameEventLifeLoss; @@ -38,6 +39,7 @@ public class EventVisualizer extends IGameEventVisitor.Base { public SoundEffectType visit(GameEventCardDestroyed event) { return SoundEffectType.Destroy; } public SoundEffectType visit(GameEventCardDiscarded event) { return SoundEffectType.Discard; } public SoundEffectType visit(GameEventCardEquipped event) { return SoundEffectType.Equip; } + public SoundEffectType visit(GameEventCardExiled event) { return SoundEffectType.Exile; } public SoundEffectType visit(GameEventCardRegenerated event) { return SoundEffectType.Regen; } public SoundEffectType visit(GameEventCardSacrificed event) { return SoundEffectType.Sacrifice; } public SoundEffectType visit(GameEventCounterAdded event) { return event.Amount > 0 ? SoundEffectType.AddCounter : null; } diff --git a/src/main/java/forge/sound/SoundEffectType.java b/src/main/java/forge/sound/SoundEffectType.java index 116eaeeccf8..016e95ec049 100644 --- a/src/main/java/forge/sound/SoundEffectType.java +++ b/src/main/java/forge/sound/SoundEffectType.java @@ -50,6 +50,7 @@ public enum SoundEffectType { Enchantment("enchant.wav", false), EndOfTurn("end_of_turn.wav", false), Equip("equip.wav", false), + Exile("exile.wav", false), FlipCoin("flip_coin.wav", false), GreenLand("green_land.wav", false), Instant("instant.wav", false),