diff --git a/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/TinyLeaders.java b/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/TinyLeaders.java index 686eb4cb90..d425a8bf31 100644 --- a/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/TinyLeaders.java +++ b/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/TinyLeaders.java @@ -188,7 +188,7 @@ public class TinyLeaders extends DeckValidator { valid = false; } } else { - invalid.put("Commander", "Sideboard must contain only the commander"); + invalid.put("Commander", "Sideboard must contain only the commander and a maximum of 10 sideboard cards"); valid = false; } diff --git a/Mage.Sets/src/mage/sets/futuresight/YixlidJailer.java b/Mage.Sets/src/mage/sets/futuresight/YixlidJailer.java index 44606a0c3b..a758f4abe9 100644 --- a/Mage.Sets/src/mage/sets/futuresight/YixlidJailer.java +++ b/Mage.Sets/src/mage/sets/futuresight/YixlidJailer.java @@ -102,6 +102,7 @@ class YixlidJailerEffect extends ContinuousEffectImpl { for (Card card : player.getGraveyard().getCards(game)) { if (card != null) { card.getAbilities().clear(); // Will the abilities ever come back???? + // TODO: Fix that (LevelX2) // game.getContinuousEffects().removeGainedEffectsForSource(card.getId()); // game.getState().resetTriggersForSourceId(card.getId()); Abilities abilities = game.getState().getAllOtherAbilities(card.getId()); diff --git a/Mage.Sets/src/mage/sets/magic2010/TrumpetBlast.java b/Mage.Sets/src/mage/sets/magic2010/TrumpetBlast.java index 48dacad68c..6ffffa8849 100644 --- a/Mage.Sets/src/mage/sets/magic2010/TrumpetBlast.java +++ b/Mage.Sets/src/mage/sets/magic2010/TrumpetBlast.java @@ -28,11 +28,11 @@ package mage.sets.magic2010; import java.util.UUID; +import mage.abilities.effects.common.continious.BoostAllEffect; +import mage.cards.CardImpl; import mage.constants.CardType; import mage.constants.Duration; import mage.constants.Rarity; -import mage.abilities.effects.common.continious.BoostAllEffect; -import mage.cards.CardImpl; import mage.filter.common.FilterAttackingCreature; /** @@ -47,8 +47,7 @@ public class TrumpetBlast extends CardImpl { super(ownerId, 160, "Trumpet Blast", Rarity.COMMON, new CardType[]{CardType.INSTANT}, "{2}{R}"); this.expansionSetCode = "M10"; - this.color.setRed(true); - + // Attacking creatures get +2/+0 until end of turn. this.getSpellAbility().addEffect(new BoostAllEffect(2, 0, Duration.EndOfTurn, filter, false)); } diff --git a/Mage.Sets/src/mage/sets/shadowmoor/DemigodOfRevenge.java b/Mage.Sets/src/mage/sets/shadowmoor/DemigodOfRevenge.java index 64790ffdd9..6a6e497793 100644 --- a/Mage.Sets/src/mage/sets/shadowmoor/DemigodOfRevenge.java +++ b/Mage.Sets/src/mage/sets/shadowmoor/DemigodOfRevenge.java @@ -106,7 +106,7 @@ class DemigodOfRevengeTriggeredAbility extends TriggeredAbilityImpl { @Override public String getRule() { - return "When you cast Demigod of Revenge, " + super.getRule(); + return "When you cast {this}, " + super.getRule(); } } @@ -133,9 +133,9 @@ class DemigodOfRevengeReturnEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - Player player = game.getPlayer(source.getControllerId()); - if (player != null) { - for (Card creature : player.getGraveyard().getCards(filter, game)) { + Player controller = game.getPlayer(source.getControllerId()); + if (controller != null) { + for (Card creature : controller.getGraveyard().getCards(filter, game)) { creature.putOntoBattlefield(game, Zone.GRAVEYARD, source.getSourceId(), source.getControllerId()); } return true; diff --git a/Mage.Sets/src/mage/sets/worldwake/CreepingTarPit.java b/Mage.Sets/src/mage/sets/worldwake/CreepingTarPit.java index 34d1a15c0f..f07ec74d0f 100644 --- a/Mage.Sets/src/mage/sets/worldwake/CreepingTarPit.java +++ b/Mage.Sets/src/mage/sets/worldwake/CreepingTarPit.java @@ -53,9 +53,15 @@ public class CreepingTarPit extends CardImpl { public CreepingTarPit (UUID ownerId) { super(ownerId, 134, "Creeping Tar Pit", Rarity.RARE, new CardType[]{CardType.LAND}, null); this.expansionSetCode = "WWK"; + + // Creeping Tar Pit enters the battlefield tapped. this.addAbility(new EntersBattlefieldTappedAbility()); + + // {T}: Add {U} or {B} to your mana pool. this.addAbility(new BlueManaAbility()); this.addAbility(new BlackManaAbility()); + + // {1}{U}{B}: Until end of turn, Creeping Tar Pit becomes a 3/2 blue and black Elemental creature and is unblockable. It's still a land. this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BecomesCreatureSourceEffect(new CreepingTarPitToken(), "land", Duration.EndOfTurn), new ManaCostsImpl("{1}{U}{B}"))); } diff --git a/Mage/src/mage/abilities/AbilitiesImpl.java b/Mage/src/mage/abilities/AbilitiesImpl.java index 3d15dc79c6..daca919b29 100644 --- a/Mage/src/mage/abilities/AbilitiesImpl.java +++ b/Mage/src/mage/abilities/AbilitiesImpl.java @@ -35,7 +35,6 @@ import java.util.List; import java.util.UUID; import mage.abilities.common.ZoneChangeTriggeredAbility; import mage.abilities.costs.AlternativeCost; -import mage.abilities.costs.AlternativeSourceCosts; import mage.abilities.costs.Cost; import mage.abilities.keyword.ProtectionAbility; import mage.abilities.mana.ManaAbility; @@ -300,6 +299,16 @@ public class AbilitiesImpl<T extends Ability> extends ArrayList<T> implements Ab return false; } + @Override + public boolean containsClass(Class classObject) { + for (T ability: this) { + if (ability.getClass().equals(classObject)) { + return true; + } + } + return false; + } + @Override public T get(UUID abilityId) { for (T ability: this) { diff --git a/Mage/src/mage/cards/repository/CardRepository.java b/Mage/src/mage/cards/repository/CardRepository.java index 2d341c4cdc..ea44f795a1 100644 --- a/Mage/src/mage/cards/repository/CardRepository.java +++ b/Mage/src/mage/cards/repository/CardRepository.java @@ -60,7 +60,7 @@ public enum CardRepository { // raise this if db structure was changed private static final long CARD_DB_VERSION = 36; // raise this if new cards were added to the server - private static final long CARD_CONTENT_VERSION = 4; + private static final long CARD_CONTENT_VERSION = 5; private final Random random = new Random(); private Dao<CardInfo, Object> cardDao;