From 9e925a7723c35947e823b842c14847eec471ddbc Mon Sep 17 00:00:00 2001 From: BetaSteward Date: Tue, 4 May 2010 02:19:02 +0000 Subject: [PATCH] ... --- Mage/src/mage/ObjectColor.java | 2 -- Mage/src/mage/abilities/costs/CostsImpl.java | 19 ------------ .../abilities/effects/ContinuousEffects.java | 1 - .../abilities/keyword/UnearthAbility.java | 31 +++++++++++++++++-- Mage/src/mage/game/Exile.java | 2 +- Mage/src/mage/game/GameImpl.java | 2 ++ Mage/src/mage/players/Player.java | 2 -- Mage/src/mage/players/PlayerImpl.java | 22 +++---------- 8 files changed, 36 insertions(+), 45 deletions(-) diff --git a/Mage/src/mage/ObjectColor.java b/Mage/src/mage/ObjectColor.java index d055844a401..b83f7c0405d 100644 --- a/Mage/src/mage/ObjectColor.java +++ b/Mage/src/mage/ObjectColor.java @@ -32,8 +32,6 @@ import java.io.Serializable; public class ObjectColor implements Serializable { - private static final long serialVersionUID = 1L; - public static final ObjectColor WHITE = new ObjectColor("W"); public static final ObjectColor BLUE = new ObjectColor("U"); public static final ObjectColor BLACK = new ObjectColor("B"); diff --git a/Mage/src/mage/abilities/costs/CostsImpl.java b/Mage/src/mage/abilities/costs/CostsImpl.java index 3b77756f01b..71b74001dc2 100644 --- a/Mage/src/mage/abilities/costs/CostsImpl.java +++ b/Mage/src/mage/abilities/costs/CostsImpl.java @@ -142,23 +142,4 @@ public class CostsImpl extends ArrayList implements Costs return null; } -// @Override -// public ManaCosts getManaCosts() { -// ManaCosts manaCosts = new ManaCosts(ability); -// for (T cost: this) { -// if (cost instanceof ManaCost) -// manaCosts.add((ManaCost)cost); -// } -// return manaCosts; -// } -// -// @Override -// public List getVariableCosts() { -// List variableCosts = new ArrayList(); -// for (T cost: this) { -// if (cost instanceof ManaCosts) -// variableCosts.addAll(((ManaCosts)cost).getVariableCosts()); -// } -// return variableCosts; -// } } diff --git a/Mage/src/mage/abilities/effects/ContinuousEffects.java b/Mage/src/mage/abilities/effects/ContinuousEffects.java index 5175d6cb644..d92192e36cf 100644 --- a/Mage/src/mage/abilities/effects/ContinuousEffects.java +++ b/Mage/src/mage/abilities/effects/ContinuousEffects.java @@ -53,7 +53,6 @@ import mage.players.Player; */ public class ContinuousEffects implements Serializable { - private static final long serialVersionUID = 1L; private List effects = new ArrayList(); public void removeEndOfTurnEffects() { diff --git a/Mage/src/mage/abilities/keyword/UnearthAbility.java b/Mage/src/mage/abilities/keyword/UnearthAbility.java index 5c98c01c6f1..7f00ffb86cf 100644 --- a/Mage/src/mage/abilities/keyword/UnearthAbility.java +++ b/Mage/src/mage/abilities/keyword/UnearthAbility.java @@ -33,10 +33,12 @@ import mage.Constants.Outcome; import mage.Constants.TimingRule; import mage.Constants.Zone; import mage.abilities.ActivatedAbilityImpl; +import mage.abilities.DelayedTriggeredAbility; import mage.abilities.common.OnEventTriggeredAbility; import mage.abilities.costs.mana.ManaCosts; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.ReplacementEffectImpl; +import mage.abilities.effects.common.CreateDelayedTriggeredAbilityEffect; import mage.abilities.effects.common.ExileSourceEffect; import mage.abilities.effects.common.GainAbilitySourceEffect; import mage.cards.Card; @@ -58,7 +60,7 @@ public class UnearthAbility extends ActivatedAbilityImpl { super(Zone.GRAVEYARD, new UnearthEffect(), costs); this.timing = TimingRule.SORCERY; this.effects.add(new GainAbilitySourceEffect(HasteAbility.getInstance(), Duration.WhileOnBattlefield)); - this.effects.add(new GainAbilitySourceEffect(new OnEventTriggeredAbility(EventType.END_TURN_STEP_PRE, "beginning of the end step", new ExileSourceEffect()), Duration.WhileOnBattlefield)); + this.effects.add(new CreateDelayedTriggeredAbilityEffect(new UnearthDelayedTriggeredAbility())); this.effects.add(new UnearthLeavesBattlefieldEffect()); } @@ -85,6 +87,7 @@ class UnearthEffect extends OneShotEffect { Card card = player.getGraveyard().get(this.source.getSourceId()); if (card != null) { player.putOntoBattlefield(card, game); + player.removeFromGraveyard(card, game); return true; } return false; @@ -97,6 +100,28 @@ class UnearthEffect extends OneShotEffect { } +class UnearthDelayedTriggeredAbility extends DelayedTriggeredAbility { + + public UnearthDelayedTriggeredAbility() { + super(new ExileSourceEffect()); + } + + @Override + public boolean checkTrigger(GameEvent event, Game game) { + if (event.getType() == EventType.END_TURN_STEP_PRE && event.getPlayerId().equals(this.controllerId)) { + trigger(game, event.getPlayerId()); + return true; + } + return false; + } + + @Override + public String getRule() { + return "Exile {this} at the beginning of the next end step"; + } + +} + class UnearthLeavesBattlefieldEffect extends ReplacementEffectImpl { @@ -108,7 +133,7 @@ class UnearthLeavesBattlefieldEffect extends ReplacementEffectImpl { public boolean applies(GameEvent event, Game game) { if (event.getType() == EventType.ZONE_CHANGE && event.getTargetId().equals(this.source.getSourceId())) { ZoneChangeEvent zEvent = (ZoneChangeEvent)event; - if (zEvent.getFromZone() == Zone.BATTLEFIELD) + if (zEvent.getFromZone() == Zone.BATTLEFIELD && zEvent.getToZone() != Zone.EXILED) return true; } return false; @@ -128,6 +153,6 @@ class UnearthLeavesBattlefieldEffect extends ReplacementEffectImpl { @Override public String getText() { - return "When {this} leaves the battlefield, exile {this}"; + return "When {this} leaves the battlefield, exile it"; } } \ No newline at end of file diff --git a/Mage/src/mage/game/Exile.java b/Mage/src/mage/game/Exile.java index ae18d91bdaf..dd2cd72069c 100644 --- a/Mage/src/mage/game/Exile.java +++ b/Mage/src/mage/game/Exile.java @@ -58,7 +58,7 @@ public class Exile implements Serializable { } public ExileZone createZone(UUID id, String name) { - return createZone(id, name, false); + return createZone(id, name + " - Exile", false); } public ExileZone createZone(UUID id, String name, boolean hidden) { diff --git a/Mage/src/mage/game/GameImpl.java b/Mage/src/mage/game/GameImpl.java index 2ec41a247d7..e17aebfb137 100644 --- a/Mage/src/mage/game/GameImpl.java +++ b/Mage/src/mage/game/GameImpl.java @@ -524,6 +524,7 @@ public abstract class GameImpl implements Game, Serializable { if (!replaceEvent(new GameEvent(GameEvent.EventType.DRAW_STEP, null, null, activePlayerId))) { //20091005 - 504.1/703.4c getPlayer(activePlayerId).drawCards(1, this); + saveState(); fireEvent(new GameEvent(GameEvent.EventType.DRAW_STEP_PRE, null, null, activePlayerId)); playPriority(activePlayerId); fireEvent(new GameEvent(GameEvent.EventType.DRAW_STEP_POST, null, null, activePlayerId)); @@ -606,6 +607,7 @@ public abstract class GameImpl implements Game, Serializable { playPriority(activePlayerId); fireEvent(new GameEvent(GameEvent.EventType.END_COMBAT_STEP_POST, null, null, activePlayerId)); removeCreaturesFromCombat(); + saveState(); return true; } return false; diff --git a/Mage/src/mage/players/Player.java b/Mage/src/mage/players/Player.java index e19e138d9f7..4df1a5dd8df 100644 --- a/Mage/src/mage/players/Player.java +++ b/Mage/src/mage/players/Player.java @@ -60,8 +60,6 @@ import mage.target.common.TargetCardInLibrary; public interface Player extends MageItem { public boolean isHuman(); - public Deck getDeck(); - public void setDeck(Deck deck); public String getName(); public Library getLibrary(); public Cards getGraveyard(); diff --git a/Mage/src/mage/players/PlayerImpl.java b/Mage/src/mage/players/PlayerImpl.java index 9c2425f8e93..0a0ac7a5bbe 100644 --- a/Mage/src/mage/players/PlayerImpl.java +++ b/Mage/src/mage/players/PlayerImpl.java @@ -76,7 +76,6 @@ public abstract class PlayerImpl implements Player, Serializable { protected int life; protected boolean wins; protected boolean loses; - protected Deck deck; protected Library library; protected Cards hand = new CardsImpl(Zone.HAND); protected Cards graveyard = new CardsImpl(Zone.GRAVEYARD); @@ -90,10 +89,12 @@ public abstract class PlayerImpl implements Player, Serializable { protected boolean passedTurn; protected boolean left; - public PlayerImpl(String name) { + public PlayerImpl(String name, Deck deck) { this.playerId = UUID.randomUUID(); this.name = name; + deck.setOwnerId(playerId); library = new Library(playerId); + library.addAll(deck.getCards()); } @Override @@ -101,14 +102,12 @@ public abstract class PlayerImpl implements Player, Serializable { this.hand.clear(); this.graveyard.clear(); this.abilities.clear(); - this.library.clear(); this.wins = false; this.loses = false; this.left = false; this.passed = false; this.passedTurn = false; - library.addAll(deck.getCards()); - for (Card card: deck.getCards().values()) { + for (Card card: library.getCards()) { for (Watcher watcher: card.getWatchers()) { watcher.setControllerId(playerId); game.getState().getWatchers().add(watcher); @@ -470,17 +469,6 @@ public abstract class PlayerImpl implements Player, Serializable { return graveyard; } - @Override - public Deck getDeck() { - return deck; - } - - @Override - public void setDeck(Deck deck) { - this.deck = deck; - deck.setOwnerId(playerId); - } - @Override public ManaPool getManaPool() { return this.manaPool; @@ -578,7 +566,7 @@ public abstract class PlayerImpl implements Player, Serializable { @Override public void restore(Player player) { this.library = player.getLibrary(); - this.deck = player.getDeck(); +// this.deck = player.getDeck(); this.hand = player.getHand(); this.graveyard = player.getGraveyard(); this.abilities = player.getAbilities();