From a2561515a3646fafa98aaf605a3706421cebdbd4 Mon Sep 17 00:00:00 2001 From: BetaSteward Date: Sun, 14 Nov 2010 04:23:52 +0000 Subject: [PATCH] fixes --- .../src/mage/player/ai/ComputerPlayer.java | 4 ++-- Mage.Server/plugins/mage-deck-constructed.jar | Bin 3190 -> 3190 bytes Mage.Server/plugins/mage-game-freeforall.jar | Bin 4384 -> 4384 bytes .../plugins/mage-game-twoplayerduel.jar | Bin 3956 -> 3957 bytes Mage.Server/plugins/mage-player-ai.jar | Bin 28440 -> 28466 bytes Mage.Server/plugins/mage-player-aiminimax.jar | Bin 36353 -> 36352 bytes Mage.Server/plugins/mage-player-human.jar | Bin 10351 -> 10350 bytes .../src/mage/server/game/GameController.java | 2 +- .../src/mage/server/game/GameSession.java | 5 +++-- Mage.Sets/src/mage/sets/RiseOfTheEldrazi.java | 6 +----- Mage.Sets/src/mage/sets/ShardsOfAlara.java | 4 ---- .../mage/sets/magic2010/AcolyteOfXathrid.java | 2 +- .../src/mage/sets/magic2010/ActOfTreason.java | 2 +- .../src/mage/sets/magic2010/ChildOfNight.java | 2 +- .../mage/sets/magic2011/ChandrasOutrage.java | 5 +++++ .../src/mage/sets/magic2011/Combust.java | 2 ++ .../mage/sets/magic2011/ConundrumSphinx.java | 1 - .../src/mage/sets/magic2011/DarkTutelage.java | 2 +- .../sets/magic2011/DemonOfDeathsGate.java | 2 +- .../mage/sets/magic2011/DestructiveForce.java | 9 ++++++++- .../sets/magic2011/ElixirOfImmortality.java | 9 +++++---- .../src/mage/sets/magic2011/FrostTitan.java | 2 +- .../sets/magic2011/ReassemblingSkeleton.java | 12 ++++++------ .../sets/riseoftheeldrazi/WallOfOmens.java | 2 +- .../mage/sets/shardsofalara/RangerOfEos.java | 2 +- Mage.Sets/src/mage/sets/tenth/Condemn.java | 2 +- .../effects/common/SacrificeAllEffect.java | 13 ++++++++----- Mage/src/mage/choices/ChoiceImpl.java | 2 -- Mage/src/mage/game/GameImpl.java | 2 +- .../mage/game/events/PlayerQueryEvent.java | 9 +++++---- .../game/events/PlayerQueryEventSource.java | 3 ++- .../common/TargetCardInYourGraveyard.java | 2 +- 32 files changed, 59 insertions(+), 49 deletions(-) diff --git a/Mage.Player.AI/src/mage/player/ai/ComputerPlayer.java b/Mage.Player.AI/src/mage/player/ai/ComputerPlayer.java index a06cff4a7d9..c2ecd4873b8 100644 --- a/Mage.Player.AI/src/mage/player/ai/ComputerPlayer.java +++ b/Mage.Player.AI/src/mage/player/ai/ComputerPlayer.java @@ -183,7 +183,7 @@ public class ComputerPlayer> extends PlayerImpl i if (!outcome.isGood()) Collections.reverse(targets); for (Permanent permanent: targets) { - if (target.canTarget(permanent.getId(), game)) { + if (target.canTarget(permanent.getId(), game) && !target.getTargets().contains(permanent.getId())) { target.add(permanent.getId(), game); return true; } @@ -198,7 +198,7 @@ public class ComputerPlayer> extends PlayerImpl i targets = threats(opponentId, ((TargetPermanent)target).getFilter(), game); } for (Permanent permanent: targets) { - if (target.canTarget(permanent.getId(), game)) { + if (target.canTarget(permanent.getId(), game) && !target.getTargets().contains(permanent.getId())) { target.add(permanent.getId(), game); return true; } diff --git a/Mage.Server/plugins/mage-deck-constructed.jar b/Mage.Server/plugins/mage-deck-constructed.jar index 4b38df4c7eaf8657656e9d1512be1636081a2cf2..d27c8faaee510ee363ae6330b6708bd686cb0c5f 100644 GIT binary patch delta 289 zcmew+@lAp^z?+$civa{Aw&YIaRbdtfQYKTFLA=unVCtPJh}ta1IFALyn7o};3rs&@ zH3myav8`g_07}@#P1vhH`3y&3{a=Ou1s8Uz`m!v%;OQ#!DyaT}&-s8OF6*v0)aPH@ zzUSGg&ekd7HUA109Xjb?Jo%BW_#0a*^9pmBzKWUhFLLsEMW*GR&D=8ATtM~x{o6)q zop;-nq!liHb#>JC6TM~JUS54FGx(-+FV7#w0B=Sn5oWjtY{5R6Jcm;cxX0(@tEbV7iLS4NM>AvI5bQxShdVH|{+Me{k{S000njYZU+h delta 289 zcmew+@lAp^z?+$civa|bwx>}7)!r2WFH&4(UM;dOSeCAFbVVcd*`7EbB mnC9m)0MkxfreL~?%MI*FT7y_d~#a#3&NzuMZz+H9PQ=AH@ delta 325 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 delta 14670 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 A;s5{u diff --git a/Mage.Server/plugins/mage-player-aiminimax.jar b/Mage.Server/plugins/mage-player-aiminimax.jar index bbf31e476ad820435ab10464f3b87bbd69391de2..4ffc7bee3d7844235db84005ed290501967219a8 100644 GIT binary patch delta 552 zcmZpi!_+W`i8sKTnT3l11f;g)PUKZ#mIP8JQ^3?|1u*qaof#-MS%OguL~nLwe8dE1 zXt5lHFg~$4GJ{3TxJ)#_j9ep4h{#M+Us;eLn_mVQvVx^#BiOmY4E5v)CO)8nwv3Wz z4plQTFbJ|vcH|PB9G}5C*|wW!^Y+wMi1GFrfx=)NldB)IfEkqyv%yl6#hbxyn(WeS z43?;B-p0fUGP8tXYjp8s%Qp9V-V+s@c@E%a20`>y$?7*$0RWAR;2y!I+*v!}N=FT7l%oL$u%;A(HU{9*~8 zV#dFH%Tv!t?V8%GuwmMdC+;^dzrPq4zo&EC@sr0z!v87$VGQtQWD;S9geu5clbPF1 zK!GsXs@)z;*R&ge>GkdAV0phD$;nI|ieR={hbNdW>IekW$Dp)Sr$3mV(+Lqj0OW(r z6zXyVi$`|_f$0rh!C;!L8=^h}O0Vkn1B?Ie4gk}BJyu}4yT=(!U+md~6mrvgQ`tVZ HfszFPi&4)= delta 553 zcmZpe!_+v3i8sKTnT3l11Rifoo5-ue{0K;yOkoD`PAh<^cj_Q&vIL_Rh~DhV_=pM2 z&|*0XVSHk9WCn|vahYg<8M#K95RsXtzOrDEmqCWCV1{f2J2#l2o*co%2Q<)@QS!{8 zY9?IHm^eXZDjBMLDw%BA=3XCM=6}{(*GtFKH_&5M$Om5?@3W7e2J!jn1b#TJA8cR{ zY+$s>$aJfbL0~~CXP|+RfyslXTHd-^=gyqpYAZm{?1gi-fd;yGvwkYmGk}6$@)u>|_Y=W@Hj!1_vt(C|oBqwVQwf zcCux=J;nz$oD}CWaRT+&%3QglpFjD9vU5G}nT=e{1_BHhY$w!P z6oe%;bw7y6YVQ!Je-O3aafPR4@`3&4uchO@E^+AT46BGwFbtlssAxt)mt+)k)OWY< zbDP?u9ae{VPVDU0ZF4kr<2wKG&;DzQoAS%PsIV5@+V{hgHMgveFHsK zg?#YU@jmqsPegi;1;_xkyMmxVyyGt5~=(jhP|9 zn~_O`8ScZ$D^*NDUYz_u#UAWbB~=439ja;$ru$WG!Ss360EoPrADAvy3k1{0)vUlY Xi@GzI_EO)1 choices) { if (gameSessions.containsKey(playerId)) gameSessions.get(playerId).choose(message, choices); informOthers(playerId); diff --git a/Mage.Server/src/mage/server/game/GameSession.java b/Mage.Server/src/mage/server/game/GameSession.java index 096294358ae..238a3f1a7a6 100644 --- a/Mage.Server/src/mage/server/game/GameSession.java +++ b/Mage.Server/src/mage/server/game/GameSession.java @@ -28,6 +28,7 @@ package mage.server.game; +import java.util.Set; import java.util.UUID; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledFuture; @@ -97,12 +98,12 @@ public class GameSession extends GameWatcher { } } - public void choose(final String message, final String[] choices) { + public void choose(final String message, final Set choices) { if (!killed) { setupTimeout(); Session session = SessionManager.getInstance().getSession(sessionId); if (session != null) - session.fireCallback(new ClientCallback("gameChoose", new GameClientMessage(choices, message))); + session.fireCallback(new ClientCallback("gameChoose", new GameClientMessage(choices.toArray(new String[0]), message))); } } diff --git a/Mage.Sets/src/mage/sets/RiseOfTheEldrazi.java b/Mage.Sets/src/mage/sets/RiseOfTheEldrazi.java index e998ac09a5a..e84509d6eae 100644 --- a/Mage.Sets/src/mage/sets/RiseOfTheEldrazi.java +++ b/Mage.Sets/src/mage/sets/RiseOfTheEldrazi.java @@ -28,11 +28,7 @@ package mage.sets; -import java.util.ArrayList; import java.util.GregorianCalendar; -import java.util.List; -import mage.Constants.Rarity; -import mage.cards.Card; import mage.cards.ExpansionSet; /** @@ -48,7 +44,7 @@ public class RiseOfTheEldrazi extends ExpansionSet { } private RiseOfTheEldrazi() { - super("Rise Of The Eldrazi", "ROE", "seticon_ROE", "mage.sets.riseoftheeldrazi", new GregorianCalendar(2010, 3, 17).getTime(), false); + super("Rise of the Eldrazi", "ROE", "seticon_ROE", "mage.sets.riseoftheeldrazi", new GregorianCalendar(2010, 3, 17).getTime(), false); this.blockName = "Zendikar"; this.numBoosterLands = 1; this.numBoosterCommon = 10; diff --git a/Mage.Sets/src/mage/sets/ShardsOfAlara.java b/Mage.Sets/src/mage/sets/ShardsOfAlara.java index d883116db3e..9cbb40b938b 100644 --- a/Mage.Sets/src/mage/sets/ShardsOfAlara.java +++ b/Mage.Sets/src/mage/sets/ShardsOfAlara.java @@ -28,11 +28,7 @@ package mage.sets; -import java.util.ArrayList; import java.util.GregorianCalendar; -import java.util.List; -import mage.Constants.Rarity; -import mage.cards.Card; import mage.cards.ExpansionSet; /** diff --git a/Mage.Sets/src/mage/sets/magic2010/AcolyteOfXathrid.java b/Mage.Sets/src/mage/sets/magic2010/AcolyteOfXathrid.java index 2351913d318..15232b92f8e 100644 --- a/Mage.Sets/src/mage/sets/magic2010/AcolyteOfXathrid.java +++ b/Mage.Sets/src/mage/sets/magic2010/AcolyteOfXathrid.java @@ -48,7 +48,7 @@ import mage.target.TargetPlayer; public class AcolyteOfXathrid extends CardImpl { public AcolyteOfXathrid(UUID ownerId) { - super(ownerId, 83, "Acolyte Of Xathrid", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{B}"); + super(ownerId, 83, "Acolyte of Xathrid", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{B}"); this.expansionSetCode = "M10"; this.subtype.add("Human"); this.subtype.add("Cleric"); diff --git a/Mage.Sets/src/mage/sets/magic2010/ActOfTreason.java b/Mage.Sets/src/mage/sets/magic2010/ActOfTreason.java index 825b4c018c5..4d45a5ef775 100644 --- a/Mage.Sets/src/mage/sets/magic2010/ActOfTreason.java +++ b/Mage.Sets/src/mage/sets/magic2010/ActOfTreason.java @@ -46,7 +46,7 @@ import mage.target.common.TargetCreaturePermanent; public class ActOfTreason extends CardImpl { public ActOfTreason(UUID ownerId) { - super(ownerId, 124, "Act Of Treason", Rarity.UNCOMMON, new CardType[]{CardType.SORCERY}, "{2}{R}"); + super(ownerId, 124, "Act of Treason", Rarity.UNCOMMON, new CardType[]{CardType.SORCERY}, "{2}{R}"); this.expansionSetCode = "M10"; this.color.setRed(true); this.getSpellAbility().addTarget(new TargetCreaturePermanent()); diff --git a/Mage.Sets/src/mage/sets/magic2010/ChildOfNight.java b/Mage.Sets/src/mage/sets/magic2010/ChildOfNight.java index 15c4ae14e23..5f5f2dd9ba0 100644 --- a/Mage.Sets/src/mage/sets/magic2010/ChildOfNight.java +++ b/Mage.Sets/src/mage/sets/magic2010/ChildOfNight.java @@ -42,7 +42,7 @@ import mage.cards.CardImpl; public class ChildOfNight extends CardImpl { public ChildOfNight(UUID ownerId) { - super(ownerId, 88, "Child Of Night", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{1}{B}"); + super(ownerId, 88, "Child of Night", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{1}{B}"); this.expansionSetCode = "M10"; this.color.setBlack(true); this.subtype.add("Vampire"); diff --git a/Mage.Sets/src/mage/sets/magic2011/ChandrasOutrage.java b/Mage.Sets/src/mage/sets/magic2011/ChandrasOutrage.java index 80968b0135a..69ed657fb34 100644 --- a/Mage.Sets/src/mage/sets/magic2011/ChandrasOutrage.java +++ b/Mage.Sets/src/mage/sets/magic2011/ChandrasOutrage.java @@ -99,4 +99,9 @@ class ChandrasOutrageEffect extends OneShotEffect { return new ChandrasOutrageEffect(this); } + @Override + public String getText(Ability source) { + return "Chandra's Outrage deals 4 damage to target creature and 2 damage to that creature's controller"; + } + } \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/magic2011/Combust.java b/Mage.Sets/src/mage/sets/magic2011/Combust.java index 0895c0916d3..d4f3814f569 100644 --- a/Mage.Sets/src/mage/sets/magic2011/Combust.java +++ b/Mage.Sets/src/mage/sets/magic2011/Combust.java @@ -36,6 +36,7 @@ import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.common.CantCounterSourceEffect; import mage.abilities.effects.common.DamageTargetEffect; import mage.cards.CardImpl; +import mage.filter.Filter.ComparisonScope; import mage.filter.common.FilterCreaturePermanent; import mage.target.common.TargetCreaturePermanent; @@ -51,6 +52,7 @@ public class Combust extends CardImpl { filter.getColor().setWhite(true); filter.getColor().setBlue(true); filter.setUseColor(true); + filter.setScopeColor(ComparisonScope.Any); } public Combust(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/magic2011/ConundrumSphinx.java b/Mage.Sets/src/mage/sets/magic2011/ConundrumSphinx.java index 918219de2c3..bdb42da5799 100644 --- a/Mage.Sets/src/mage/sets/magic2011/ConundrumSphinx.java +++ b/Mage.Sets/src/mage/sets/magic2011/ConundrumSphinx.java @@ -28,7 +28,6 @@ package mage.sets.magic2011; -import java.util.List; import java.util.Set; import java.util.UUID; import mage.Constants.CardType; diff --git a/Mage.Sets/src/mage/sets/magic2011/DarkTutelage.java b/Mage.Sets/src/mage/sets/magic2011/DarkTutelage.java index 512174ef181..d9c1ab3c4c4 100644 --- a/Mage.Sets/src/mage/sets/magic2011/DarkTutelage.java +++ b/Mage.Sets/src/mage/sets/magic2011/DarkTutelage.java @@ -51,7 +51,7 @@ import mage.players.Player; public class DarkTutelage extends CardImpl { public DarkTutelage(UUID ownerId) { - super(ownerId, 90, "DarkTutelage", Rarity.RARE, new CardType[]{CardType.ENCHANTMENT}, "{2}{B}"); + super(ownerId, 90, "Dark Tutelage", Rarity.RARE, new CardType[]{CardType.ENCHANTMENT}, "{2}{B}"); this.expansionSetCode = "M11"; this.getColor().setBlack(true); this.addAbility(new OnEventTriggeredAbility(EventType.UPKEEP_STEP_PRE, "beginning of your upkeep", new DarkTutelageEffect(), false)); diff --git a/Mage.Sets/src/mage/sets/magic2011/DemonOfDeathsGate.java b/Mage.Sets/src/mage/sets/magic2011/DemonOfDeathsGate.java index 2535d61ac5e..3e2f768272d 100644 --- a/Mage.Sets/src/mage/sets/magic2011/DemonOfDeathsGate.java +++ b/Mage.Sets/src/mage/sets/magic2011/DemonOfDeathsGate.java @@ -48,7 +48,7 @@ import mage.target.common.TargetControlledPermanent; public class DemonOfDeathsGate extends CardImpl { public DemonOfDeathsGate(UUID ownerId) { - super(ownerId, 92, "Demon Of Death's Gate", Rarity.MYTHIC, new CardType[]{CardType.CREATURE}, "{6}{B}{B}{B}"); + super(ownerId, 92, "Demon of Death's Gate", Rarity.MYTHIC, new CardType[]{CardType.CREATURE}, "{6}{B}{B}{B}"); this.expansionSetCode = "M11"; this.subtype.add("Demon"); this.color.setBlack(true); diff --git a/Mage.Sets/src/mage/sets/magic2011/DestructiveForce.java b/Mage.Sets/src/mage/sets/magic2011/DestructiveForce.java index 09ddb38252f..16c82837f30 100644 --- a/Mage.Sets/src/mage/sets/magic2011/DestructiveForce.java +++ b/Mage.Sets/src/mage/sets/magic2011/DestructiveForce.java @@ -34,6 +34,7 @@ import mage.Constants.Rarity; import mage.abilities.effects.common.DamageAllEffect; import mage.abilities.effects.common.SacrificeAllEffect; import mage.cards.CardImpl; +import mage.filter.common.FilterControlledPermanent; import mage.filter.common.FilterCreaturePermanent; import mage.filter.common.FilterLandPermanent; @@ -43,11 +44,17 @@ import mage.filter.common.FilterLandPermanent; */ public class DestructiveForce extends CardImpl { + private static FilterControlledPermanent filter = new FilterControlledPermanent("land"); + + static { + filter.getCardType().add(CardType.LAND); + } + public DestructiveForce(UUID ownerId) { super(ownerId, 133, "Destructive Force", Rarity.RARE, new CardType[]{CardType.SORCERY}, "{5}{R}{R}"); this.expansionSetCode = "M11"; this.color.setRed(true); - this.getSpellAbility().addEffect(new SacrificeAllEffect(5, new FilterLandPermanent())); + this.getSpellAbility().addEffect(new SacrificeAllEffect(5, filter)); this.getSpellAbility().addEffect(new DamageAllEffect(5, FilterCreaturePermanent.getDefault())); } diff --git a/Mage.Sets/src/mage/sets/magic2011/ElixirOfImmortality.java b/Mage.Sets/src/mage/sets/magic2011/ElixirOfImmortality.java index 6d7b6e08bb5..1dad133f8e0 100644 --- a/Mage.Sets/src/mage/sets/magic2011/ElixirOfImmortality.java +++ b/Mage.Sets/src/mage/sets/magic2011/ElixirOfImmortality.java @@ -40,7 +40,7 @@ import mage.abilities.costs.CostsImpl; import mage.abilities.costs.common.TapSourceCost; import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.effects.OneShotEffect; -import mage.abilities.effects.common.ScryEffect; +import mage.abilities.effects.common.GainLifeEffect; import mage.cards.Card; import mage.cards.CardImpl; import mage.game.Game; @@ -53,12 +53,14 @@ import mage.players.Player; public class ElixirOfImmortality extends CardImpl { public ElixirOfImmortality(UUID ownerId) { - super(ownerId, 206, "Elixir Of Immortality", Rarity.UNCOMMON, new CardType[]{CardType.ARTIFACT}, "{1}"); + super(ownerId, 206, "Elixir of Immortality", Rarity.UNCOMMON, new CardType[]{CardType.ARTIFACT}, "{1}"); this.expansionSetCode = "M11"; Costs costs = new CostsImpl(); costs.add(new GenericManaCost(2)); costs.add(new TapSourceCost()); - this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new ScryEffect(2), costs)); + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new GainLifeEffect(5), costs); + ability.addEffect(new ElixerOfImmortalityEffect()); + this.addAbility(ability); } public ElixirOfImmortality(final ElixirOfImmortality card) { @@ -94,7 +96,6 @@ class ElixerOfImmortalityEffect extends OneShotEffect player.removeFromBattlefield(game.getPermanent(source.getSourceId()), game); Card card = game.getCard(source.getSourceId()); card.moveToZone(Zone.LIBRARY, game, true); -// player.getLibrary().putOnBottom(game.getCard(source.getSourceId()), game); player.getLibrary().addAll(player.getGraveyard().getCards(game)); player.getGraveyard().clear(); player.getLibrary().shuffle(); diff --git a/Mage.Sets/src/mage/sets/magic2011/FrostTitan.java b/Mage.Sets/src/mage/sets/magic2011/FrostTitan.java index fa8392d35bf..5116f042848 100644 --- a/Mage.Sets/src/mage/sets/magic2011/FrostTitan.java +++ b/Mage.Sets/src/mage/sets/magic2011/FrostTitan.java @@ -53,7 +53,7 @@ import mage.target.TargetStackObject; public class FrostTitan extends CardImpl { public FrostTitan(UUID ownerId) { - super(ownerId, 55, "FrostTitan", Rarity.MYTHIC, new CardType[]{CardType.CREATURE}, "{4}{U}{U}"); + super(ownerId, 55, "Frost Titan", Rarity.MYTHIC, new CardType[]{CardType.CREATURE}, "{4}{U}{U}"); this.expansionSetCode = "M11"; this.subtype.add("Giant"); this.color.setBlue(true); diff --git a/Mage.Sets/src/mage/sets/magic2011/ReassemblingSkeleton.java b/Mage.Sets/src/mage/sets/magic2011/ReassemblingSkeleton.java index 237155b0ed9..57e7b771a85 100644 --- a/Mage.Sets/src/mage/sets/magic2011/ReassemblingSkeleton.java +++ b/Mage.Sets/src/mage/sets/magic2011/ReassemblingSkeleton.java @@ -45,13 +45,13 @@ import mage.cards.CardImpl; public class ReassemblingSkeleton extends CardImpl { public ReassemblingSkeleton(UUID ownerId) { - super(ownerId, 112, "Reassembling Skeleton", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{2}{W}{W}"); + super(ownerId, 112, "Reassembling Skeleton", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{1}{B}"); this.expansionSetCode = "M11"; - this.subtype.add("Human"); - this.subtype.add("Knight"); - this.color.setWhite(true); - this.power = new MageInt(2); - this.toughness = new MageInt(3); + this.subtype.add("Skeleton"); + this.subtype.add("Warrior"); + this.color.setBlack(true); + this.power = new MageInt(1); + this.toughness = new MageInt(1); this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new ReturnSourceFromGraveyardToBattlefieldEffect(true), new ManaCostsImpl("{1}{B}"))); } diff --git a/Mage.Sets/src/mage/sets/riseoftheeldrazi/WallOfOmens.java b/Mage.Sets/src/mage/sets/riseoftheeldrazi/WallOfOmens.java index ae469402a81..b1fa10b9c4b 100644 --- a/Mage.Sets/src/mage/sets/riseoftheeldrazi/WallOfOmens.java +++ b/Mage.Sets/src/mage/sets/riseoftheeldrazi/WallOfOmens.java @@ -44,7 +44,7 @@ import mage.cards.CardImpl; public class WallOfOmens extends CardImpl { public WallOfOmens(UUID ownerId) { - super(ownerId, 53, "Wall Of Omens", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{1}{W}"); + super(ownerId, 53, "Wall of Omens", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{1}{W}"); this.expansionSetCode = "ROE"; this.subtype.add("Wall"); this.color.setWhite(true); diff --git a/Mage.Sets/src/mage/sets/shardsofalara/RangerOfEos.java b/Mage.Sets/src/mage/sets/shardsofalara/RangerOfEos.java index f075480f335..844657c2110 100644 --- a/Mage.Sets/src/mage/sets/shardsofalara/RangerOfEos.java +++ b/Mage.Sets/src/mage/sets/shardsofalara/RangerOfEos.java @@ -54,7 +54,7 @@ public class RangerOfEos extends CardImpl { } public RangerOfEos(UUID ownerId) { - super(ownerId, 21, "Ranger Of Eos", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{3}{W}"); + super(ownerId, 21, "Ranger of Eos", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{3}{W}"); this.expansionSetCode = "ALA"; this.color.setWhite(true); this.subtype.add("Human"); diff --git a/Mage.Sets/src/mage/sets/tenth/Condemn.java b/Mage.Sets/src/mage/sets/tenth/Condemn.java index 8fe5533f6e8..74060f6e9a8 100644 --- a/Mage.Sets/src/mage/sets/tenth/Condemn.java +++ b/Mage.Sets/src/mage/sets/tenth/Condemn.java @@ -52,8 +52,8 @@ public class Condemn extends CardImpl { this.expansionSetCode = "10E"; this.color.setWhite(true); this.getSpellAbility().addTarget(new TargetAttackingCreature()); - this.getSpellAbility().addEffect(new CondemnEffect()); this.getSpellAbility().addEffect(new PutOnLibraryTargetEffect(false)); + this.getSpellAbility().addEffect(new CondemnEffect()); } diff --git a/Mage/src/mage/abilities/effects/common/SacrificeAllEffect.java b/Mage/src/mage/abilities/effects/common/SacrificeAllEffect.java index 3ce3a8fb6ca..430d1c8fb3c 100644 --- a/Mage/src/mage/abilities/effects/common/SacrificeAllEffect.java +++ b/Mage/src/mage/abilities/effects/common/SacrificeAllEffect.java @@ -36,10 +36,12 @@ import mage.Constants.TargetController; import mage.abilities.Ability; import mage.abilities.effects.OneShotEffect; import mage.filter.FilterPermanent; +import mage.filter.common.FilterControlledPermanent; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; import mage.target.TargetPermanent; +import mage.target.common.TargetControlledPermanent; /** * @@ -48,13 +50,13 @@ import mage.target.TargetPermanent; public class SacrificeAllEffect extends OneShotEffect { protected int amount; - protected FilterPermanent filter; + protected FilterControlledPermanent filter; - public SacrificeAllEffect(FilterPermanent filter) { + public SacrificeAllEffect(FilterControlledPermanent filter) { this(1, filter); } - public SacrificeAllEffect(int amount, FilterPermanent filter) { + public SacrificeAllEffect(int amount, FilterControlledPermanent filter) { super(Outcome.Sacrifice); this.amount = amount; this.filter = filter; @@ -77,7 +79,7 @@ public class SacrificeAllEffect extends OneShotEffect { for (Player player: game.getPlayers().values()) { int numTargets = Math.min(amount, game.getBattlefield().countAll(filter, player.getId())); filter.setTargetController(TargetController.YOU); - TargetPermanent target = new TargetPermanent(numTargets, filter); + TargetControlledPermanent target = new TargetControlledPermanent(numTargets, numTargets, filter, false); while (!target.isChosen()) { player.choose(Outcome.Sacrifice, target, game); } @@ -85,7 +87,8 @@ public class SacrificeAllEffect extends OneShotEffect { } for (UUID permID: perms) { Permanent permanent = game.getPermanent(permID); - permanent.sacrifice(source.getSourceId(), game); + if (permanent != null) + permanent.sacrifice(source.getSourceId(), game); } return true; } diff --git a/Mage/src/mage/choices/ChoiceImpl.java b/Mage/src/mage/choices/ChoiceImpl.java index d11891526c1..a391881eeb6 100644 --- a/Mage/src/mage/choices/ChoiceImpl.java +++ b/Mage/src/mage/choices/ChoiceImpl.java @@ -29,9 +29,7 @@ package mage.choices; import java.io.Serializable; -import java.util.ArrayList; import java.util.HashSet; -import java.util.List; import java.util.Set; /** diff --git a/Mage/src/mage/game/GameImpl.java b/Mage/src/mage/game/GameImpl.java index d0c18af8b89..a28ef0714a3 100644 --- a/Mage/src/mage/game/GameImpl.java +++ b/Mage/src/mage/game/GameImpl.java @@ -728,7 +728,7 @@ public abstract class GameImpl> implements Game, Serializa @Override public void fireChooseEvent(UUID playerId, Choice choice) { - playerQueryEventSource.choose(playerId, choice.getMessage(), ((List)choice.getChoices()).toArray(new String[0])); + playerQueryEventSource.choose(playerId, choice.getMessage(), choice.getChoices()); } @Override diff --git a/Mage/src/mage/game/events/PlayerQueryEvent.java b/Mage/src/mage/game/events/PlayerQueryEvent.java index 6ae7203a4d3..6915d497dca 100644 --- a/Mage/src/mage/game/events/PlayerQueryEvent.java +++ b/Mage/src/mage/game/events/PlayerQueryEvent.java @@ -31,6 +31,7 @@ package mage.game.events; import java.io.Serializable; import java.util.Collection; import java.util.EventObject; +import java.util.Set; import java.util.UUID; import mage.abilities.Ability; import mage.abilities.ActivatedAbility; @@ -49,7 +50,7 @@ public class PlayerQueryEvent extends EventObject implements ExternalEvent, Seri private String message; private Collection abilities; - private String[] choices; + private Set choices; private Cards cards; private QueryType queryType; private UUID playerId; @@ -57,7 +58,7 @@ public class PlayerQueryEvent extends EventObject implements ExternalEvent, Seri private int min; private int max; - private PlayerQueryEvent(UUID playerId, String message, Collection abilities, String[] choices, Cards cards, QueryType queryType, int min, int max, boolean required) { + private PlayerQueryEvent(UUID playerId, String message, Collection abilities, Set choices, Cards cards, QueryType queryType, int min, int max, boolean required) { super(playerId); this.queryType = queryType; this.message = message; @@ -77,7 +78,7 @@ public class PlayerQueryEvent extends EventObject implements ExternalEvent, Seri public static PlayerQueryEvent chooseAbilityEvent(UUID playerId, String message, Collection choices) { return new PlayerQueryEvent(playerId, message, choices, null, null, QueryType.CHOOSE_ABILITY, 0, 0, false); } - public static PlayerQueryEvent chooseEvent(UUID playerId, String message, String[] choices) { + public static PlayerQueryEvent chooseEvent(UUID playerId, String message, Set choices) { return new PlayerQueryEvent(playerId, message, null, choices, null, QueryType.CHOOSE, 0, 0, false); } @@ -125,7 +126,7 @@ public class PlayerQueryEvent extends EventObject implements ExternalEvent, Seri return abilities; } - public String[] getChoices() { + public Set getChoices() { return choices; } diff --git a/Mage/src/mage/game/events/PlayerQueryEventSource.java b/Mage/src/mage/game/events/PlayerQueryEventSource.java index 68f3e90bda8..d7bb42fd8b7 100644 --- a/Mage/src/mage/game/events/PlayerQueryEventSource.java +++ b/Mage/src/mage/game/events/PlayerQueryEventSource.java @@ -30,6 +30,7 @@ package mage.game.events; import java.io.Serializable; import java.util.Collection; +import java.util.Set; import java.util.UUID; import mage.abilities.ActivatedAbility; import mage.abilities.TriggeredAbilities; @@ -84,7 +85,7 @@ public class PlayerQueryEventSource implements EventSource, Se dispatcher.fireEvent(PlayerQueryEvent.amountEvent(playerId, message, min, max)); } - public void choose(UUID playerId, String message, String[] choices) { + public void choose(UUID playerId, String message, Set choices) { dispatcher.fireEvent(PlayerQueryEvent.chooseEvent(playerId, message, choices)); } diff --git a/Mage/src/mage/target/common/TargetCardInYourGraveyard.java b/Mage/src/mage/target/common/TargetCardInYourGraveyard.java index e8383cb90b0..e4697ed3e1a 100644 --- a/Mage/src/mage/target/common/TargetCardInYourGraveyard.java +++ b/Mage/src/mage/target/common/TargetCardInYourGraveyard.java @@ -55,7 +55,7 @@ public class TargetCardInYourGraveyard extends TargetCard