* Some minor changes to logging and return code handling.

This commit is contained in:
LevelX2 2017-07-23 11:06:23 +02:00
parent 94be7cb4da
commit 4c33359fe2
22 changed files with 862 additions and 888 deletions

View file

@ -150,7 +150,7 @@ public class TableController {
} }
Optional<User> _user = UserManager.instance.getUser(userId); Optional<User> _user = UserManager.instance.getUser(userId);
if (!_user.isPresent()) { if (!_user.isPresent()) {
logger.fatal(new StringBuilder("couldn't get user ").append(name).append(" for join tournament userId = ").append(userId).toString()); logger.fatal("couldn't get user " + name + " for join tournament userId = " + userId);
return false; return false;
} }
User user = _user.get(); User user = _user.get();

View file

@ -27,6 +27,9 @@
*/ */
package mage.cards.a; package mage.cards.a;
import java.util.HashSet;
import java.util.Set;
import java.util.UUID;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.TriggeredAbilityImpl; import mage.abilities.TriggeredAbilityImpl;
import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.common.SimpleActivatedAbility;
@ -51,10 +54,6 @@ import mage.game.permanent.token.ServoToken;
import mage.players.Player; import mage.players.Player;
import mage.target.common.TargetPermanentOrPlayer; import mage.target.common.TargetPermanentOrPlayer;
import java.util.HashSet;
import java.util.Set;
import java.util.UUID;
/** /**
* *
* @author emerald000 * @author emerald000
@ -150,8 +149,7 @@ class AnimationModuleEffect extends OneShotEffect {
Counter newCounter = new Counter(counter.getName()); Counter newCounter = new Counter(counter.getName());
permanent.addCounters(newCounter, source, game); permanent.addCounters(newCounter, source, game);
} }
} } else {
else {
Choice choice = new ChoiceImpl(true); Choice choice = new ChoiceImpl(true);
Set<String> choices = new HashSet<>(permanent.getCounters(game).size()); Set<String> choices = new HashSet<>(permanent.getCounters(game).size());
for (Counter counter : permanent.getCounters(game).values()) { for (Counter counter : permanent.getCounters(game).values()) {
@ -169,8 +167,7 @@ class AnimationModuleEffect extends OneShotEffect {
} }
} }
} }
} } else {
else {
Player player = game.getPlayer(this.getTargetPointer().getFirst(game, source)); Player player = game.getPlayer(this.getTargetPointer().getFirst(game, source));
if (player != null) { if (player != null) {
if (!player.getCounters().isEmpty()) { if (!player.getCounters().isEmpty()) {
@ -179,8 +176,7 @@ class AnimationModuleEffect extends OneShotEffect {
Counter newCounter = new Counter(counter.getName()); Counter newCounter = new Counter(counter.getName());
player.addCounters(newCounter, game); player.addCounters(newCounter, game);
} }
} } else {
else {
Choice choice = new ChoiceImpl(true); Choice choice = new ChoiceImpl(true);
Set<String> choices = new HashSet<>(player.getCounters().size()); Set<String> choices = new HashSet<>(player.getCounters().size());
for (Counter counter : player.getCounters().values()) { for (Counter counter : player.getCounters().values()) {
@ -200,6 +196,7 @@ class AnimationModuleEffect extends OneShotEffect {
} }
} }
} }
return true;
} }
return false; return false;
} }

View file

@ -27,9 +27,9 @@
*/ */
package mage.cards.a; package mage.cards.a;
import java.util.UUID;
import mage.MageObject; import mage.MageObject;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.constants.ComparisonType;
import mage.abilities.LoyaltyAbility; import mage.abilities.LoyaltyAbility;
import mage.abilities.common.PlanswalkerEntersWithLoyalityCountersAbility; import mage.abilities.common.PlanswalkerEntersWithLoyalityCountersAbility;
import mage.abilities.costs.Cost; import mage.abilities.costs.Cost;
@ -50,8 +50,6 @@ import mage.target.common.TargetOpponent;
import mage.target.targetpointer.FixedTarget; import mage.target.targetpointer.FixedTarget;
import mage.util.CardUtil; import mage.util.CardUtil;
import java.util.UUID;
/** /**
* *
* @author LevelX2 * @author LevelX2
@ -166,13 +164,12 @@ class AshiokNightmareWeaverPutIntoPlayEffect extends OneShotEffect {
effect.setTargetPointer(new FixedTarget(permanent, game)); effect.setTargetPointer(new FixedTarget(permanent, game));
game.addEffect(effect, source); game.addEffect(effect, source);
} }
}
}
}
return true; return true;
} }
} }
}
return false;
}
}
class AshiokNightmareWeaverAddTypeEffect extends ContinuousEffectImpl { class AshiokNightmareWeaverAddTypeEffect extends ContinuousEffectImpl {

View file

@ -27,6 +27,7 @@
*/ */
package mage.cards.b; package mage.cards.b;
import java.util.UUID;
import mage.Mana; import mage.Mana;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.BeginningOfPreCombatMainTriggeredAbility; import mage.abilities.common.BeginningOfPreCombatMainTriggeredAbility;
@ -43,8 +44,6 @@ import mage.game.Game;
import mage.game.permanent.Permanent; import mage.game.permanent.Permanent;
import mage.players.Player; import mage.players.Player;
import java.util.UUID;
/** /**
* *
* @author markedagain * @author markedagain
@ -70,6 +69,7 @@ public class BlackMarket extends CardImpl {
return new BlackMarket(this); return new BlackMarket(this);
} }
} }
class BlackMarketEffect extends OneShotEffect { class BlackMarketEffect extends OneShotEffect {
public BlackMarketEffect() { public BlackMarketEffect() {
@ -94,8 +94,8 @@ class BlackMarketEffect extends OneShotEffect {
int chargeCounters = sourcePermanent.getCounters(game).getCount(CounterType.CHARGE); int chargeCounters = sourcePermanent.getCounters(game).getCount(CounterType.CHARGE);
if (chargeCounters > 0) { if (chargeCounters > 0) {
player.getManaPool().addMana(Mana.BlackMana(chargeCounters), game, source); player.getManaPool().addMana(Mana.BlackMana(chargeCounters), game, source);
return true;
} }
return true;
} }
return false; return false;
} }

View file

@ -27,6 +27,7 @@
*/ */
package mage.cards.c; package mage.cards.c;
import java.util.UUID;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.Mode; import mage.abilities.Mode;
import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.costs.mana.GenericManaCost;
@ -48,8 +49,6 @@ import mage.players.Player;
import mage.target.TargetPlayer; import mage.target.TargetPlayer;
import mage.target.common.TargetCreaturePermanent; import mage.target.common.TargetCreaturePermanent;
import java.util.UUID;
/** /**
* *
* @author fireshoes * @author fireshoes
@ -130,8 +129,8 @@ class CollectiveDefianceEffect extends OneShotEffect {
targetPlayer.discard(card, source, game); targetPlayer.discard(card, source, game);
} }
targetPlayer.drawCards(count, game); targetPlayer.drawCards(count, game);
return false;
}
return true; return true;
} }
return false;
}
} }

View file

@ -27,6 +27,7 @@
*/ */
package mage.cards.d; package mage.cards.d;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.common.EntersBattlefieldTriggeredAbility;
@ -51,8 +52,6 @@ import mage.target.common.TargetCreatureOrPlaneswalker;
import mage.util.CardUtil; import mage.util.CardUtil;
import mage.util.GameLog; import mage.util.GameLog;
import java.util.UUID;
/** /**
* *
* @author jeffwadsworth * @author jeffwadsworth
@ -111,8 +110,8 @@ class DragonlordSilumgarEffect extends OneShotEffect {
Permanent sourcePermanent = game.getPermanent(source.getSourceId()); Permanent sourcePermanent = game.getPermanent(source.getSourceId());
Player controller = game.getPlayer(source.getControllerId()); Player controller = game.getPlayer(source.getControllerId());
Permanent target = game.getPermanent(getTargetPointer().getFirst(game, source)); Permanent target = game.getPermanent(getTargetPointer().getFirst(game, source));
if (controller != null && sourcePermanent != null) {
if (controller != null && sourcePermanent != null && target != null && controller.getId().equals(sourcePermanent.getControllerId())) { if (target != null && controller.getId().equals(sourcePermanent.getControllerId())) {
SourceHasRemainedInSameZoneCondition condition = new SourceHasRemainedInSameZoneCondition(sourcePermanent.getId()); SourceHasRemainedInSameZoneCondition condition = new SourceHasRemainedInSameZoneCondition(sourcePermanent.getId());
game.addEffect(new ConditionalContinuousEffect( game.addEffect(new ConditionalContinuousEffect(
@ -125,6 +124,8 @@ class DragonlordSilumgarEffect extends OneShotEffect {
} }
sourcePermanent.addInfo("gained control of", CardUtil.addToolTipMarkTags("Gained control of: " + GameLog.getColoredObjectIdNameForTooltip(target)), game); sourcePermanent.addInfo("gained control of", CardUtil.addToolTipMarkTags("Gained control of: " + GameLog.getColoredObjectIdNameForTooltip(target)), game);
} }
return true;
}
return false; return false;
} }
} }

View file

@ -27,9 +27,9 @@
*/ */
package mage.cards.e; package mage.cards.e;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.constants.ComparisonType;
import mage.abilities.common.BeginningOfCombatTriggeredAbility; import mage.abilities.common.BeginningOfCombatTriggeredAbility;
import mage.abilities.common.EntersBattlefieldAllTriggeredAbility; import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.OneShotEffect;
@ -46,8 +46,6 @@ import mage.game.permanent.Permanent;
import mage.players.Player; import mage.players.Player;
import mage.target.common.TargetControlledCreaturePermanent; import mage.target.common.TargetControlledCreaturePermanent;
import java.util.UUID;
/** /**
* *
* @author fireshoes * @author fireshoes
@ -110,15 +108,15 @@ class EzuriClawOfProgressEffect extends OneShotEffect {
@Override @Override
public boolean apply(Game game, Ability source) { public boolean apply(Game game, Ability source) {
Permanent target = game.getPermanent(source.getFirstTarget());
if (target == null) {
return false;
}
Player controller = game.getPlayer(source.getControllerId()); Player controller = game.getPlayer(source.getControllerId());
if (controller != null) { if (controller != null) {
Permanent target = game.getPermanent(getTargetPointer().getFirst(game, source));
if (target != null) {
int amount = controller.getCounters().getCount(CounterType.EXPERIENCE); int amount = controller.getCounters().getCount(CounterType.EXPERIENCE);
target.addCounters(CounterType.P1P1.createInstance(amount), source, game); target.addCounters(CounterType.P1P1.createInstance(amount), source, game);
} }
return true;
}
return false; return false;
} }
} }

View file

@ -27,6 +27,7 @@
*/ */
package mage.cards.g; package mage.cards.g;
import java.util.UUID;
import mage.Mana; import mage.Mana;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.OpeningHandAction; import mage.abilities.OpeningHandAction;
@ -53,8 +54,6 @@ import mage.game.permanent.Permanent;
import mage.players.Player; import mage.players.Player;
import mage.target.common.TargetCardInHand; import mage.target.common.TargetCardInHand;
import java.util.UUID;
/** /**
* *
* @author emerald000 * @author emerald000
@ -159,6 +158,7 @@ class GemstoneCavernsEffect extends OneShotEffect {
} }
} }
} }
return true;
} }
return false; return false;
} }

View file

@ -27,6 +27,7 @@
*/ */
package mage.cards.g; package mage.cards.g;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.DiesCreatureTriggeredAbility; import mage.abilities.common.DiesCreatureTriggeredAbility;
@ -42,8 +43,6 @@ import mage.constants.CardType;
import mage.constants.Zone; import mage.constants.Zone;
import mage.target.common.TargetCreatureOrPlayer; import mage.target.common.TargetCreatureOrPlayer;
import java.util.UUID;
/** /**
* *
* @author jonubuu * @author jonubuu
@ -61,7 +60,7 @@ public class GoblinSharpshooter extends CardImpl {
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new DontUntapInControllersUntapStepSourceEffect())); this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new DontUntapInControllersUntapStepSourceEffect()));
// Whenever a creature dies, untap Goblin Sharpshooter. // Whenever a creature dies, untap Goblin Sharpshooter.
this.addAbility(new DiesCreatureTriggeredAbility(new UntapSourceEffect(), false)); this.addAbility(new DiesCreatureTriggeredAbility(new UntapSourceEffect(), false));
// {tap}: Goblin Sharpshooter deals 1 damage to target creature or player. // {T}: Goblin Sharpshooter deals 1 damage to target creature or player.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(1), new TapSourceCost()); Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(1), new TapSourceCost());
ability.addTarget(new TargetCreatureOrPlayer()); ability.addTarget(new TargetCreatureOrPlayer());
this.addAbility(ability); this.addAbility(ability);

View file

@ -28,6 +28,7 @@
package mage.cards.g; package mage.cards.g;
import java.util.UUID; import java.util.UUID;
import mage.MageObject;
import mage.ObjectColor; import mage.ObjectColor;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.BeginningOfCombatTriggeredAbility; import mage.abilities.common.BeginningOfCombatTriggeredAbility;
@ -79,7 +80,7 @@ public class GodPharaohsGift extends CardImpl {
class GodPharaohsGiftEffect extends OneShotEffect { class GodPharaohsGiftEffect extends OneShotEffect {
private static final FilterCreatureCard filter = new FilterCreatureCard("creature card from your graveyard"); private static final FilterCreatureCard filter = new FilterCreatureCard("creature card from your graveyard");
private UUID exileId = UUID.randomUUID(); private final UUID exileId = UUID.randomUUID();
public GodPharaohsGiftEffect() { public GodPharaohsGiftEffect() {
super(Outcome.PutCreatureInPlay); super(Outcome.PutCreatureInPlay);
@ -98,14 +99,15 @@ class GodPharaohsGiftEffect extends OneShotEffect {
@Override @Override
public boolean apply(Game game, Ability source) { public boolean apply(Game game, Ability source) {
Player controller = game.getPlayer(source.getControllerId()); Player controller = game.getPlayer(source.getControllerId());
MageObject sourceObject = source.getSourceObject(game);
if (controller != null && sourceObject != null) {
TargetCardInYourGraveyard target = new TargetCardInYourGraveyard(filter); TargetCardInYourGraveyard target = new TargetCardInYourGraveyard(filter);
target.setNotTarget(true); target.setNotTarget(true);
if (controller != null if (!controller.getGraveyard().getCards(filter, game).isEmpty()
&& !controller.getGraveyard().getCards(filter, game).isEmpty()
&& controller.choose(Outcome.PutCreatureInPlay, target, source.getId(), game)) { && controller.choose(Outcome.PutCreatureInPlay, target, source.getId(), game)) {
Card cardChosen = game.getCard(target.getFirstTarget()); Card cardChosen = game.getCard(target.getFirstTarget());
if (cardChosen != null if (cardChosen != null
&& cardChosen.moveToExile(exileId, "God-Pharaoh's Gift", source.getId(), game)) { && cardChosen.moveToExile(exileId, sourceObject.getIdName(), source.getSourceId(), game)) {
EmptyToken token = new EmptyToken(); EmptyToken token = new EmptyToken();
CardUtil.copyTo(token).from(cardChosen); CardUtil.copyTo(token).from(cardChosen);
token.getPower().modifyBaseValue(4); token.getPower().modifyBaseValue(4);
@ -119,11 +121,12 @@ class GodPharaohsGiftEffect extends OneShotEffect {
ContinuousEffect effect = new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.EndOfTurn); ContinuousEffect effect = new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.EndOfTurn);
effect.setTargetPointer(new FixedTarget(tokenPermanent.getId())); effect.setTargetPointer(new FixedTarget(tokenPermanent.getId()));
game.addEffect(effect, source); game.addEffect(effect, source);
}
}
}
}
return true; return true;
} }
}
}
}
return false; return false;
} }
} }

View file

@ -27,6 +27,7 @@
*/ */
package mage.cards.n; package mage.cards.n;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility; import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility;
@ -49,8 +50,6 @@ import mage.filter.predicate.permanent.TokenPredicate;
import mage.game.permanent.token.DroidToken; import mage.game.permanent.token.DroidToken;
import mage.target.common.TargetControlledPermanent; import mage.target.common.TargetControlledPermanent;
import java.util.UUID;
/** /**
* *
* @author Styxo * @author Styxo

View file

@ -27,6 +27,7 @@
*/ */
package mage.cards.r; package mage.cards.r;
import java.util.UUID;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.CopyTargetSpellEffect; import mage.abilities.effects.common.CopyTargetSpellEffect;
@ -43,8 +44,6 @@ import mage.game.stack.Spell;
import mage.players.Player; import mage.players.Player;
import mage.target.TargetSpell; import mage.target.TargetSpell;
import java.util.UUID;
/** /**
* *
* @author LevelX2 * @author LevelX2
@ -97,7 +96,7 @@ class RefuseEffect extends OneShotEffect {
public boolean apply(Game game, Ability source) { public boolean apply(Game game, Ability source) {
Player controller = game.getPlayer(source.getControllerId()); Player controller = game.getPlayer(source.getControllerId());
if (controller != null) { if (controller != null) {
Spell spell = game.getStack().getSpell(source.getFirstTarget()); Spell spell = game.getStack().getSpell(getTargetPointer().getFirst(game, source));
if (spell != null) { if (spell != null) {
Player spellController = game.getPlayer(spell.getControllerId()); Player spellController = game.getPlayer(spell.getControllerId());
if (spellController != null) { if (spellController != null) {

View file

@ -27,6 +27,7 @@
*/ */
package mage.cards.s; package mage.cards.s;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.Mode; import mage.abilities.Mode;
@ -42,8 +43,6 @@ import mage.players.Player;
import mage.target.Target; import mage.target.Target;
import mage.util.CardUtil; import mage.util.CardUtil;
import java.util.UUID;
/** /**
* *
* @author Styxo * @author Styxo

View file

@ -27,8 +27,13 @@
*/ */
package mage.abilities.effects; package mage.abilities.effects;
import java.io.Serializable;
import java.util.*;
import java.util.Map.Entry;
import java.util.stream.Collectors;
import mage.MageObject; import mage.MageObject;
import mage.abilities.*; import mage.abilities.*;
import mage.abilities.effects.common.continuous.CommanderReplacementEffect;
import mage.abilities.keyword.SpliceOntoArcaneAbility; import mage.abilities.keyword.SpliceOntoArcaneAbility;
import mage.cards.Cards; import mage.cards.Cards;
import mage.cards.CardsImpl; import mage.cards.CardsImpl;
@ -49,11 +54,6 @@ import mage.players.Player;
import mage.target.common.TargetCardInHand; import mage.target.common.TargetCardInHand;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
import java.io.Serializable;
import java.util.*;
import java.util.Map.Entry;
import java.util.stream.Collectors;
/** /**
* @author BetaSteward_at_googlemail.com * @author BetaSteward_at_googlemail.com
*/ */
@ -85,7 +85,6 @@ public class ContinuousEffects implements Serializable {
// note all effect/abilities that were only added temporary // note all effect/abilities that were only added temporary
private final Map<ContinuousEffect, Set<Ability>> temporaryEffects = new HashMap<>(); private final Map<ContinuousEffect, Set<Ability>> temporaryEffects = new HashMap<>();
public ContinuousEffects() { public ContinuousEffects() {
applyCounters = new ApplyCountersEffect(); applyCounters = new ApplyCountersEffect();
planeswalkerRedirectionEffect = new PlaneswalkerRedirectionEffect(); planeswalkerRedirectionEffect = new PlaneswalkerRedirectionEffect();
@ -1254,10 +1253,12 @@ public class ContinuousEffects implements Serializable {
} }
} }
} else { } else {
if (!(effect instanceof CommanderReplacementEffect)) {
logger.warn("Ability without sourceId:" + ability.getRule()); logger.warn("Ability without sourceId:" + ability.getRule());
} }
} }
} }
}
return controllerFound; return controllerFound;
} }
} }

