From 2fae97be6300fcfc44826e041a7620a0cca14cb0 Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Sat, 6 Dec 2014 18:29:17 +0100 Subject: [PATCH] Some minor changes to framework. --- .../abilities/effects/ContinuousEffects.java | 18 +-- .../continious/SetCardColorTargetEffect.java | 144 ------------------ .../counter/AddCountersSourceEffect.java | 77 +++++----- Mage/src/mage/cards/repository/CardInfo.java | 2 +- .../mage/cards/repository/CardRepository.java | 2 +- .../mage/constants/AsThoughEffectType.java | 1 + 6 files changed, 51 insertions(+), 193 deletions(-) delete mode 100644 Mage/src/mage/abilities/effects/common/continious/SetCardColorTargetEffect.java diff --git a/Mage/src/mage/abilities/effects/ContinuousEffects.java b/Mage/src/mage/abilities/effects/ContinuousEffects.java index 4d2ec4f8e3..6e7273cd3b 100644 --- a/Mage/src/mage/abilities/effects/ContinuousEffects.java +++ b/Mage/src/mage/abilities/effects/ContinuousEffects.java @@ -430,17 +430,15 @@ public class ContinuousEffects implements Serializable { for (AsThoughEffect effect: asThoughEffectsList) { HashSet abilities = asThoughEffectsMap.get(type).getAbility(effect.getId()); for (Ability ability : abilities) { - //if (controllerId.equals(ability.getControllerId())) { must be checked in the applies method - if (affectedAbility == null) { - if (effect.applies(objectId, ability, controllerId, game)) { - return true; - } - } else { - if (effect.applies(objectId, affectedAbility, ability, game)) { - return true; - } + if (affectedAbility == null) { + if (effect.applies(objectId, ability, controllerId, game)) { + return true; + } + } else { + if (effect.applies(objectId, affectedAbility, ability, game)) { + return true; } - //} + } } } return false; diff --git a/Mage/src/mage/abilities/effects/common/continious/SetCardColorTargetEffect.java b/Mage/src/mage/abilities/effects/common/continious/SetCardColorTargetEffect.java deleted file mode 100644 index e083dced76..0000000000 --- a/Mage/src/mage/abilities/effects/common/continious/SetCardColorTargetEffect.java +++ /dev/null @@ -1,144 +0,0 @@ -/* - * - * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, are - * permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this list of - * conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, this list - * of conditions and the following disclaimer in the documentation and/or other materials - * provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF - * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * The views and conclusions contained in the software and documentation are those of the - * authors and should not be interpreted as representing official policies, either expressed - * or implied, of BetaSteward_at_googlemail.com. - * - */ -package mage.abilities.effects.common.continious; - -import java.util.UUID; -import mage.MageObject; -import mage.ObjectColor; -import mage.abilities.Ability; -import mage.abilities.Mode; -import mage.abilities.effects.ContinuousEffectImpl; -import mage.choices.ChoiceColor; -import mage.constants.Duration; -import mage.constants.Layer; -import mage.constants.Outcome; -import mage.constants.SubLayer; -import mage.game.Game; -import mage.game.permanent.Permanent; -import mage.game.stack.StackObject; -import mage.players.Player; - -/** - * @author LevelX - */ -public class SetCardColorTargetEffect extends ContinuousEffectImpl { - - private final ObjectColor setColor; - - /** - * Add a color choice to your ability to use this constructor - * Effect uses the color choice to set the color to apply - * - * @param duration - */ - public SetCardColorTargetEffect(Duration duration) { - this(null, duration, null); - } - public SetCardColorTargetEffect(ObjectColor setColor, Duration duration) { - this(setColor, duration, null); - } - - public SetCardColorTargetEffect(ObjectColor setColor, Duration duration, String text) { - super(duration, Layer.ColorChangingEffects_5, SubLayer.NA, Outcome.Benefit); - this.setColor = setColor; - staticText = text; - } - - public SetCardColorTargetEffect(final SetCardColorTargetEffect effect) { - super(effect); - this.setColor = effect.setColor; - } - - @Override - public boolean apply(Game game, Ability source) { - Player controller = game.getPlayer(source.getControllerId()); - if (controller == null) { - return false; - } - boolean result = false; - ObjectColor objectColor; - if (setColor == null) { - ChoiceColor choice = new ChoiceColor(); - while (!choice.isChosen()) { - controller.choose(Outcome.PutManaInPool, choice, game); - if (!controller.isInGame()) { - return false; - } - } - if (choice.getColor() != null) { - objectColor = choice.getColor(); - } else { - return false; - } - game.informPlayers(controller.getName() + " has chosen the color: " + objectColor.toString()); - } else { - objectColor = this.setColor; - } - if (objectColor != null) { - for (UUID targetId :targetPointer.getTargets(game, source)) { - MageObject o = game.getObject(targetId); - if (o != null) { - if (o instanceof Permanent || o instanceof StackObject) { - o.getColor().setColor(objectColor); - result = true; - } - } - } - } - if (!result) { - if (this.getDuration().equals(Duration.Custom)) { - this.discard(); - } - } - return result; - } - - @Override - public SetCardColorTargetEffect copy() { - return new SetCardColorTargetEffect(this); - } - - @Override - public String getText(Mode mode) { - if (staticText != null) { - return staticText; - } - StringBuilder sb = new StringBuilder(); - sb.append("Target ").append(mode.getTargets().get(0).getTargetName()); - sb.append(" becomes "); - if (setColor == null) { - sb.append("the color of your choice"); - } else { - sb.append(setColor.getDescription()); - } - sb.append(" ").append(duration.toString()); - return sb.toString(); - } -} diff --git a/Mage/src/mage/abilities/effects/common/counter/AddCountersSourceEffect.java b/Mage/src/mage/abilities/effects/common/counter/AddCountersSourceEffect.java index cc04782471..7f9346e426 100644 --- a/Mage/src/mage/abilities/effects/common/counter/AddCountersSourceEffect.java +++ b/Mage/src/mage/abilities/effects/common/counter/AddCountersSourceEffect.java @@ -90,48 +90,51 @@ public class AddCountersSourceEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - if (putOnCard) { - Card card = game.getCard(source.getSourceId()); - if (card != null) { - if (counter != null) { - Counter newCounter = counter.copy(); - int countersToAdd = amount.calculate(game, source, this); - if (countersToAdd > 0 && newCounter.getCount() == 1) { - countersToAdd--; + Player controller = game.getPlayer(source.getControllerId()); + if (controller != null) { + if (putOnCard) { + Card card = game.getCard(source.getSourceId()); + if (card != null) { + if (counter != null) { + Counter newCounter = counter.copy(); + int countersToAdd = amount.calculate(game, source, this); + if (countersToAdd > 0 && newCounter.getCount() == 1) { + countersToAdd--; + } + newCounter.add(countersToAdd); + card.addCounters(newCounter, game); + if (informPlayers) { + Player player = game.getPlayer(source.getControllerId()); + if (player != null) { + game.informPlayers(new StringBuilder(player.getName()).append(" puts ").append(newCounter.getCount()).append(" ").append(newCounter.getName().toLowerCase()).append(" counter on ").append(card.getLogName()).toString()); + } + } } - newCounter.add(countersToAdd); - card.addCounters(newCounter, game); - if (informPlayers) { - Player player = game.getPlayer(source.getControllerId()); - if (player != null) { - game.informPlayers(new StringBuilder(player.getName()).append(" puts ").append(newCounter.getCount()).append(" ").append(newCounter.getName().toLowerCase()).append(" counter on ").append(card.getLogName()).toString()); + return true; + } + } else { + Permanent permanent = game.getPermanent(source.getSourceId()); + if (permanent != null) { + if (counter != null) { + Counter newCounter = counter.copy(); + int countersToAdd = amount.calculate(game, source, this); + if (countersToAdd > 0 && newCounter.getCount() == 1) { + countersToAdd--; + } + newCounter.add(countersToAdd); + int before = permanent.getCounters().getCount(newCounter.getName()); + permanent.addCounters(newCounter, game); + int amountAdded = permanent.getCounters().getCount(newCounter.getName()) - before; + if (informPlayers) { + Player player = game.getPlayer(source.getControllerId()); + if (player != null) { + game.informPlayers(player.getName()+" puts "+amountAdded+" "+newCounter.getName().toLowerCase()+" counter on "+permanent.getLogName()); + } } } } - return true; - } - } else { - Permanent permanent = game.getPermanent(source.getSourceId()); - if (permanent != null) { - if (counter != null) { - Counter newCounter = counter.copy(); - int countersToAdd = amount.calculate(game, source, this); - if (countersToAdd > 0 && newCounter.getCount() == 1) { - countersToAdd--; - } - newCounter.add(countersToAdd); - int before = permanent.getCounters().getCount(newCounter.getName()); - permanent.addCounters(newCounter, game); - int amountAdded = permanent.getCounters().getCount(newCounter.getName()) - before; - if (informPlayers) { - Player player = game.getPlayer(source.getControllerId()); - if (player != null) { - game.informPlayers(player.getName()+" puts "+amountAdded+" "+newCounter.getName().toLowerCase()+" counter on "+permanent.getLogName()); - } - } - } - return true; } + return true; } return false; } diff --git a/Mage/src/mage/cards/repository/CardInfo.java b/Mage/src/mage/cards/repository/CardInfo.java index 9c935de7b1..4b1c4905f1 100644 --- a/Mage/src/mage/cards/repository/CardInfo.java +++ b/Mage/src/mage/cards/repository/CardInfo.java @@ -63,7 +63,7 @@ public class CardInfo { protected int cardNumber; @DatabaseField(indexName = "setCode_cardNumber_index") protected String setCode; - @DatabaseField(unique = true) + @DatabaseField(unique = true, indexName = "className_index") protected String className; @DatabaseField protected String power; diff --git a/Mage/src/mage/cards/repository/CardRepository.java b/Mage/src/mage/cards/repository/CardRepository.java index f7d858f76b..7d6c1e5952 100644 --- a/Mage/src/mage/cards/repository/CardRepository.java +++ b/Mage/src/mage/cards/repository/CardRepository.java @@ -56,7 +56,7 @@ public enum CardRepository { private static final String JDBC_URL = "jdbc:h2:file:./db/cards.h2;AUTO_SERVER=TRUE"; private static final String VERSION_ENTITY_NAME = "card"; - private static final long CARD_DB_VERSION = 34; + private static final long CARD_DB_VERSION = 35; private final Random random = new Random(); private Dao cardDao; diff --git a/Mage/src/mage/constants/AsThoughEffectType.java b/Mage/src/mage/constants/AsThoughEffectType.java index 218d416b43..b7fb0738aa 100644 --- a/Mage/src/mage/constants/AsThoughEffectType.java +++ b/Mage/src/mage/constants/AsThoughEffectType.java @@ -12,6 +12,7 @@ public enum AsThoughEffectType { BE_BLOCKED, PLAY_FROM_NON_HAND_ZONE, CAST_AS_INSTANT, + ACTIVATE_AS_INSTANT, DAMAGE, HEXPROOF, PAY,