From 2544c12d481d03b77c405bdacfc6043edc44828e Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Sun, 1 Feb 2015 16:47:21 +0100 Subject: [PATCH] * Some minor changes. --- .../main/java/mage/server/game/GameController.java | 14 ++++++-------- Mage.Sets/src/mage/sets/lorwyn/MistbindClique.java | 2 +- Mage.Sets/src/mage/sets/tenth/GloriousAnthem.java | 2 ++ Mage.Sets/src/mage/sets/zendikar/GoblinGuide.java | 6 ++++-- .../cards/cost/sacrifice/MomentousFallTest.java | 8 ++++++++ .../src/mage/abilities/keyword/UndyingAbility.java | 5 ++--- 6 files changed, 23 insertions(+), 14 deletions(-) diff --git a/Mage.Server/src/main/java/mage/server/game/GameController.java b/Mage.Server/src/main/java/mage/server/game/GameController.java index 74242345ac1..efcf3e22a57 100644 --- a/Mage.Server/src/main/java/mage/server/game/GameController.java +++ b/Mage.Server/src/main/java/mage/server/game/GameController.java @@ -940,7 +940,8 @@ public class GameController implements GameCallback { private void sendMessage(UUID userId, Command command) { final UUID playerId = userPlayerMap.get(userId); // player has game under control (is not cotrolled by other player) - if (game.getPlayer(playerId).isGameUnderControl()) { + Player player = game.getPlayer(playerId); + if (player != null && player.isGameUnderControl()) { // if it's your priority (or game not started yet in which case it will be null) // then execute only your action if (game.getPriorityPlayerId() == null || game.getPriorityPlayerId().equals(playerId)) { @@ -950,13 +951,10 @@ public class GameController implements GameCallback { } } else { // otherwise execute the action under other player's control - Player player = game.getPlayer(playerId); - if (player != null) { - for (UUID controlled : player.getPlayersUnderYourControl()) { - if (gameSessions.containsKey(controlled) && game.getPriorityPlayerId().equals(controlled)) { - cancelTimeout(); - command.execute(controlled); - } + for (UUID controlled : player.getPlayersUnderYourControl()) { + if (gameSessions.containsKey(controlled) && game.getPriorityPlayerId().equals(controlled)) { + cancelTimeout(); + command.execute(controlled); } } // else player has no priority to do something, so ignore the command diff --git a/Mage.Sets/src/mage/sets/lorwyn/MistbindClique.java b/Mage.Sets/src/mage/sets/lorwyn/MistbindClique.java index 78e6651dee3..00aaf080e69 100644 --- a/Mage.Sets/src/mage/sets/lorwyn/MistbindClique.java +++ b/Mage.Sets/src/mage/sets/lorwyn/MistbindClique.java @@ -109,7 +109,7 @@ class MistbindCliqueAbility extends ZoneChangeTriggeredAbility { if (event.getType() == GameEvent.EventType.ZONE_CHANGE && event.getSourceId() != null && event.getSourceId().equals(getSourceId())) { ZoneChangeEvent zEvent = (ZoneChangeEvent)event; if (zEvent.getFromZone() == Zone.BATTLEFIELD && zEvent.getToZone() == Zone.EXILED) { - if (zEvent.getTarget() != null && zEvent.getTarget().getSubtype().contains("Faerie")) { + if (zEvent.getTarget() != null && zEvent.getTarget().hasSubtype("Faerie")) { return true; } } diff --git a/Mage.Sets/src/mage/sets/tenth/GloriousAnthem.java b/Mage.Sets/src/mage/sets/tenth/GloriousAnthem.java index 98799b91db3..3823a339df7 100644 --- a/Mage.Sets/src/mage/sets/tenth/GloriousAnthem.java +++ b/Mage.Sets/src/mage/sets/tenth/GloriousAnthem.java @@ -48,6 +48,8 @@ public class GloriousAnthem extends CardImpl { super(ownerId, 17, "Glorious Anthem", Rarity.RARE, new CardType[]{CardType.ENCHANTMENT}, "{1}{W}{W}"); this.expansionSetCode = "10E"; this.color.setWhite(true); + + // Creatures you control get +1/+1. this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostControlledEffect(1, 1, Duration.WhileOnBattlefield, new FilterCreaturePermanent(), false))); } diff --git a/Mage.Sets/src/mage/sets/zendikar/GoblinGuide.java b/Mage.Sets/src/mage/sets/zendikar/GoblinGuide.java index 8244d6d3959..dfbbb8b4dd3 100644 --- a/Mage.Sets/src/mage/sets/zendikar/GoblinGuide.java +++ b/Mage.Sets/src/mage/sets/zendikar/GoblinGuide.java @@ -34,6 +34,7 @@ import mage.constants.Outcome; import mage.constants.Rarity; import mage.constants.Zone; import mage.MageInt; +import mage.MageObject; import mage.abilities.Ability; import mage.abilities.TriggeredAbilityImpl; import mage.abilities.effects.Effect; @@ -149,12 +150,13 @@ class GoblinGuideEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { Player defender = game.getPlayer(getTargetPointer().getFirst(game, source)); - if (defender != null) { + MageObject sourceObject = game.getObject(source.getSourceId()); + if (sourceObject != null && defender != null) { Cards cards = new CardsImpl(); Card card = defender.getLibrary().getFromTop(game); if (card != null) { cards.add(card); - defender.revealCards("Goblin Guide", cards, game); + defender.revealCards(sourceObject.getLogName(), cards, game); if (card.getCardType().contains(CardType.LAND)) { defender.moveCardToHandWithInfo(card, source.getSourceId(), game, Zone.LIBRARY); } diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/cost/sacrifice/MomentousFallTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/cost/sacrifice/MomentousFallTest.java index 7212162e8fe..8fa9d92d758 100644 --- a/Mage.Tests/src/test/java/org/mage/test/cards/cost/sacrifice/MomentousFallTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/cards/cost/sacrifice/MomentousFallTest.java @@ -22,9 +22,17 @@ public class MomentousFallTest extends CardTestPlayerBase { public void testSacrificeCostAndLKI() { addCard(Zone.BATTLEFIELD, playerA, "Forest", 4); addCard(Zone.HAND, playerA, "Momentous Fall"); + + // Geralf's Messenger enters the battlefield tapped. + // When Geralf's Messenger enters the battlefield, target opponent loses 2 life. + // Undying (When this creature dies, if it had no +1/+1 counters on it, return it to the battlefield under its owner's control with a +1/+1 counter on it.) addCard(Zone.BATTLEFIELD, playerA, "Geralf's Messenger", 1); + + // Creatures you control get +1/+1. addCard(Zone.BATTLEFIELD, playerA, "Glorious Anthem", 1); + // As an additional cost to cast Momentous Fall, sacrifice a creature. + // You draw cards equal to the sacrificed creature's power, then you gain life equal to its toughness. castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Momentous Fall"); setStopAt(1, PhaseStep.BEGIN_COMBAT); diff --git a/Mage/src/mage/abilities/keyword/UndyingAbility.java b/Mage/src/mage/abilities/keyword/UndyingAbility.java index 796ae53ad8d..0fa2100676f 100644 --- a/Mage/src/mage/abilities/keyword/UndyingAbility.java +++ b/Mage/src/mage/abilities/keyword/UndyingAbility.java @@ -1,19 +1,18 @@ package mage.abilities.keyword; import java.util.UUID; -import mage.constants.Duration; -import mage.constants.Outcome; import mage.abilities.Ability; import mage.abilities.common.DiesTriggeredAbility; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.ReplacementEffectImpl; import mage.abilities.effects.common.ReturnSourceFromGraveyardToBattlefieldEffect; +import mage.constants.Duration; +import mage.constants.Outcome; import mage.constants.Zone; import mage.counters.CounterType; import mage.game.Game; import mage.game.events.GameEvent; import mage.game.permanent.Permanent; -import mage.target.targetpointer.FixedTarget; /** * @author Loki