View file

@ -68,7 +68,8 @@ public class PutTopCardOfLibraryIntoGraveTargetEffect extends OneShotEffect {
public boolean apply(Game game, Ability source) { public boolean apply(Game game, Ability source) {
Player player = game.getPlayer(targetPointer.getFirst(game, source)); Player player = game.getPlayer(targetPointer.getFirst(game, source));
if (player != null) { if (player != null) {
return player.moveCards(player.getLibrary().getTopCards(game, numberCards.calculate(game, source, this)), Zone.GRAVEYARD, source, game); player.moveCards(player.getLibrary().getTopCards(game, numberCards.calculate(game, source, this)), Zone.GRAVEYARD, source, game);
return true;
} }
return false; return false;
} }

View file

@ -74,14 +74,10 @@ public class ReturnSourceFromGraveyardToBattlefieldEffect extends OneShotEffect
@Override @Override
public boolean apply(Game game, Ability source) { public boolean apply(Game game, Ability source) {
if (game.getState().getZone(source.getSourceId()) != Zone.GRAVEYARD) {
return false;
}
Card card = game.getCard(source.getSourceId()); Card card = game.getCard(source.getSourceId());
if (card == null) { if (card == null) {
return false; return false;
} }
Player player; Player player;
if (ownerControl) { if (ownerControl) {
player = game.getPlayer(card.getOwnerId()); player = game.getPlayer(card.getOwnerId());
@ -91,7 +87,10 @@ public class ReturnSourceFromGraveyardToBattlefieldEffect extends OneShotEffect
if (player == null) { if (player == null) {
return false; return false;
} }
return player.moveCards(card, Zone.BATTLEFIELD, source, game, tapped, false, true, null); if (game.getState().getZone(source.getSourceId()) == Zone.GRAVEYARD) {
player.moveCards(card, Zone.BATTLEFIELD, source, game, tapped, false, true, null);
}
return true;
} }
private void setText() { private void setText() {

View file

@ -27,11 +27,11 @@
*/ */
package mage.abilities.effects.common; package mage.abilities.effects.common;
import mage.constants.Outcome;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.dynamicvalue.DynamicValue; import mage.abilities.dynamicvalue.DynamicValue;
import mage.abilities.dynamicvalue.common.StaticValue; import mage.abilities.dynamicvalue.common.StaticValue;
import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.OneShotEffect;
import mage.constants.Outcome;
import mage.filter.FilterPermanent; import mage.filter.FilterPermanent;
import mage.filter.predicate.permanent.ControllerIdPredicate; import mage.filter.predicate.permanent.ControllerIdPredicate;
import mage.game.Game; import mage.game.Game;
@ -87,8 +87,6 @@ public class SacrificeEffect extends OneShotEffect{
Target target = new TargetPermanent(amount, amount, newFilter, true); Target target = new TargetPermanent(amount, amount, newFilter, true);
// A spell or ability could have removed the only legal target this player
// had, if thats the case this ability should fizzle.
if (amount > 0 && target.canChoose(source.getSourceId(), player.getId(), game)) { if (amount > 0 && target.canChoose(source.getSourceId(), player.getId(), game)) {
while (!target.isChosen() && target.canChoose(player.getId(), game) && player.canRespond()) { while (!target.isChosen() && target.canChoose(player.getId(), game) && player.canRespond()) {
player.chooseTarget(Outcome.Sacrifice, target, source, game); player.chooseTarget(Outcome.Sacrifice, target, source, game);
@ -101,10 +99,8 @@ public class SacrificeEffect extends OneShotEffect{
permanent.sacrifice(source.getSourceId(), game); permanent.sacrifice(source.getSourceId(), game);
} }
} }
return true;
} }
return false; return true;
} }
public void setAmount(DynamicValue amount) { public void setAmount(DynamicValue amount) {

View file

@ -25,12 +25,11 @@
* authors and should not be interpreted as representing official policies, either expressed * authors and should not be interpreted as representing official policies, either expressed
* or implied, of BetaSteward_at_googlemail.com. * or implied, of BetaSteward_at_googlemail.com.
*/ */
package mage.abilities.effects.common; package mage.abilities.effects.common;
import mage.constants.Outcome;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.OneShotEffect;
import mage.constants.Outcome;
import mage.game.Game; import mage.game.Game;
import mage.game.permanent.Permanent; import mage.game.permanent.Permanent;
@ -54,9 +53,8 @@ public class UntapSourceEffect extends OneShotEffect {
Permanent permanent = game.getPermanent(source.getSourceId()); Permanent permanent = game.getPermanent(source.getSourceId());
if (permanent != null) { if (permanent != null) {
permanent.untap(game); permanent.untap(game);
return true;
} }
return false; return true;
} }
@Override @Override

View file

@ -123,7 +123,7 @@ public class AddCountersTargetEffect extends OneShotEffect {
return true; return true;
} }
} }
return affectedTargets > 0; return true;
} }
return false; return false;
} }

View file

@ -76,9 +76,8 @@ public class RemoveCounterTargetEffect extends OneShotEffect {
game.informPlayers("Removed " + toRemove.getCount() + ' ' + toRemove.getName() game.informPlayers("Removed " + toRemove.getCount() + ' ' + toRemove.getName()
+ " counter from " + p.getName()); + " counter from " + p.getName());
} }
return true;
}
} }
} else {
Card c = game.getCard(targetPointer.getFirst(game, source)); Card c = game.getCard(targetPointer.getFirst(game, source));
if (c != null && counter != null && c.getCounters(game).getCount(counter.getName()) >= counter.getCount()) { if (c != null && counter != null && c.getCounters(game).getCount(counter.getName()) >= counter.getCount()) {
c.removeCounters(counter.getName(), counter.getCount(), game); c.removeCounters(counter.getName(), counter.getCount(), game);
@ -87,9 +86,9 @@ public class RemoveCounterTargetEffect extends OneShotEffect {
.append(" counter from ").append(c.getName()) .append(" counter from ").append(c.getName())
.append(" (").append(c.getCounters(game).getCount(counter.getName())).append(" left)").toString()); .append(" (").append(c.getCounters(game).getCount(counter.getName())).append(" left)").toString());
} }
return true;
} }
return false; }
return true;
} }
private Counter selectCounterType(Game game, Ability source, Permanent permanent) { private Counter selectCounterType(Game game, Ability source, Permanent permanent) {

View file

@ -27,6 +27,7 @@
*/ */
package mage.abilities.keyword; package mage.abilities.keyword;
import java.util.UUID;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.SpellAbility; import mage.abilities.SpellAbility;
import mage.abilities.costs.Cost; import mage.abilities.costs.Cost;
@ -48,8 +49,6 @@ import mage.game.events.ZoneChangeEvent;
import mage.players.Player; import mage.players.Player;
import mage.target.targetpointer.FixedTarget; import mage.target.targetpointer.FixedTarget;
import java.util.UUID;
/** /**
* 702.32. Flashback * 702.32. Flashback
* *
@ -232,12 +231,10 @@ class FlashbackEffect extends OneShotEffect {
ContinuousEffect effect = new FlashbackReplacementEffect(); ContinuousEffect effect = new FlashbackReplacementEffect();
effect.setTargetPointer(new FixedTarget(source.getSourceId(), game.getState().getZoneChangeCounter(source.getSourceId()))); effect.setTargetPointer(new FixedTarget(source.getSourceId(), game.getState().getZoneChangeCounter(source.getSourceId())));
game.addEffect(effect, source); game.addEffect(effect, source);
}
return true; return true;
} }
return false;
} }
}
return false; return false;
} }

View file

@ -1,18 +1,15 @@
package mage.constants; package mage.constants;
import mage.util.SubTypeList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Set; import java.util.Set;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import mage.util.SubTypeList;
public enum SubType { public enum SubType {
//205.3k Instants and sorceries share their lists of subtypes; these subtypes are called spell types. //205.3k Instants and sorceries share their lists of subtypes; these subtypes are called spell types.
ARCANE("Arcane", SubTypeSet.SpellType, false), ARCANE("Arcane", SubTypeSet.SpellType, false),
TRAP("Trap", SubTypeSet.SpellType, false), TRAP("Trap", SubTypeSet.SpellType, false),
// 205.3i: Lands have their own unique set of subtypes; these subtypes are called land types. // 205.3i: Lands have their own unique set of subtypes; these subtypes are called land types.
// Of that list, Forest, Island, Mountain, Plains, and Swamp are the basic land types. // Of that list, Forest, Island, Mountain, Plains, and Swamp are the basic land types.
FOREST("Forest", SubTypeSet.BasicLandType, false), FOREST("Forest", SubTypeSet.BasicLandType, false),
@ -28,21 +25,19 @@ public enum SubType {
MINE("Mine", SubTypeSet.NonBasicLandType, false), MINE("Mine", SubTypeSet.NonBasicLandType, false),
POWER_PLANT("Power-Plant", SubTypeSet.NonBasicLandType, false), POWER_PLANT("Power-Plant", SubTypeSet.NonBasicLandType, false),
TOWER("Tower", SubTypeSet.NonBasicLandType, false), TOWER("Tower", SubTypeSet.NonBasicLandType, false),
// 205.3h Enchantments have their own unique set of subtypes; these subtypes are called enchantment types. // 205.3h Enchantments have their own unique set of subtypes; these subtypes are called enchantment types.
AURA("Aura", SubTypeSet.EnchantmentType, false), AURA("Aura", SubTypeSet.EnchantmentType, false),
CARTOUCHE("Cartouche", SubTypeSet.EnchantmentType, false), CARTOUCHE("Cartouche", SubTypeSet.EnchantmentType, false),
CURSE("Curse", SubTypeSet.EnchantmentType, false), CURSE("Curse", SubTypeSet.EnchantmentType, false),
SHRINE("Shrine", SubTypeSet.EnchantmentType, false), SHRINE("Shrine", SubTypeSet.EnchantmentType, false),
// 205.3g: Artifacts have their own unique set of subtypes; these subtypes are called artifact types. // 205.3g: Artifacts have their own unique set of subtypes; these subtypes are called artifact types.
CLUE("Clue", SubTypeSet.ArtifactType, false), CLUE("Clue", SubTypeSet.ArtifactType, false),
CONTRAPTION("Contraption", SubTypeSet.ArtifactType, false), CONTRAPTION("Contraption", SubTypeSet.ArtifactType, false),
EQUIPMENT("Equipment", SubTypeSet.ArtifactType, false), EQUIPMENT("Equipment", SubTypeSet.ArtifactType, false),
FORTIFICATION("Fortification", SubTypeSet.ArtifactType, false), FORTIFICATION("Fortification", SubTypeSet.ArtifactType, false),
VEHICLE("Vehicle", SubTypeSet.ArtifactType, false), VEHICLE("Vehicle", SubTypeSet.ArtifactType, false),
// 205.3m : Creatures and tribals share their lists of subtypes; these subtypes are called creature types. // 205.3m : Creatures and tribals share their lists of subtypes; these subtypes are called creature types.
// A
ADVISOR("Advisor", SubTypeSet.CreatureType, false), ADVISOR("Advisor", SubTypeSet.CreatureType, false),
AETHERBORN("Aetherborn", SubTypeSet.CreatureType, false), AETHERBORN("Aetherborn", SubTypeSet.CreatureType, false),
ALLY("Ally", SubTypeSet.CreatureType, false), ALLY("Ally", SubTypeSet.CreatureType, false),
@ -61,7 +56,7 @@ public enum SubType {
ATAT("AT-AT", SubTypeSet.CreatureType, true), ATAT("AT-AT", SubTypeSet.CreatureType, true),
AUROCHS("Aurochs", SubTypeSet.CreatureType, false), AUROCHS("Aurochs", SubTypeSet.CreatureType, false),
AVATAR("Avatar", SubTypeSet.CreatureType, false), AVATAR("Avatar", SubTypeSet.CreatureType, false),
// B
BADGER("Badger", SubTypeSet.CreatureType, false), BADGER("Badger", SubTypeSet.CreatureType, false),
BARBARIAN("Barbarian", SubTypeSet.CreatureType, false), BARBARIAN("Barbarian", SubTypeSet.CreatureType, false),
BASILISK("Basilisk", SubTypeSet.CreatureType, false), BASILISK("Basilisk", SubTypeSet.CreatureType, false),
@ -76,7 +71,7 @@ public enum SubType {
BOAR("Boar", SubTypeSet.CreatureType, false), BOAR("Boar", SubTypeSet.CreatureType, false),
BRINGER("Bringer", SubTypeSet.CreatureType, false), BRINGER("Bringer", SubTypeSet.CreatureType, false),
BRUSHWAGG("Brushwagg", SubTypeSet.CreatureType, false), BRUSHWAGG("Brushwagg", SubTypeSet.CreatureType, false),
// C
CALAMARI("Calamari", SubTypeSet.CreatureType, true), // Star Wars CALAMARI("Calamari", SubTypeSet.CreatureType, true), // Star Wars
CAMARID("Camarid", SubTypeSet.CreatureType, false), CAMARID("Camarid", SubTypeSet.CreatureType, false),
CAMEL("Camel", SubTypeSet.CreatureType, false), CAMEL("Camel", SubTypeSet.CreatureType, false),
@ -97,7 +92,7 @@ public enum SubType {
CROCODILE("Crocodile", SubTypeSet.CreatureType, false), CROCODILE("Crocodile", SubTypeSet.CreatureType, false),
CYBORG("Cyborg", SubTypeSet.CreatureType, true), // Star Wars CYBORG("Cyborg", SubTypeSet.CreatureType, true), // Star Wars
CYCLOPS("Cyclops", SubTypeSet.CreatureType, false), CYCLOPS("Cyclops", SubTypeSet.CreatureType, false),
// D
DATHOMIRIAN("Dathomirian", SubTypeSet.CreatureType, true), // Star Wars DATHOMIRIAN("Dathomirian", SubTypeSet.CreatureType, true), // Star Wars
DAUTHI("Dauthi", SubTypeSet.CreatureType, false), DAUTHI("Dauthi", SubTypeSet.CreatureType, false),
DEMON("Demon", SubTypeSet.CreatureType, false), DEMON("Demon", SubTypeSet.CreatureType, false),
@ -112,7 +107,7 @@ public enum SubType {
DROID("Droid", SubTypeSet.CreatureType, true), // Star Wars DROID("Droid", SubTypeSet.CreatureType, true), // Star Wars
DRYAD("Dryad", SubTypeSet.CreatureType, false), DRYAD("Dryad", SubTypeSet.CreatureType, false),
DWARF("Dwarf", SubTypeSet.CreatureType, false), DWARF("Dwarf", SubTypeSet.CreatureType, false),
// E
EFREET("Efreet", SubTypeSet.CreatureType, false), EFREET("Efreet", SubTypeSet.CreatureType, false),
ELDER("Elder", SubTypeSet.CreatureType, false), ELDER("Elder", SubTypeSet.CreatureType, false),
ELDRAZI("Eldrazi", SubTypeSet.CreatureType, false), ELDRAZI("Eldrazi", SubTypeSet.CreatureType, false),
@ -122,7 +117,7 @@ public enum SubType {
ELK("Elk", SubTypeSet.CreatureType, false), ELK("Elk", SubTypeSet.CreatureType, false),
EYE("Eye", SubTypeSet.CreatureType, false), EYE("Eye", SubTypeSet.CreatureType, false),
EWOK("Ewok", SubTypeSet.CreatureType, true), // Star Wars EWOK("Ewok", SubTypeSet.CreatureType, true), // Star Wars
// F
FAERIE("Faerie", SubTypeSet.CreatureType, false), FAERIE("Faerie", SubTypeSet.CreatureType, false),
FERRET("Ferret", SubTypeSet.CreatureType, false), FERRET("Ferret", SubTypeSet.CreatureType, false),
FISH("Fish", SubTypeSet.CreatureType, false), FISH("Fish", SubTypeSet.CreatureType, false),
@ -130,7 +125,7 @@ public enum SubType {
FOX("Fox", SubTypeSet.CreatureType, false), FOX("Fox", SubTypeSet.CreatureType, false),
FROG("Frog", SubTypeSet.CreatureType, false), FROG("Frog", SubTypeSet.CreatureType, false),
FUNGUS("Fungus", SubTypeSet.CreatureType, false), FUNGUS("Fungus", SubTypeSet.CreatureType, false),
// G
GAMORREAN("Gamorrean", SubTypeSet.CreatureType, true), // Star Wars GAMORREAN("Gamorrean", SubTypeSet.CreatureType, true), // Star Wars
GAND("Gand", SubTypeSet.CreatureType, true), // Star Wars GAND("Gand", SubTypeSet.CreatureType, true), // Star Wars
GARGOYLE("Gargoyle", SubTypeSet.CreatureType, false), GARGOYLE("Gargoyle", SubTypeSet.CreatureType, false),
@ -146,7 +141,7 @@ public enum SubType {
GREMLIN("Gremlin", SubTypeSet.CreatureType, false), GREMLIN("Gremlin", SubTypeSet.CreatureType, false),
GRIFFIN("Griffin", SubTypeSet.CreatureType, false), GRIFFIN("Griffin", SubTypeSet.CreatureType, false),
GUNGAN("Gungan", SubTypeSet.CreatureType, true), // Star Wars GUNGAN("Gungan", SubTypeSet.CreatureType, true), // Star Wars
// H
HAG("Hag", SubTypeSet.CreatureType, false), HAG("Hag", SubTypeSet.CreatureType, false),
HARPY("Harpy", SubTypeSet.CreatureType, false), HARPY("Harpy", SubTypeSet.CreatureType, false),
HELLION("Hellion", SubTypeSet.CreatureType, false), HELLION("Hellion", SubTypeSet.CreatureType, false),
@ -162,19 +157,19 @@ public enum SubType {
HUTT("Hutt", SubTypeSet.CreatureType, true), // Star Wars HUTT("Hutt", SubTypeSet.CreatureType, true), // Star Wars
HYDRA("Hydra", SubTypeSet.CreatureType, false), HYDRA("Hydra", SubTypeSet.CreatureType, false),
HYENA("Hyena", SubTypeSet.CreatureType, false), HYENA("Hyena", SubTypeSet.CreatureType, false),
// I
ILLUSION("Illusion", SubTypeSet.CreatureType, false), ILLUSION("Illusion", SubTypeSet.CreatureType, false),
IMP("Imp", SubTypeSet.CreatureType, false), IMP("Imp", SubTypeSet.CreatureType, false),
INCARNATION("Incarnation", SubTypeSet.CreatureType, false), INCARNATION("Incarnation", SubTypeSet.CreatureType, false),
INSECT("Insect", SubTypeSet.CreatureType, false), INSECT("Insect", SubTypeSet.CreatureType, false),
ITHORIAN("Ithorian", SubTypeSet.CreatureType, true), // Star Wars ITHORIAN("Ithorian", SubTypeSet.CreatureType, true), // Star Wars
// J
JACKAL("Jackal", SubTypeSet.CreatureType, false), JACKAL("Jackal", SubTypeSet.CreatureType, false),
JAWA("Jawa", SubTypeSet.CreatureType, true), JAWA("Jawa", SubTypeSet.CreatureType, true),
JEDI("Jedi", SubTypeSet.CreatureType, true), // Star Wars JEDI("Jedi", SubTypeSet.CreatureType, true), // Star Wars
JELLYFISH("Jellyfish", SubTypeSet.CreatureType, false), JELLYFISH("Jellyfish", SubTypeSet.CreatureType, false),
JUGGERNAUT("Juggernaut", SubTypeSet.CreatureType, false), JUGGERNAUT("Juggernaut", SubTypeSet.CreatureType, false),
// K
KALEESH("Kaleesh", SubTypeSet.CreatureType, true), // Star Wars KALEESH("Kaleesh", SubTypeSet.CreatureType, true), // Star Wars
KAVU("Kavu", SubTypeSet.CreatureType, false), KAVU("Kavu", SubTypeSet.CreatureType, false),
KELDOR("KelDor", SubTypeSet.CreatureType, true), KELDOR("KelDor", SubTypeSet.CreatureType, true),
@ -185,7 +180,7 @@ public enum SubType {
KOORIVAR("Koorivar", SubTypeSet.CreatureType, true), KOORIVAR("Koorivar", SubTypeSet.CreatureType, true),
KOR("Kor", SubTypeSet.CreatureType, false), KOR("Kor", SubTypeSet.CreatureType, false),
KRAKEN("Kraken", SubTypeSet.CreatureType, false), KRAKEN("Kraken", SubTypeSet.CreatureType, false),
// L
LAMIA("Lamia", SubTypeSet.CreatureType, false), LAMIA("Lamia", SubTypeSet.CreatureType, false),
LAMMASU("Lammasu", SubTypeSet.CreatureType, false), LAMMASU("Lammasu", SubTypeSet.CreatureType, false),
LEECH("Leech", SubTypeSet.CreatureType, false), LEECH("Leech", SubTypeSet.CreatureType, false),
@ -193,8 +188,7 @@ public enum SubType {
LHURGOYF("Lhurgoyf", SubTypeSet.CreatureType, false), LHURGOYF("Lhurgoyf", SubTypeSet.CreatureType, false),
LICID("Licid", SubTypeSet.CreatureType, false), LICID("Licid", SubTypeSet.CreatureType, false),
LIZARD("Lizard", SubTypeSet.CreatureType, false), LIZARD("Lizard", SubTypeSet.CreatureType, false),
// M
MANTELLIAN("Mantellian", SubTypeSet.CreatureType, true), // Star Wars MANTELLIAN("Mantellian", SubTypeSet.CreatureType, true), // Star Wars
MANTICORE("Manticore", SubTypeSet.CreatureType, false), MANTICORE("Manticore", SubTypeSet.CreatureType, false),
MASTICORE("Masticore", SubTypeSet.CreatureType, false), MASTICORE("Masticore", SubTypeSet.CreatureType, false),
@ -213,8 +207,7 @@ MANTELLIAN("Mantellian", SubTypeSet.CreatureType, true), // Star Wars
MUTANT("Mutant", SubTypeSet.CreatureType, false), MUTANT("Mutant", SubTypeSet.CreatureType, false),
MYR("Myr", SubTypeSet.CreatureType, false), MYR("Myr", SubTypeSet.CreatureType, false),
MYSTIC("Mystic", SubTypeSet.CreatureType, false), MYSTIC("Mystic", SubTypeSet.CreatureType, false),
// N
NAGA("Naga", SubTypeSet.CreatureType, false), NAGA("Naga", SubTypeSet.CreatureType, false),
NAUTILUS("Nautilus", SubTypeSet.CreatureType, false), NAUTILUS("Nautilus", SubTypeSet.CreatureType, false),
NAUTOLAN("Nautolan", SubTypeSet.CreatureType, true), // Star Wars NAUTOLAN("Nautolan", SubTypeSet.CreatureType, true), // Star Wars
@ -226,7 +219,7 @@ MANTELLIAN("Mantellian", SubTypeSet.CreatureType, true), // Star Wars
NOGGLE("Noggle", SubTypeSet.CreatureType, false), NOGGLE("Noggle", SubTypeSet.CreatureType, false),
NOMAD("Nomad", SubTypeSet.CreatureType, false), NOMAD("Nomad", SubTypeSet.CreatureType, false),
NYMPH("Nymph", SubTypeSet.CreatureType, false), NYMPH("Nymph", SubTypeSet.CreatureType, false),
// O
OCTOPUS("Octopus", SubTypeSet.CreatureType, false), OCTOPUS("Octopus", SubTypeSet.CreatureType, false),
OGRE("Ogre", SubTypeSet.CreatureType, false), OGRE("Ogre", SubTypeSet.CreatureType, false),
OOZE("Ooze", SubTypeSet.CreatureType, false), OOZE("Ooze", SubTypeSet.CreatureType, false),
@ -237,7 +230,7 @@ MANTELLIAN("Mantellian", SubTypeSet.CreatureType, true), // Star Wars
OUPHE("Ouphe", SubTypeSet.CreatureType, false), OUPHE("Ouphe", SubTypeSet.CreatureType, false),
OX("Ox", SubTypeSet.CreatureType, false), OX("Ox", SubTypeSet.CreatureType, false),
OYSTER("Oyster", SubTypeSet.CreatureType, false), OYSTER("Oyster", SubTypeSet.CreatureType, false),
// P
PEGASUS("Pegasus", SubTypeSet.CreatureType, false), PEGASUS("Pegasus", SubTypeSet.CreatureType, false),
PENTAVITE("Pentavite", SubTypeSet.CreatureType, false), PENTAVITE("Pentavite", SubTypeSet.CreatureType, false),
PEST("Pest", SubTypeSet.CreatureType, false), PEST("Pest", SubTypeSet.CreatureType, false),
@ -251,9 +244,9 @@ MANTELLIAN("Mantellian", SubTypeSet.CreatureType, true), // Star Wars
PRISM("Prism", SubTypeSet.CreatureType, false), PRISM("Prism", SubTypeSet.CreatureType, false),
PROCESSOR("Processor", SubTypeSet.CreatureType, false), PROCESSOR("Processor", SubTypeSet.CreatureType, false),
PUREBLOOD("Pureblood", SubTypeSet.CreatureType, true), PUREBLOOD("Pureblood", SubTypeSet.CreatureType, true),
// Q
QUARREN("Quarren", SubTypeSet.CreatureType, true), // Star Wars QUARREN("Quarren", SubTypeSet.CreatureType, true), // Star Wars
// R
RABBIT("Rabbit", SubTypeSet.CreatureType, false), RABBIT("Rabbit", SubTypeSet.CreatureType, false),
RAT("Rat", SubTypeSet.CreatureType, false), RAT("Rat", SubTypeSet.CreatureType, false),
REBEL("Rebel", SubTypeSet.CreatureType, false), REBEL("Rebel", SubTypeSet.CreatureType, false),
@ -262,8 +255,7 @@ MANTELLIAN("Mantellian", SubTypeSet.CreatureType, true), // Star Wars
RIGGER("Rigger", SubTypeSet.CreatureType, false), RIGGER("Rigger", SubTypeSet.CreatureType, false),
RODIAN("Rodian", SubTypeSet.CreatureType, true), // Star Wars RODIAN("Rodian", SubTypeSet.CreatureType, true), // Star Wars
ROGUE("Rogue", SubTypeSet.CreatureType, false), ROGUE("Rogue", SubTypeSet.CreatureType, false),
// S
SABLE("Sable", SubTypeSet.CreatureType, false), SABLE("Sable", SubTypeSet.CreatureType, false),
SALAMANDER("Salamander", SubTypeSet.CreatureType, false), SALAMANDER("Salamander", SubTypeSet.CreatureType, false),
SAMURAI("Samurai", SubTypeSet.CreatureType, false), SAMURAI("Samurai", SubTypeSet.CreatureType, false),
@ -306,7 +298,7 @@ MANTELLIAN("Mantellian", SubTypeSet.CreatureType, true), // Star Wars
SULLUSTAN("Sullustan", SubTypeSet.CreatureType, true), // Star Wars SULLUSTAN("Sullustan", SubTypeSet.CreatureType, true), // Star Wars
SURRAKAR("Surrakar", SubTypeSet.CreatureType, false), SURRAKAR("Surrakar", SubTypeSet.CreatureType, false),
SURVIVOR("Survivor", SubTypeSet.CreatureType, false), SURVIVOR("Survivor", SubTypeSet.CreatureType, false),
// T
TETRAVITE("Tetravite", SubTypeSet.CreatureType, false), TETRAVITE("Tetravite", SubTypeSet.CreatureType, false),
THALAKOS("Thalakos", SubTypeSet.CreatureType, false), THALAKOS("Thalakos", SubTypeSet.CreatureType, false),
THOPTER("Thopter", SubTypeSet.CreatureType, false), THOPTER("Thopter", SubTypeSet.CreatureType, false),
@ -316,17 +308,18 @@ MANTELLIAN("Mantellian", SubTypeSet.CreatureType, true), // Star Wars
TRISKELAVITE("Triskelavite", SubTypeSet.CreatureType, false), TRISKELAVITE("Triskelavite", SubTypeSet.CreatureType, false),
TROLL("Troll", SubTypeSet.CreatureType, false), TROLL("Troll", SubTypeSet.CreatureType, false),
TURTLE("Turtle", SubTypeSet.CreatureType, false), TURTLE("Turtle", SubTypeSet.CreatureType, false),
TROOPER("Trooper", SubTypeSet.CreatureType, true), // Star Wars TROOPER("Trooper", SubTypeSet.CreatureType, true), // Star Wars
TWILEK("Twi'lek", SubTypeSet.CreatureType, true), // Star Wars TWILEK("Twi'lek", SubTypeSet.CreatureType, true), // Star Wars
// U
UGNAUGHT("Ugnaught", SubTypeSet.CreatureType, true), UGNAUGHT("Ugnaught", SubTypeSet.CreatureType, true),
UNICORN("Unicorn", SubTypeSet.CreatureType, false), UNICORN("Unicorn", SubTypeSet.CreatureType, false),
//V
VAMPIRE("Vampire", SubTypeSet.CreatureType, false), VAMPIRE("Vampire", SubTypeSet.CreatureType, false),
VEDALKEN("Vedalken", SubTypeSet.CreatureType, false), VEDALKEN("Vedalken", SubTypeSet.CreatureType, false),
VIASHINO("Viashino", SubTypeSet.CreatureType, false), VIASHINO("Viashino", SubTypeSet.CreatureType, false),
VOLVER("Volver", SubTypeSet.CreatureType, false), VOLVER("Volver", SubTypeSet.CreatureType, false),
//W
WALL("Wall", SubTypeSet.CreatureType, false), WALL("Wall", SubTypeSet.CreatureType, false),
WARRIOR("Warrior", SubTypeSet.CreatureType, false), WARRIOR("Warrior", SubTypeSet.CreatureType, false),
WEEQUAY("Weequay", SubTypeSet.CreatureType, true), WEEQUAY("Weequay", SubTypeSet.CreatureType, true),
@ -341,13 +334,13 @@ MANTELLIAN("Mantellian", SubTypeSet.CreatureType, true), // Star Wars
WORM("Worm", SubTypeSet.CreatureType, false), WORM("Worm", SubTypeSet.CreatureType, false),
WRAITH("Wraith", SubTypeSet.CreatureType, false), WRAITH("Wraith", SubTypeSet.CreatureType, false),
WURM("Wurm", SubTypeSet.CreatureType, false), WURM("Wurm", SubTypeSet.CreatureType, false),
// Y
YETI("Yeti", SubTypeSet.CreatureType, false), YETI("Yeti", SubTypeSet.CreatureType, false),
// Z
ZABRAK("Zabrak", SubTypeSet.CreatureType, true), // Star Wars ZABRAK("Zabrak", SubTypeSet.CreatureType, true), // Star Wars
ZOMBIE("Zombie", SubTypeSet.CreatureType, false), ZOMBIE("Zombie", SubTypeSet.CreatureType, false),
ZUBERA("Zubera", SubTypeSet.CreatureType, false), ZUBERA("Zubera", SubTypeSet.CreatureType, false),
// Planeswalker
AJANI("Ajani", SubTypeSet.PlaneswalkerType, false), AJANI("Ajani", SubTypeSet.PlaneswalkerType, false),
ARLINN("Arlinn", SubTypeSet.PlaneswalkerType, false), ARLINN("Arlinn", SubTypeSet.PlaneswalkerType, false),
ASHIOK("Ashiok", SubTypeSet.PlaneswalkerType, false), ASHIOK("Ashiok", SubTypeSet.PlaneswalkerType, false),
@ -388,7 +381,7 @@ MANTELLIAN("Mantellian", SubTypeSet.CreatureType, true), // Star Wars
VENSER("Venser", SubTypeSet.PlaneswalkerType, false), VENSER("Venser", SubTypeSet.PlaneswalkerType, false),
VRASKA("Vraska", SubTypeSet.PlaneswalkerType, false), VRASKA("Vraska", SubTypeSet.PlaneswalkerType, false),
XENAGOS("Xenagos", SubTypeSet.PlaneswalkerType, false), XENAGOS("Xenagos", SubTypeSet.PlaneswalkerType, false),
YODA("Yoda", SubTypeSet.PlaneswalkerType, true); YODA("Yoda", SubTypeSet.PlaneswalkerType, true); // Star Wars
private final SubTypeSet subTypeSet; private final SubTypeSet subTypeSet;
@ -448,4 +441,3 @@ MANTELLIAN("Mantellian", SubTypeSet.CreatureType, true), // Star Wars
return landTypes; return landTypes;
} }
} }